Sign in or sign up before continuing. Don't have an account yet? Register now to get started.
Register now

Docs: Standardize API operation names and descriptions

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

  • Work on this issue
  • Close this issue

Hi community contributors! 👋

Do you want to work on this issue? Please follow all instructions below, and please work on only 3 files at a time, to give everyone a chance to contribute. Thank you!

MRs created for this issue between January 22 and January 29, 2026, are eligible for the latest GitLab Hackathon!

If you are new contributing, see: https://about.gitlab.com/community/contribute/. The linked tutorial will help you get started as a contributor!

Problem to solve

The markdown API documentation files in /doc/api/ use inconsistent operation names and descriptions. We need to standardize these to follow GitLab's RESTful API style guide for better consistency and clarity across all API documentation.

Implementation plan

You don't need to be assigned to this issue to work on it. To contribute:

  1. Review the list of available files in /doc/api/ and put your username next to the files you want to work on. Please choose only 3 files at a time, to give everyone a chance. When you have completed work on those files, you can start working on the next batch of files.
  2. Review operation titles and descriptions for the files.
  3. Standardize the titles to use approved verbs.
    • The title is the section heading for operation. For example: ## Create an application, ## List all events, or ### Create a group access token.
    • Many operations may already use the standard verb (or the verb that best matches the operation).
    • For details, see Operation titles.
  4. Standardize the first sentence of the operation description.
    • The description is the paragraph after the heading, or history or details blocks.
    • This first sentence should broadly match what is used for the heading. For example: Creates an application, List all events associated with the user, or Creates a group access token for a specified group.
    • For details, see Operation description.
  5. Open a merge request using the Documentation merge request description template. Include all your changes in a single MR, do not open multiple MRs for changes to the same file.
  6. In the merge request description, include this text: https://gitlab.com/gitlab-org/gitlab/-/work_items/585399

After your MR is merged, update the spreadsheet and select 'Merged'.

Examples

Updated headings

Update the titles for each operation to use consistent verbs based on HTTP method. For details on the recommended verbs for each HTTP method, see Operation titles.

HTTP Method Original Updated
GET (Singleton) List projects and groups that a user is a member of Retrieve membership list for a user
GET (Singleton) Get a single pipeline Retrieve a pipeline
GET (List) List project pipelines List all project pipelines
GET (List) List group issues List all group issues
PUT Update pipeline metadata Update a pipeline
POST Create repository branch Create a repository branch
POST Protect repository branch Protect a repository branch
DELETE Unprotect repository branch Unprotect a repository branch
DELETE Delete a pipeline Delete a pipeline

Note

The style guide verb list is not comprehensive. There may be times when a non-standard verb just makes more sense. Use your best judgment!

Updated introduction

Update the first sentence for the description of each operation based on the title. For details, see Operation description. The first sentence should broadly repeat the title of the operation.

In many cases it can be helpful to add a little more context to this sentence. Generally, it can be helpful to highlight the most important element from the path param. For example, if the request includes a specific group ID, you may want to mention that in the description (Remove a member from a specified group).Sometimes there may be multiple elements in the request path, just use your best judgement to highlight the most important element. For example, Deletes a specified issue from a specified project sounds redundant, but Deletes a specified issue from a project still gets the point across.

If you don't feel confident in adding this extra context, it's still totally acceptable to just use the basic structure.

HTTP Method Original Basic Advanced
GET (Singleton) List projects and groups that a user is a member of Retrieve membership list for a user Retrieves the membership list for a specified user
GET (Singleton) Retrieve a pipeline Retrieves a pipeline Retrieves a specified pipeline for a project
GET (List) List all project pipelines Lists all project pipelines Lists all pipelines for a specified project
GET (List) List all group issues Lists all group issues Lists all issues for a specified group
PUT Update a pipeline Updates a pipeline Updates a specified pipeline for a project
POST Create a repository branch Creates a repository branch Creates a repository branch for a specified project
POST Protect a repository branch Protects a repository branch Protects a specified repository branch for a project
DELETE Unprotect a repository branch Unprotects a repository branch Unprotects a specified repository branch for a project
DELETE Delete a pipeline Deletes a pipeline Deletes a specified pipeline for a project

Note

  • It may be common for you to only need to update the description and the title may be correct.
  • There may be existing content already used in the description. If so, just add the standard structure first, and adjust the existing text to fit.

Who can address the issue

Community contributors with familiarity with GitLab's API documentation and the RESTful API style guide. No special expertise required—this is a great opportunity for documentation improvements.

Other links/references

  • Operation Titles Style Guide
  • Operation Descriptions Style Guide
  • Documentation Guidelines

Available files

(To be updated by GitLab team members)

Completed

