feat(appearance): add SiteName to Appearance and ChangeAppearanceOptions
What does this MR do?
GitLab returns a site_name key from both GET /application/appearance and PUT /application/appearance, and Appearance does not carry it, so the value is dropped on decode.
The key comes from lib/api/entities/appearance.rb, where expose :site_name sits on line 44. The exposure carries no condition, so every response from either endpoint has the key, on every tier and every offering. The Application appearance API documentation shows it in the example responses of both endpoints.
The same page lists site_name as a string attribute of the update endpoint ("Appends a site name after the page title."), and lib/api/appearance.rb declares it as optional :site_name, type: String in the PUT params, so I added it to ChangeAppearanceOptions as well.
I added SiteName string to Appearance and SiteName *string to ChangeAppearanceOptions, placing both after EmailHeaderAndFooterEnabled to keep the documented field order.
I found this while building gitlab-mcp-server, an MCP server that exposes GitLab through this SDK.
Is this a breaking change?
No. Both changes add a field, one to a response struct and one to an options struct, so every existing caller still compiles and behaves exactly as before.
How was this tested?
I added site_name to the JSON fixtures of TestGetAppearance and TestChangeAppearance, asserted the decoded value in both want structs, and set the new option in the ChangeAppearanceOptions literal. Both tests now fail if the field is missing or its tag is wrong: I checked that by pointing the tag at a key the fixture does not contain, which makes each test report SiteName as the only difference.
Related to #2300