Skip to content

Remove endpoints that were consumed by the Customers Portal from the public API

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

A written process alone is unlikely to be sufficient to navigate through the complexity of how customers use GitLab. Please use this template as guidance with steps to take when deprecating GitLab functionality, but not as an exhaustive list designed to generate positive outcomes every time. Deprecations are often nuanced in their impact and the approach needed may not be fully covered in this template. Each team must be accountable for their deprecation, weighing the positives and negatives to ensure we prioritize results for customers.


Deprecation Summary

Endpoints in the public API that were being used by CustomersDot to interact with GitLab, have now been replaced in CustomersDot by matching internal endpoints.

We now want to remove the old endpoints in the public API, as these shouldn't be used by the public and their functionality will be drifting from the maintained internal endpoints. The affected endpoints are:

  1. POST /api/v4/namespaces/:namespace_id/minutes
  2. POST /api/v4/namespaces/:id/gitlab_subscription
  3. PUT /api/v4/user/:id/credit_card_validation
  4. PATCH /api/v4/namespaces/:previous_namespace_id/minutes/move/:target_namespace_id

These endpoints are also intended to be removed. They have active internal usage, and will need to go through a migration phase first:

  1. GET /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  2. PUT /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  3. POST /api/v4/namespaces/:namespace_id/subscription_add_on_purchase/:id
  4. PUT /api/v4/namespaces/:id/gitlab_subscription
  5. PUT /api/v4/namespaces/:id

Documentation

Product Usage

We want to deprecate a number of endpoints in the public API that were created for use by the Customers Portal. These endpoints are no longer in use as CustomersDot has migrated to relying on endpoints in the internal API which are set up to support the Cells architecture.

Each of these endpoints was restricted to admin access only, so there shouldn't be public usage of these endpoints. Additionally, as they were set up to receive requests from CustomersDot, they shouldn't be in use on Self-Managed or Dedicated.

The main party that will be affected by this change is JiHu, who will need to update their codebase to the new endpoints.

We want to remove them because they're drifting apart from the maintained functionality in the new internal API and are a potentially confusing maintenance burden currently.

Breaking Change?

Does this deprecation contain a breaking change? Yes

These are undocumented APIs that weren't intended for public use. Except PUT /api/v4/namespaces/:id/gitlab_subscription which is being used internally by chatops, we don't expect there to be any use of these endpoints currently.

Affected Customers

Who is affected by this deprecation: GitLab.com users, Self-managed users, or Dedicated users? (choose all that apply)

  • GitLab.com (Internal Chatops tooling)
  • Self-managed
  • Dedicated
  • JiHu

What pricing tiers are impacted?

  • GitLab Free
  • GitLab Premium
  • GitLab Ultimate
  • Internal note outlining details of customer impact has been created

Deprecation Milestone

This deprecation will be announced in milestone: 17.9

Planned Removal Milestone

The feature / functionality will be removed in milestone: 19.0

Links

Checklists

Timeline

Rollout Plan

  • DRI Engineers: @bhrai @jhyson
  • Describe rollout plans on GitLab.com
    • Link to a feature flag rollout issue 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
  • Determine how to migrate users still using the existing functionality
    • There is no automatic migration path here, we've co-ordinated with JiHu to manually migrate to the new endpoints.
  • 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

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

  • Create an internal note in the comment thread of this issue with a comprehensive narrative of customer impacts, with the intended audience of internal stakeholders who directly interact with customers.
    • Consider: what will the CSM / AE / SA teams need to tell their customers? What will they want to know about customer sentiment and impact?
    • If customers must take an action, include in this internal note the following information: what action is needed, the steps they can take to complete it, the due date for that action, and the consequences of not completing the action in time.
  • Internal announcement plan (timeline for notifications, audience, channels, etc)
  • Support and enablement plan
    • Support readiness: Document how the support team should handle tickets related to this deprecation / breaking change.
    • Customer Success readiness: Ensure the CS team knows how to bring questions or concerns from clients to the right internal team members.

External Communication Plan

Development

  • DRI Engineers: @bhrai @jhyson
  • 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
  • Build mechanism for users to manually enable the breaking change ahead of time
  • Automate the migration for those who do not take any manual steps (ensure the automation can be reverted)
  • Develop rollout plan of breaking change on GitLab.com
  • Dogfood the changes on GitLab.com or a Self-Managed test instance
  • (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.
    • Not relevant to self-managed/dedicated.

Approvals

  • Product Manager @ppalanikumar
  • Engineering Manager @rhardarson
  • Senior Engineering Manager / Director @senior-eng-leader
  • Group / Director of Product Management @senior-product-leader
  • Product / Eng Leaders in the CPO or CTO organizations, as applicable (optional - depends on scope of change)

Keep in mind that approval check boxes and deprecations notices alone are not sufficient communication about breaking changes. Despite having approvals documented here, the PM/EM will still need to take active steps to partner with internal stakeholders and customers to ensure a positive user experience.

Stakeholder Mentions

  • Product Designer @ProductDesigner
  • Tech Writer @TW
  • Software Engineering in Test @SET
  • Any other stable counterparts based on the product categories:
    • Add Sales/CS counterpart or mention @timtams
    • Add Support counterpart or mention @gitlab-com/support/managers
    • Add Marketing counterpart or mention @martin_klaus
    • Add Corp comms if direct customer comms are needed @jmalleo
    • Add Product Security counterpart, if relevant to your deprecation
    • Mention (in internal note) Customer Success Managers / Acount Managers / Solutions Architects for impacted customers

Labels

  • This issue is labeled deprecation, and with the relevant ~devops::, ~group::, and ~Category: labels.
  • This issue is labeled breaking change if the removal of the deprecated item will be a breaking change.

References

Edited by 🤖 GitLab Bot 🤖