feat(topics): add OrganizationID to the Topic struct
What does this MR do?
Topic did not carry the organization_id key that GitLab sends with every topic, so the value was dropped on decode.
API::Entities::Projects::Topic exposes exactly seven keys: id, name, title, description, total_projects_count, organization_id and avatar_url. The exposure is on line 12 of lib/api/entities/projects/topic.rb and carries no condition, so every topic in every response has the key. The topics API documentation shows it in each example response.
I added OrganizationID int64 between TotalProjectsCount and AvatarURL, which is the order the entity and the documentation use. int64 is what this package already uses for GitLab object ids, including Group.OrganizationID.
I found this while building gitlab-mcp-server, an MCP server that exposes GitLab through this SDK, by comparing this package's structs against a record of what each Grape entity exposes, taken from a booted gitlab/gitlab-ee:latest running GitLab 19.3.1-ee.
Is this a breaking change?
No. This adds one field to a response struct, so every existing caller still compiles and behaves exactly as before.
How was this tested?
The four existing topics tests now carry organization_id in their JSON fixtures and assert the decoded field, so ListTopics, GetTopic, CreateTopic and UpdateTopic all cover it. I checked that they fail without the struct change: against the struct as it was they do not compile, and with the json tag pointed at a different key they compile and fail on the decoded value.
Related to #2300