DevEx: API Platform
This epic is the SSOT for ongoing and planned API Platform group work. Please find below the work that is currently in-progress. ## Hours Worked | Epic | Category | DRI | Total Hours | |------|----------|-----|-------------| | [API Platform - Business As Usual](https://gitlab.com/groups/gitlab-org/quality/-/epics/231) | ~"infra-category::KTLO" | @mwoolf | 0.0 | | [API - Security bug fixes](https://gitlab.com/groups/gitlab-org/quality/-/epics/260) | ~"infra-category::Tech Debt" | @pjphillips | 19.0 <!-- discussion:45df6f72d86d43de001e9fdf80f5bcfce461630a --> | | [Prevent REST Entity Exposure Growth](https://gitlab.com/groups/gitlab-org/-/epics/20829) | ~"infra-category::Internal Innovation" | @abignotti | 12.0 <!-- discussion:64eeccebbb1c4f34a1e8f4c6fb3677652de89b58 --> | | [OpenAPI Annotations - REST Endpoint Lifecycle](https://gitlab.com/groups/gitlab-org/quality/-/epics/316) | ~"infra-category::Customer Innovation" | @mwoolf | 14.0 <!-- discussion:733ffd99fc71bca16856b1bc75113d92b83d9449 --> | | [Deploy interactive documentation for OpenAPI v3.0 specification](https://gitlab.com/groups/gitlab-org/quality/-/epics/261) | ~"infra-category::Customer Innovation" | @cfeick | 20.0 <!-- discussion:f545290dd71905f2222d52711a0863b1c2e547bf --> | | [OpenAPI 3.0 Spec Bug Fixes/Polish required before Docs Launch](https://gitlab.com/groups/gitlab-org/quality/-/epics/285) | ~"infra-category::Tech Debt" | @abignotti @mwoolf @vwolanyk | 24.0 <!-- discussion:4da4b86526d692db3666b14c608cf78ee1ce6714 --> | | [Support all Grape keywords](https://gitlab.com/groups/gitlab-org/quality/-/epics/321) | ~"infra-category::Internal Innovation" | @abignotti @vwolanyk | 38.0 <!-- discussion:0841697cfb1b11931776ba6d5489a97a10bb7bae --> | ## Project Work ### :hourglass: Work In Progress These epics are currently in progress | **Topic** | **Start Date** | **Target End Date** | **Summary** | |-----------|----------------|---------------------|-------------| | [API Platform - Business As Usual](https://gitlab.com/groups/gitlab-org/quality/-/epics/231) <br/> @mwoolf (+0 participants) <br/> ~"group::api platform" | 2025-08-04 | 2026-06-05 | **2026-03-05**: <br>No time spent on BAU this week.<br><br>:clock1: **total hours spent this week by all contributors**: 0<br><br>:tada: **achievements**:<br><br>-<br><br>:issue-blocked: **blockers**:<br><br>-<br><br>:arrow_forward: **next**:<br><br>-<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/231#note_3132931665_<br><!-- STATUS NOTE END --><br> | | [API - Security bug fixes](https://gitlab.com/groups/gitlab-org/quality/-/epics/260) <br/> @pjphillips (+0 participants) <br/> ~"group::api platform" | 2025-09-01 | 2026-07-01 | **2026-03-05**: <br>:clock1: **total hours spent this week by all contributors**: 19h<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/260#note_3132931729_<br><!-- STATUS NOTE END --><br><br/><br/>**Nested Epics: 1**<br/><br/>• https://gitlab.com/groups/gitlab-org/quality/-/epics/314+ <br/> | | [Prevent REST Entity Exposure Growth](https://gitlab.com/groups/gitlab-org/-/epics/20829) <br/> @abignotti (+0 participants) <br/> ~"group::api platform" | 2026-03-03 | 2026-03-27 | **2026-03-05**: <br>:clock1: **total hours spent this week by all contributors**: 12<br><br>:tada: **achievements**:<br><br>* Analyzed how many endpoints are affected by all REST API entities, and identified the high-impact ones. `UserBasic` for example affects 212 endpoints, and there are 41 entities affecting >= 15 endpoints. For more info: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/225538<br>* Opened a MR that adds a RuboCop linter to trigger offenses when fields are added to those high-impact entities<br><br>:issue-blocked: **blockers**:<br><br>*<br><br>:arrow_forward: **next**:<br><br>* Receive feedback on the analysis from the rest of the team, merge the open MR, update the relevant documentation<br><br>_Copied from https://gitlab.com/groups/gitlab-org/-/epics/20829#note_3134859395_<br><!-- STATUS NOTE END --><br> | | [OpenAPI Annotations - REST Endpoint Lifecycle](https://gitlab.com/groups/gitlab-org/quality/-/epics/316) <br/> @mwoolf (+0 participants) <br/> ~"group::api platform" | | 2026-03-19 | **2026-03-05**: <br>Initial progress has begun on this epic with the OpenAPI conversion logic already merged.<br><br>:clock1: **total hours spent this week by all contributors**: 14<br><br>:tada: **achievements**:<br><br>- [Added support](https://gitlab.com/gitlab-org/gitlab/-/issues/587171) for API lifecycle declarations on REST API endpoints.<br>- Started on linter to enforce API lifecycle values (`experiment`, `beta`, or `general_availability`).<br><br>:issue-blocked: **blockers**:<br><br>- Started a discussion about whether we _assume_ GA for non-annotated endpoints which will block https://gitlab.com/gitlab-org/gitlab/-/issues/591897 until decided.<br><br>:arrow_forward: **next**:<br><br>- Start work on frontend components to display lifecycle, and consider ways to improve developer experience to ensure all new endpoints have a lifecycle defined.<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/316#note_3132931810_<br><!-- STATUS NOTE END --><br> | | [Deploy interactive documentation for OpenAPI v3.0 specification](https://gitlab.com/groups/gitlab-org/quality/-/epics/261) <br/> @cfeick (+0 participants) <br/> ~"group::api platform" | 2025-11-15 | 2026-03-11 | **2026-03-05**: <br>:clock1: **total hours spent this week by all contributors**: 20<br><br>:tada: **achievements**:<br><br>- With the [initial deployment](https://api-docs-a0ae81.gitlab.io/) of the API Docs [project](https://gitlab.com/gitlab-com/gl-infra/api-docs) completed, we started engagement with the Branding team on design direction and finalized remaining discussion points with the Technical Writing team on scope<br>- This epic originally started as tool selection and prototyping, so description and issues will be cleaned up as initial foundation has been successfully laid down<br><br>:issue-blocked: **blockers**:<br><br>- N/A<br><br>:arrow_forward: **next**:<br><br>- Create new epic for production readiness<br>- Begin remaining launch work based on branding feedback<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/261#note_3132931897_<br><!-- STATUS NOTE END --><br> | | [OpenAPI 3.0 Spec Bug Fixes/Polish required before Docs Launch](https://gitlab.com/groups/gitlab-org/quality/-/epics/285) <br/> @abignotti @mwoolf @vwolanyk (+1 participants) <br/> ~"group::api platform" | 2025-11-19 | 2026-03-05 | **2026-03-05**: <br>Focused on [validating the OpenAPI 3.0 specification](https://gitlab.com/gitlab-org/gitlab/-/work_items/591007) this week.<br><br>:clock1: **total hours spent this week by all contributors**: 24<br><br>:tada: **achievements**:<br><br>* Fixed all validation issues in the OpenAPI 3.0 specification, now the specification is valid according to Swagger CLI (the validator used for the OpenAPI 2.0 specification)!<br>* Since [Swagger CLI has been deprecated](https://github.com/APIDevTools/swagger-cli#:~:text=%E2%9A%A0%EF%B8%8F,Won%27t%20Hate.), we [investigated other tooling to validate the OpenAPI 3.0 specification](https://gitlab.com/gitlab-org/gitlab/-/issues/591007#note_3131112870) and settled for Redocly CLI<br>* We decided not to validate in `gitlab-org/gitlab`, since it could be a non-actionable issue for devs making changes that inadvertently break the OpenAPI 3.0 specification validation (more info [here](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/225252#note_3125408195)). Instead, we'll validate in [`gitlab-com/gl-infra/api-docs`](https://gitlab.com/gitlab-com/gl-infra/api-docs), the project that renders the interactive documentation for OpenAPI v3.0 specification<br><br>:issue-blocked: **blockers**:<br><br>*<br><br>:arrow_forward: **next**:<br><br>* Fix the validation issues that Redocly CLI finds (this tool is stricter than Swagger CLI, which is why we still have validation issues after having fixed all the ones Swagger CLI was flagging)<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/285#note_3132931967_<br><!-- STATUS NOTE END --><br> | | [Support all Grape keywords](https://gitlab.com/groups/gitlab-org/quality/-/epics/321) <br/> @abignotti @vwolanyk (+0 participants) <br/> ~"group::api platform" | 2026-01-10 | 2026-03-31 | **2026-03-05**: <br><br>:clock1: **total hours spent this week by all contributors**: 17 hours<br><br>:tada: **achievements**:<br><br>- closed out gitlab-org/gitlab#587241<br>- gitlab-org/gitlab#586866 should be merged by EOW<br>- a few issues were assigned for learning purposes to mentees<br><br>:issue-blocked: **blockers**:<br><br>- security issues have been prioritized slowing some of the work on this epic, though there are no critical blockers to the release of the openAPI 3.0 docs<br><br>:arrow_forward: **next**:<br><br>- Continue work on the last of the issues in this epic<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/321#note_3132932048_<br><!-- STATUS NOTE END --><br> | ### :stop_button: Triage Epics that are currently being triaged | **Topic** | **Summary** | |-----------|-------------| | [Establish API endpoint lifecycle policies](https://gitlab.com/groups/gitlab-org/quality/-/epics/269) <br/> ~"group::api platform" | | | [Enable API-First Development Through Enhanced Training and Documentation](https://gitlab.com/groups/gitlab-org/quality/-/epics/270) <br/> ~"group::api platform" | | | [Make OpenAPI 3.0 REST SSoT](https://gitlab.com/groups/gitlab-org/quality/-/epics/287) <br/> ~"group::api platform" | | ### :white_check_mark: Completed Work Items that have been completed <details> | **Topic** | **Started** | **Ended** | **Summary** | |-----------| ------------| ----------| ------------ | | [Create API team roadmap](https://gitlab.com/groups/gitlab-org/quality/-/epics/203) <br/> ~"group::api platform" | 2025-08-18 | 2025-09-24 | **2025-09-17**: <br>Max and Chance presented the team and our roadmap at the Engineering All Hands, so I think we can consider this epic fully complete :tada:<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/203#note_2756017387_<br><!-- STATUS NOTE END --><br> | | [REST API Style Enforcement for the benefit of OpenAPI enforcement](https://gitlab.com/groups/gitlab-org/quality/-/epics/233) <br/> ~"group::api platform" | 2025-09-13 | 2026-01-09 | **2026-01-07**: <br>:clock1: **total hours spent this week by all contributors**: 0<br><br>:tada: **achievements**:<br><br>* See [closing statement](https://gitlab.com/groups/gitlab-org/quality/-/epics/233#note_2984959726)<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/233#note_2987487672_<br><!-- STATUS NOTE END --><br> | | [Implement OpenAPI 3.0 Spec Generation](https://gitlab.com/groups/gitlab-org/quality/-/epics/232) <br/> ~"group::api platform" | 2025-10-11 | 2025-11-21 | **2025-11-20**: <br>:tada: **achievements**:<br><br>This Epic can be closed, please see the [closing statement](https://gitlab.com/groups/gitlab-org/quality/-/epics/232#closing-statement)<br><br><!--STATUS NOTE END--><br> | | [GraphQL Metadata Enforcement Initiative](https://gitlab.com/groups/gitlab-org/quality/-/epics/243) <br/> ~"group::api platform" | 2026-01-06 | 2026-01-26 | **2026-01-21**: <br>:clock1: **total hours spent this week by all contributors**: 18<br><br>:tada: **achievements**:<br><br>- @mwoolf wrote an uncharacteristically large amount of JavaScript this week. ([MR](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/218657))<br>- Once this MR is merged, we can close this epic and allow feature teams to backfill their own feature categories.<br>- Filled in feature categories for the _most_ popular GraphQL queries.<br>- Announced changes to engineering week-in-review.<br><br>:issue-blocked: **blockers**:<br><br>- None.<br><br>:arrow_forward: **next**:<br><br>- @mwoolf responding to frontend maintainer comments on the above MR. Merge it. Close the epic :tada:<br><br>Update 2026-01-22:<br><br>Engineering work nearing a close. New linting rules are enforced in the GitLab monolith and announcements across engineering have been very well received.<br><br> | | [OpenAPI 3.0 Specification Generation and Validation](https://gitlab.com/groups/gitlab-org/quality/-/epics/284) <br/> ~"group::api platform" | 2026-01-12 | 2026-02-06 | **2026-02-04**: <br>:clock1: **total hours spent this week by all contributors**: 2<br><br>:tada: **achievements**:<br><br>* Completed the task! Added automated tooling (rake tasks ran in local linters and in CI jobs) in the GitLab project to trigger the generation and validation of the OpenAPI 3.0 specification<br><br>:issue-blocked: **blockers**:<br><br>*<br><br>:arrow_forward: **next**:<br><br>* Epic can be closed by our Grand Reviewers!<br><br>_Copied from https://gitlab.com/groups/gitlab-org/quality/-/epics/284#note_3056319803_<br><br><!--STATUS NOTE END--><br> | </details> ### :rotating_light: Epics that need attention These linked epics are not in the correct state or missing a workflow label <details> | **Topic** | **Links** | **Reason** | |-----------|-----------|-------------| | [OpenAPI 3](https://gitlab.com/groups/gitlab-org/quality/-/epics/218) <br/> (+0) <br/> group::api platform | Labeling problem, epic has no workflow label | | [API Platform tooling survey - FY26Q1](https://gitlab.com/groups/gitlab-org/quality/-/epics/352) <br/> (+0) <br/> | Labeling problem, epic has no workflow label | </details>
epic