Deprecation Note: Enforce Maximum Page Limit to Unauthenticated Projects API Requests
### Deprecation Summary To maintain platform stability and ensure optimal performance for all our customers, we're implementing a maximum page limit on unauthenticated Projects API requests. This change helps us serve all users reliably. **What's changing** The [max allowed offset limit](https://docs.gitlab.com/administration/instance_limits/#max-offset-allowed-by-the-rest-api-for-offset-based-pagination) will be applied to the Projects API for unauthenticated offset-based pagination requests. **Workaround** Workflows requiring access to more data must use [keyset-based pagination parameters](https://docs.gitlab.com/api/rest/#keyset-based-pagination). #### Documentation - Deprecation notice: TBD #### Product Usage **GitLab.com** See [Impact Assessment](https://gitlab.com/gitlab-com/Product/-/work_items/14429) for more details * We have confirmed that this would have little-to-no impact on legitimate users. * Only `6.85%` of our sampled unauthenticated requests exceeded the proposed `2,500`-page limit, which we've identified to be from bot activities. **Self-managed and Dedicated:** N/A - This is disabled by default behind a feature flag. ### Breaking Change? Does this deprecation contain a breaking change? `Yes` For affected workflow, please refer to the [keyset pagination guide](https://docs.gitlab.com/api/rest/#keyset-based-pagination). ### Affected Customers Who is affected by this deprecation: GitLab.com users, Self-managed users, or Dedicated users? (choose all that apply) - [x] GitLab.com - [ ] Self-managed - [ ] Dedicated What pricing tiers are impacted? - [x] GitLab Free - [ ] GitLab Premium - [ ] GitLab Ultimate ### Deprecation Milestone This deprecation will be announced in milestone: `18.8` _If this deprecation has already been announced, include information about when the initial announcement went out and what follow-up announcements are scheduled._ ### Planned Removal Milestone The feature / functionality will be removed during the breaking change window for: `19.0` ### Links * https://gitlab.com/gitlab-com/Product/-/work_items/14429+ * See impact assessment for analysis on affected customers * https://gitlab.com/gitlab-org/gitlab/-/work_items/581517+ ### Checklists #### Timeline #### Rollout Plan - [x] DRI Engineers: `@smaglangit` * DRI Engineering Manager: `@mandrewsgl` - [ ] Describe rollout plans on GitLab.com - [ ] \_Link to \_[_a feature flag rollout issue_](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20Flag%20Roll%20Out.md) that covers: - [ ] Expected release date on GitLab.com and GitLab version - [ ] Rollout timelines, such as a percentage rollout on GitLab.com - [ ] Creation of any clean-up issues, such as code removal - [x] Determine how to migrate users still using the existing functionality - [x] Document ways to migrate with the tooling available - [ ] Automate any users who have not yet migrated, but ensure it's a two-way door decision #### Communication Plan - DRI Product Manager: @lohrc An internal slack post and a release post are not sufficient notification for our customers or internal stakeholders. Plan to communicate proactively and directly with affected customers and the internal stakeholders supporting them. **Internal Communication Plan** This will have been documented in your [breaking change request](https://gitlab.com/gitlab-com/Product/-/issues/new?issuable_template=Breaking-Change-Exception). You can use this checklist to track completion of these items. - [ ] [Support Preparedness issue](https://gitlab.com/gitlab-com/support/support-team-meta/-/blob/master/.gitlab/issue_templates/Support%20Preparedness.md?ref_type=heads) created - [ ] Guidance for Engineering, Product, Security, Customer Success, and Sales created **External Communication Plan** This will have been documented in your [breaking change request](https://gitlab.com/gitlab-com/Product/-/issues/new?issuable_template=Breaking-Change-Exception). You can use this checklist to track completion of these items. - [ ] Customer announcement plan (timeline for notifications, audience, channels, etc) - [ ] Ensure you have approvals from legal and corp comms for any communication being sent directly to customers. - [ ] As soon as possible, but no later than the third milestone preceding the major release, ensure that the following are complete (for example, given the following release schedule: `17.8, 17.9, 17.10, 17.11, 18.0` – `17.9` is the third milestone preceding the major release). - [ ] A [deprecation announcement entry](https://about.gitlab.com/handbook/marketing/blog/release-posts/#creating-the-announcement) has been created so the deprecation will appear in release posts and on the [general deprecation page](https://docs.gitlab.com/ee/update/deprecations). _Add link to the relevant merge request._ - [ ] Documentation has been updated to mark the feature as [deprecated](https://docs.gitlab.com/development/documentation/versions/#deprecations-and-removals). _Add link to the relevant merge request._ - [ ] On the major milestone: - [ ] The deprecated item has been removed. _Add link to the relevant merge request._ - [ ] If the removal of the deprecated item is a [breaking change](https://docs.gitlab.com/update/terminology/#breaking-change), the merge request is labeled ~&quot;breaking change&quot;. - [ ] Document the migration plan for users, clearly outlining the actions they need to take to mitigate the impact of the breaking change. - [ ] Add link #### Development - [ ] DRI Engineers: @smaglangit * DRI Engineering Manager: `@mandrewsgl` - [ ] Measure usage of the impacted product feature - [ ] Evaluate metrics across **GitLab.com, Self-Managed, Dedicated** - [ ] _add issue link_ - [ ] _list any metrics and/or dashboards_ - [ ] Create tooling for customers to manually migrate their data or workflows - [ ] _add issue link_ - [ ] Build mechanism for users to manually enable the breaking change ahead of time - [ ] _add issue link_ - [ ] Automate the migration for those who do not take any manual steps (ensure the automation can be reverted) - [ ] _add issue link_ - [ ] Develop rollout plan of breaking change on GitLab.com - [ ] _add feature flag rollout issue_ - [ ] Dogfood the changes on GitLab.com or a Self-Managed test instance - [ ] _add issue link_ - [ ] (Optional) Create UI controls for instance admins to disable the breaking change, providing flexibility to Self-Managed / Dedicated customers. Optional as this depends on the breaking change. - [ ] _add issue link_ #### Stakeholder Mentions * [ ] Product Designer `@jason_istakinganap` * [ ] Tech Writer @z_painter * [ ] Any other stable counterparts based on the [product categories](https://handbook.gitlab.com/handbook/product/categories/): * [ ] Add Sales/CS counterpart or mention `@timtams` * [ ] Support counterpart @asmaa.hassan @b_freitas * [ ] Add Marketing counterpart or mention `@martin_klaus` * [ ] Add Corp comms if direct customer comms are needed `@jmalleo` * [ ] Mention (in internal note) Customer Success Managers / Acount Managers / Solutions Architects for impacted customers #### Labels <!--Populate the Section, Group, and Category--> - [x] This issue is labeled ~deprecation, and with the relevant `~devops::`, `~group::`, and `~Category:` labels. - [x] This issue is labeled ~&quot;breaking change&quot; if the removal of the deprecated item will be a [breaking change](https://docs.gitlab.com/update/terminology/#breaking-change). <!--Label reminders - you should have one of each of the following labels. Use the following resources to find the appropriate labels: - https://gitlab.com/gitlab-org/gitlab/-/labels - https://about.gitlab.com/handbook/product/categories/features/--> <!--Identifies that this Issue is related to deprecating a feature--> ### References - [Deprecations, removals, and breaking changes](https://handbook.gitlab.com/handbook/marketing/blog/release-posts/#deprecations-removals-and-breaking-changes) - [Deprecation guidelines](https://docs.gitlab.com/ee/development/deprecation_guidelines/) - [Deprecations and removals doc styleguide](https://docs.gitlab.com/ee/development/documentation/styleguide/deprecations_and_removals) - [REST API Deprecations](https://docs.gitlab.com/development/documentation/restful_api_styleguide/#deprecations) and [REST API breaking changes](https://docs.gitlab.com/development/api_styleguide/#breaking-changes). - [GraphQL Deprecations](https://docs.gitlab.com/development/api_graphql_styleguide/#deprecating-schema-items) and [GraphQL API breaking changes](https://docs.gitlab.com/development/api_graphql_styleguide/#breaking-changes). - [GitLab release and maintenance policy](https://docs.gitlab.com/policy/maintenance/) - Videos :tv: - [How to deprecate and remove features in GitLab releases](https://youtu.be/9gy7tg94j7s) - [Review of GitLab deprecations and removals policy & Runner team deprecations and removals process](https://youtu.be/ehT1xBajCRI)
issue