Click to expand
  • access_requests.md
  • admin/token.md
  • admin_sidekiq_queues.md
  • alert_management_alerts.md
  • appearance.md
  • applications.md
  • attestations.md
  • audit_events.md
  • avatar.md
  • branches.md
  • broadcast_messages.md
  • bulk_imports.md
  • chat.md
  • cluster_agents.md
  • cluster_discovery.md
  • code_suggestions.md
  • compliance_policy_settings.md
  • container_registry.md
  • container_repository_protection_rules.md
  • container_virtual_registries.md
  • custom_attributes.md
  • database_migrations.md
  • deploy_keys.md
  • deploy_tokens.md
  • deployments.md
  • dora/metrics.md
  • draft_notes.md
  • emoji_reactions.md
  • environments.md
  • epic_issues.md
  • epic_links.md
  • epics.md
  • feature_flags.md
  • features.md
  • freeze_periods.md
  • group_activity_analytics.md
  • group_badges.md
  • group_boards.md
  • group_clusters.md
  • group_enterprise_users.md
  • group_epic_boards.md
  • group_import_export.md
  • group_labels.md
  • group_members.md
  • group_milestones.md
  • group_releases.md
  • group_repository_storage_moves.md
  • group_security_settings.md
  • group_ssh_certificates.md
  • group_webhooks.md
  • group_wikis.md
  • import.md
  • instance_clusters.md
  • instance_level_ci_variables.md
  • issue_links.md
  • issues.md
  • issues_statistics.md
  • iterations.md
  • keys.md
  • labels.md
  • license.md
  • linked_epics.md
  • lint.md
  • merge_request_context_commits.md
  • merge_requests.md
  • merge_trains.md
  • metadata.md
  • milestones.md
  • model_registry.md
  • namespaces.md
  • notes.md
  • notification_settings.md
  • organizations.md
  • packages/composer.md
  • packages/conan_v1.md
  • packages/conan_v2.md
  • packages/debian.md
  • packages/debian_group_distributions.md
  • packages/debian_project_distributions.md
  • packages/go_proxy.md
  • packages/helm.md
  • packages/maven.md
  • packages/nuget.md
  • packages/pypi.md
  • packages/terraform-modules.md
  • packages.md
  • personal_access_tokens.md
  • pipeline_schedules.md
  • pipeline_triggers.md
  • pipelines.md
  • plan_limits.md
  • project_access_tokens.md
  • project_aliases.md
  • project_badges.md
  • project_markdown_uploads.md
  • project_snippets.md
  • releases/links.md
  • repository_submodules.md
  • resource_groups.md
  • resource_iteration_events.md
  • resource_label_events.md
  • resource_milestone_events.md
  • resource_state_events.md
  • resource_weight_events.md
  • runner_controller_tokens.md
  • runner_controllers.md
  • runners.md
  • saml.md
  • scim.md
  • sidekiq_metrics.md
  • snippet_repository_storage_moves.md
  • statistics.md
  • status_checks.md
  • suggestions.md
  • system_hooks.md
  • templates/dockerfiles.md
  • templates/gitignores.md
  • templates/gitlab_ci_ymls.md
  • templates/licenses.md
  • todos.md
  • topics.md
  • usage_data.md
  • user_email_addresses.md
  • user_follow_unfollow.md
  • user_keys.md
  • user_moderation.md
  • user_tokens.md
  • users.md
  • virtual_registries_cleanup_policies.md
  • vulnerabilities.md
  • vulnerability_archive_exports.md
  • vulnerability_exports.md
  • vulnerability_findings.md
  • web_commits.md
  • wikis.md

In progress

Click to expand
  • admin/data_management.md
  • commits.md
  • discussions.md
  • geo_nodes.md
  • geo_sites.md
  • group_protected_branches.md
  • groups.md
  • job_artifacts.md
  • jobs.md
  • maven_virtual_registries.md
  • members.md
  • merge_request_approval_settings.md
  • merge_request_approvals.md
  • product_analytics.md
  • project_clusters.md
  • project_forks.md
  • project_import_export.md
  • project_job_token_scopes.md
  • project_templates.md
  • project_vulnerabilities.md
  • project_webhooks.md
  • protected_environments.md
  • protected_tags.md
  • releases/_index.md
  • remote_mirrors.md
  • repositories.md
  • repository_files.md
  • search.md
  • search_admin.md
  • secure_files.md
  • snippets.md
  • tags.md

Need to complete

Click to expand
  • boards.md
  • dependencies.md
  • dependency_list_export.md
  • dependency_proxy.md
  • error_tracking.md
  • events.md
  • experiments.md
  • external_controls.md
  • feature_flag_user_lists.md
  • google_cloud_integration.md
  • group_access_tokens.md
  • group_integrations.md
  • group_iterations.md
  • group_ldap_links.md
  • group_level_variables.md
  • group_markdown_uploads.md
  • group_placeholder_reassignments.md
  • group_protected_environments.md
  • group_push_rules.md
  • group_relations_export.md
  • invitations.md
  • markdown.md
  • packages/npm.md
  • packages/rubygems.md
  • pages.md
  • pages_domains.md
  • project_integrations.md
  • project_level_variables.md
  • project_members.md
  • project_packages_protection_rules.md
  • project_pull_mirroring.md
  • project_push_rules.md
  • project_relations_export.md
  • project_repository_storage_moves.md
  • project_security_settings.md
  • project_starring.md
  • project_statistics.md
  • projects.md
  • protected_branches.md
  • service_accounts.md
  • settings.md
Edited Feb 03, 2026 by Isaac Durham
Assignee Loading
Time tracking Loading