Clarify the lifecycle of the API
This is an epic to clarify the lifecycle of the API.
Some initial thoughts from `@g.hickman`'s lifecycle point https://gitlab.com/groups/gitlab-org/-/epics/7667#note_1076458175:
* Planning / Developing the API
* **Consistency and quality** https://gitlab.com/groups/gitlab-org/-/epics/9952:
* Documentation. https://gitlab.com/gitlab-org/gitlab/-/issues/373775
* Enforced with cops, helpers, and validating tools. https://gitlab.com/gitlab-org/gitlab/-/issues/346018
* API changes should be reviewed by experts. https://gitlab.com/gitlab-org/gitlab/-/issues/393119
* Testing the API
* **Performance**:
* Processes, docs or tools to test the performance of endpoints (catch N+1 problems, minimise number of queries and overfetching).
* **Security**:
* Processes, docs or tools to test the security of endpoints. https://gitlab.com/gitlab-org/gitlab/-/issues/356225 / https://gitlab.com/groups/gitlab-org/-/epics/8355 - neither are in this epic
* Deploying the API
* **Multi-version compatibility** https://gitlab.com/gitlab-org/gitlab/-/issues/352455
* Retiring the API
* **Customer experience of deprecations and management of breaking changes** https://gitlab.com/groups/gitlab-org/-/epics/8865 / https://gitlab.com/groups/gitlab-org/-/epics/7155
* Visibility of deprecations. https://gitlab.com/gitlab-org/gitlab/-/issues/353008 / https://gitlab.com/gitlab-org/gitlab/-/issues/353642
* Management of breaking changes.
* **Versioning**
* Introduce REST versioning for managing change https://gitlab.com/gitlab-org/gitlab/-/issues/387485
epic