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

Edited by José M. Requena Plens

Merge request reports

Loading
Loading