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