Draft: Guidelines for how to handle REST API v4 changes if entire feature behind endpoint is removed in major GitLab milestone
What does this MR do?
Existing policy
We have a breaking change policy for our REST API, it contains a section on how to maintain backwards-compatibility in v4 with feature removals.
The guidelines work well when only certain parts of an endpoint response are affected by a feature removal:
- Return a sensible static value from a field, or an empty response (for example,
nullor[]).- Turn an argument into a no-op by continuing to accept the argument but having it no longer be operational.
What does a customer want if an endpoint existed for a feature, and the feature is being removed?
The guidelines don't yet handle well what happens when an endpoint existed entirely to serve a feature, and that feature is being removed.
In that situation, the guidelines would have us either:
- Remove the feature but have the endpoint continue to respond with 200as if successful and return dummy fields in its response.
- Not remove the feature due to its REST API v4 endpoint support.
The first option does not serve our customers well in that, although interactions with the endpoint do not break, if the entire endpoint is a no-op an integration should be alerted to that fact.
The second option may not serve our customers well if the feature removal was for their benefit, but perhaps this is our preference. If this is the case, then we should document this as being how an option for how to handle the situation.
This MR proposes we can return a 410 (Gone) status and empty response body from the endpoint.
Do we need to address this now?
We have a breaking change currently scheduled for REST API v4 in %18.0 https://docs.gitlab.com/update/deprecations/#support-for-rest-api-endpoints-that-reset-runner-registration-tokens that proposes to return a 410 for an endpoint for a removed feature - this is currently not allowed according to our guidelines.
It prompted this MR. If we don't allow this, we would need to provide grouprunner an alternative solution.
Related issues
Author's checklist
- 
Optional. Consider taking the GitLab Technical Writing Fundamentals course. 
- 
Follow the: 
- 
If you're adding a new page, add the product availability details under the H1 topic title. 
- 
If you are a GitLab team member, request a review based on: - The documentation page's metadata.
- The associated Technical Writer.
 
If you are a GitLab team member and only adding documentation, do not add any of the following labels:
- ~"frontend"
- ~"backend"
- ~"type::bug"
- ~"database"
These labels cause the MR to be added to code verification QA issues.
Reviewer's checklist
Documentation-related MRs should be reviewed by a Technical Writer for a non-blocking review, based on Documentation Guidelines and the Style Guide.
If you aren't sure which tech writer to ask, use roulette or ask in the #docs Slack channel.
- 
If the content requires it, ensure the information is reviewed by a subject matter expert. 
- Technical writer review items:
- 
Ensure docs metadata is present and up-to-date. 
- 
Ensure the appropriate labels are added to this MR. 
- 
Ensure a release milestone is set. 
- If relevant to this MR, ensure content topic type principles are in use, including:
- 
The headings should be something you'd do a Google search for. Instead of Default behavior, say something likeDefault behavior when you close an issue.
- 
The headings (other than the page title) should be active. Instead of Configuring GDK, say something likeConfigure GDK.
- 
Any task steps should be written as a numbered list. 
- If the content still needs to be edited for topic types, you can create a follow-up issue with the docs-technical-debt label.
 
- 
 
- 
- 
Review by assigned maintainer, who can always request/require the reviews above. Maintainer's review can occur before or after a technical writer review.