openapi: 3.0.1
info:
  title: GitLab API
  version: v4
  description: |
    An OpenAPI definition for the GitLab REST API.
    Few API resources or endpoints are currently included.
    The intent is to expand this to match the entire Markdown documentation of the API:
    <https://docs.gitlab.com/ee/api/>. Contributions are welcome.

    When viewing this on gitlab.com, you can test API calls directly from the browser
    against the `gitlab.com` instance, if you are logged in.
    The feature uses the current [GitLab session cookie](https://docs.gitlab.com/ee/api/#session-cookie),
    so each request is made using your account.

    Instructions for using this tool can be found in [Interactive API Documentation](https://docs.gitlab.com/ee/api/openapi/openapi_interactive.html)
  termsOfService: https://about.gitlab.com/terms/
  license:
    name: CC BY-SA 4.0
    url: https://gitlab.com/gitlab-org/gitlab/-/blob/master/LICENSE
servers:
  - url: https://www.gitlab.com/api/v4
security:
  - ApiKeyAuth: []
tags:
  - name: badges
    description: Operations about badges
  - name: branches
    description: Operations about branches
  - name: alert_management
    description: Operations about alert_managements
  - name: batched_background_migrations
    description: Operations about batched_background_migrations
  - name: admin
    description: Operations about admins
  - name: migrations
    description: Operations about migrations
  - name: applications
    description: Operations about applications
  - name: avatar
    description: Operations about avatars
  - name: broadcast_messages
    description: Operations about broadcast_messages
  - name: bulk_imports
    description: Operations about bulk_imports
  - name: application
    description: Operations about applications
  - name: access_requests
    description: Operations related to access requests
  - name: ci_lint
    description: Operations related to linting a CI config file
  - name: ci_resource_groups
    description: Operations to manage job concurrency with resource groups
  - name: ci_variables
    description: Operations related to CI/CD variables
  - name: cluster_agents
    description: Operations related to the GitLab agent for Kubernetes
  - name: clusters
    description: Operations related to clusters
  - name: composer_packages
    description: Operations related to Composer packages
  - name: conan_packages
    description: Operations related to Conan packages
  - name: container_registry
    description: Operations related to container registry
  - name: container_registry_event
    description: Operations related to container registry events
  - name: debian_distribution
    description: Operations related to Debian Linux distributions
  - name: debian_packages
    description: Operations related to Debian Linux packages
  - name: dependency_proxy
    description: Operations to manage dependency proxy for a groups
  - name: deploy_keys
    description: Operations related to deploy keys
  - name: deploy_tokens
    description: Operations related to deploy tokens
  - name: deployments
    description: Operations related to deployments
  - name: dora_metrics
    description: Operations related to DevOps Research and Assessment (DORA) key metrics
  - name: environments
    description: Operations related to environments
  - name: error_tracking_client_keys
    description: Operations related to error tracking client keys
  - name: error_tracking_project_settings
    description: Operations related to error tracking project settings
  - name: feature_flags_user_lists
    description: Operations related to accessing GitLab feature flag user lists
  - name: feature_flags
    description: Operations related to feature flags
  - name: features
    description: Operations related to managing Flipper-based feature flags
  - name: freeze_periods
    description: Operations related to deploy freeze periods
  - name: generic_packages
    description: Operations related to Generic packages
  - name: geo
    description: Operations related to Geo
  - name: geo_nodes
    description: Operations related Geo Nodes
  - name: go_proxy
    description: Operations related to Go Proxy
  - name: group_export
    description: Operations related to exporting groups
  - name: group_import
    description: Operations related to importing groups
  - name: group_packages
    description: Operations related to group packages
  - name: helm_packages
    description: Operations related to Helm packages
  - name: integrations
    description: Operations related to integrations
  - name: issue_links
    description: Operations related to issue links
  - name: jira_connect_subscriptions
    description: Operations related to JiraConnect subscriptions
  - name: jobs
    description: Operations related to CI Jobs
  - name: maven_packages
    description: Operations related to Maven packages
  - name: merge_requests
    description: Operations related to merge requests
  - name: metadata
    description: Operations related to metadata of the GitLab instance
  - name: ml_model_registry
    description: Operations related to Model registry
  - name: npm_packages
    description: Operations related to NPM packages
  - name: nuget_packages
    description: Operations related to Nuget packages
  - name: package_files
    description: Operations about package files
  - name: plan_limits
    description: Operations related to plan limits
  - name: project_export
    description: Operations related to exporting projects
  - name: project_hooks
    description: Operations related to project hooks
  - name: project_import
    description: Operations related to importing projects
  - name: project_import_bitbucket
    description: Operations related to importing BitBucket projects
  - name: project_import_github
    description: Operations related to importing GitHub projects
  - name: project_packages
    description: Operations related to project packages
  - name: projects
    description: Operations related to projects
  - name: protected environments
    description: Operations related to protected environments
  - name: pypi_packages
    description: Operations related to PyPI packages
  - name: release_links
    description: Operations related to release assets (links)
  - name: releases
    description: Operations related to releases
  - name: resource_milestone_events
    description: Operations about resource milestone events
  - name: rpm_packages
    description: Operations related to RPM packages
  - name: rubygem_packages
    description: Operations related to RubyGems
  - name: suggestions
    description: Operations related to suggestions
  - name: system_hooks
    description: Operations related to system hooks
  - name: terraform_state
    description: Operations related to Terraform state files
  - name: terraform_registry
    description: Operations related to the Terraform module registry
  - name: unleash_api
    description: Operations related to Unleash API
paths:
  /groups/{id}/badges/{badge_id}:
    get:
      tags:
        - badges
      summary: Gets a badge of a group.
      description: This feature was introduced in GitLab 10.6.
      operationId: getApiV4GroupsIdBadgesBadgeId
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user.
          required: true
          schema:
            type: string
        - name: badge_id
          in: path
          description: The badge ID
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Gets a badge of a group.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Badge"
    put:
      tags:
        - badges
      summary: Updates a badge of a group.
      description: This feature was introduced in GitLab 10.6.
      operationId: putApiV4GroupsIdBadgesBadgeId
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user.
          required: true
          schema:
            type: string
        - name: badge_id
          in: path
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                link_url:
                  type: string
                  description: URL of the badge link
                image_url:
                  type: string
                  description: URL of the badge image
                name:
                  type: string
                  description: Name for the badge
      responses:
        "200":
          description: Updates a badge of a group.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Badge"
    delete:
      tags:
        - badges
      summary: Removes a badge from the group.
      description: This feature was introduced in GitLab 10.6.
      operationId: deleteApiV4GroupsIdBadgesBadgeId
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user.
          required: true
          schema:
            type: string
        - name: badge_id
          in: path
          description: The badge ID
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "204":
          description: Removes a badge from the group.
          content: {}
  /groups/{id}/badges:
    get:
      tags:
        - badges
      summary: Gets a list of group badges viewable by the authenticated user.
      description: This feature was introduced in GitLab 10.6.
      operationId: getApiV4GroupsIdBadges
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user.
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
        - name: name
          in: query
          description: Name for the badge
          schema:
            type: string
      responses:
        "200":
          description: Gets a list of group badges viewable by the authenticated user.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Badge"
    post:
      tags:
        - badges
      summary: Adds a badge to a group.
      description: This feature was introduced in GitLab 10.6.
      operationId: postApiV4GroupsIdBadges
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              required:
                - image_url
                - link_url
              properties:
                link_url:
                  type: string
                  description: URL of the badge link
                image_url:
                  type: string
                  description: URL of the badge image
                name:
                  type: string
                  description: Name for the badge
        required: true
      responses:
        "201":
          description: Adds a badge to a group.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Badge"
  /groups/{id}/badges/render:
    get:
      tags:
        - badges
      summary: Preview a badge from a group.
      description: This feature was introduced in GitLab 10.6.
      operationId: getApiV4GroupsIdBadgesRender
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user.
          required: true
          schema:
            type: string
        - name: link_url
          in: query
          description: URL of the badge link
          required: true
          schema:
            type: string
        - name: image_url
          in: query
          description: URL of the badge image
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Preview a badge from a group.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BasicBadgeDetails"
  /groups/{id}/access_requests/{user_id}:
    delete:
      tags:
        - access_requests
      summary: Denies an access request for the given user.
      description: This feature was introduced in GitLab 8.11.
      operationId: deleteApiV4GroupsIdAccessRequestsUserId
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user
          required: true
          schema:
            type: string
        - name: user_id
          in: path
          description: The user ID of the access requester
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "204":
          description: Denies an access request for the given user.
          content: {}
  /groups/{id}/access_requests/{user_id}/approve:
    put:
      tags:
        - access_requests
      summary: Approves an access request for the given user.
      description: This feature was introduced in GitLab 8.11.
      operationId: putApiV4GroupsIdAccessRequestsUserIdApprove
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user
          required: true
          schema:
            type: string
        - name: user_id
          in: path
          description: The user ID of the access requester
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                access_level:
                  type: integer
                  description: "A valid access level (defaults: `30`, the Developer role)"
                  format: int32
                  default: 30
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AccessRequester"
            successfull_response:
              example:
                id: 1
                username: raymond_smith
                name: Raymond Smith
                state: active
                created_at: 2012-10-22T14:13:35Z
                access_level: 20
  /groups/{id}/access_requests:
    get:
      tags:
        - access_requests
      summary: Gets a list of access requests for a group.
      description: This feature was introduced in GitLab 8.11.
      operationId: getApiV4GroupsIdAccessRequests
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: Gets a list of access requests for a group.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AccessRequester"
    post:
      tags:
        - access_requests
      summary: Requests access for the authenticated user to a group.
      description: This feature was introduced in GitLab 8.11.
      operationId: postApiV4GroupsIdAccessRequests
      parameters:
        - name: id
          in: path
          description: The ID or URL-encoded path of the group owned by the authenticated user
          required: true
          schema:
            type: string
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AccessRequester"
            successfull_response:
              example:
                id: 1
                username: raymond_smith
                name: Raymond Smith
                state: active
                created_at: 2012-10-22T14:13:35Z
                access_level: 20
  /projects/{id}/repository/merged_branches:
    delete:
      tags:
        - branches
      description: Delete all merged branches
      operationId: deleteApiV4ProjectsIdRepositoryMergedBranches
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "202":
          description: 202 Accepted
          content: {}
        "404":
          description: 404 Project Not Found
          content: {}
  /projects/{id}/repository/branches/{branch}:
    get:
      tags:
        - branches
      description: Get a single repository branch
      operationId: getApiV4ProjectsIdRepositoryBranchesBranch
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: branch
          in: path
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Get a single repository branch
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Branch"
        "404":
          description: Branch Not Found
          content: {}
    delete:
      tags:
        - branches
      description: Delete a branch
      operationId: deleteApiV4ProjectsIdRepositoryBranchesBranch
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: branch
          in: path
          description: The name of the branch
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Delete a branch
          content: {}
        "404":
          description: Branch Not Found
          content: {}
    head:
      tags:
        - branches
      description: Check if a branch exists
      operationId: headApiV4ProjectsIdRepositoryBranchesBranch
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: branch
          in: path
          description: The name of the branch
          required: true
          schema:
            type: string
      responses:
        "204":
          description: No Content
          content: {}
        "404":
          description: Not Found
          content: {}
  /projects/{id}/repository/branches:
    get:
      tags:
        - branches
      description: Get a project repository branches
      operationId: getApiV4ProjectsIdRepositoryBranches
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
        - name: search
          in: query
          description: Return list of branches matching the search criteria
          schema:
            type: string
        - name: regex
          in: query
          description: Return list of branches matching the regex
          schema:
            type: string
        - name: sort
          in: query
          description: Return list of branches sorted by the given field
          schema:
            type: string
            enum:
              - name_asc
              - updated_asc
              - updated_desc
        - name: page_token
          in: query
          description: Name of branch to start the pagination from
          schema:
            type: string
      responses:
        "200":
          description: Get a project repository branches
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Branch"
        "404":
          description: 404 Project Not Found
          content: {}
    post:
      tags:
        - branches
      description: Create branch
      operationId: postApiV4ProjectsIdRepositoryBranches
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: branch
          in: query
          description: The name of the branch
          required: true
          schema:
            type: string
        - name: ref
          in: query
          description: Create branch from commit sha or existing branch
          required: true
          schema:
            type: string
      responses:
        "201":
          description: Create branch
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Branch"
        "400":
          description: Failed to create branch
          content: {}
  /projects/{id}/repository/branches/{branch}/unprotect:
    put:
      tags:
        - branches
      description: Unprotect a single branch
      operationId: putApiV4ProjectsIdRepositoryBranchesBranchUnprotect
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: branch
          in: path
          description: The name of the branch
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Unprotect a single branch
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Branch"
        "404":
          description: 404 Project Not Found
          content: {}
  /projects/{id}/repository/branches/{branch}/protect:
    put:
      tags:
        - branches
      description: Protect a single branch
      operationId: putApiV4ProjectsIdRepositoryBranchesBranchProtect
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: branch
          in: path
          description: The name of the branch
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                developers_can_push:
                  type: boolean
                  description: Flag if developers can push to that branch
                developers_can_merge:
                  type: boolean
                  description: Flag if developers can merge to that branch
      responses:
        "200":
          description: Protect a single branch
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Branch"
        "404":
          description: 404 Branch Not Found
          content: {}
  /projects/{id}/badges/{badge_id}:
    get:
      tags:
        - badges
      summary: Gets a badge of a project.
      description: This feature was introduced in GitLab 10.6.
      operationId: getApiV4ProjectsIdBadgesBadgeId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: badge_id
          in: path
          description: The badge ID
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Gets a badge of a project.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Badge"
    put:
      tags:
        - badges
      summary: Updates a badge of a project.
      description: This feature was introduced in GitLab 10.6.
      operationId: putApiV4ProjectsIdBadgesBadgeId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: badge_id
          in: path
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                link_url:
                  type: string
                  description: URL of the badge link
                image_url:
                  type: string
                  description: URL of the badge image
                name:
                  type: string
                  description: Name for the badge
      responses:
        "200":
          description: Updates a badge of a project.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Badge"
    delete:
      tags:
        - badges
      summary: Removes a badge from the project.
      description: This feature was introduced in GitLab 10.6.
      operationId: deleteApiV4ProjectsIdBadgesBadgeId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: badge_id
          in: path
          description: The badge ID
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "204":
          description: Removes a badge from the project.
          content: {}
  /projects/{id}/badges:
    get:
      tags:
        - badges
      summary: Gets a list of project badges viewable by the authenticated user.
      description: This feature was introduced in GitLab 10.6.
      operationId: getApiV4ProjectsIdBadges
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
        - name: name
          in: query
          description: Name for the badge
          schema:
            type: string
      responses:
        "200":
          description: Gets a list of project badges viewable by the authenticated user.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Badge"
    post:
      tags:
        - badges
      summary: Adds a badge to a project.
      description: This feature was introduced in GitLab 10.6.
      operationId: postApiV4ProjectsIdBadges
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        content:
          application/json:
            schema:
              required:
                - image_url
                - link_url
              properties:
                link_url:
                  type: string
                  description: URL of the badge link
                image_url:
                  type: string
                  description: URL of the badge image
                name:
                  type: string
                  description: Name for the badge
        required: true
      responses:
        "201":
          description: Adds a badge to a project.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Badge"
  /projects/{id}/badges/render:
    get:
      tags:
        - badges
      summary: Preview a badge from a project.
      description: This feature was introduced in GitLab 10.6.
      operationId: getApiV4ProjectsIdBadgesRender
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: link_url
          in: query
          description: URL of the badge link
          required: true
          schema:
            type: string
        - name: image_url
          in: query
          description: URL of the badge image
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Preview a badge from a project.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BasicBadgeDetails"
  /projects/{id}/access_requests/{user_id}:
    delete:
      tags:
        - access_requests
      summary: Denies an access request for the given user.
      description: This feature was introduced in GitLab 8.11.
      operationId: deleteApiV4ProjectsIdAccessRequestsUserId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: user_id
          in: path
          description: The user ID of the access requester
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "204":
          description: Denies an access request for the given user.
          content: {}
  /projects/{id}/access_requests/{user_id}/approve:
    put:
      tags:
        - access_requests
      summary: Approves an access request for the given user.
      description: This feature was introduced in GitLab 8.11.
      operationId: putApiV4ProjectsIdAccessRequestsUserIdApprove
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: user_id
          in: path
          description: The user ID of the access requester
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                access_level:
                  type: integer
                  description: "A valid access level (defaults: `30`, the Developer role)"
                  format: int32
                  default: 30
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AccessRequester"
            successfull_response:
              example:
                id: 1
                username: raymond_smith
                name: Raymond Smith
                state: active
                created_at: 2012-10-22T14:13:35Z
                access_level: 20
  /projects/{id}/access_requests:
    get:
      tags:
        - access_requests
      summary: Gets a list of access requests for a project.
      description: This feature was introduced in GitLab 8.11.
      operationId: getApiV4ProjectsIdAccessRequests
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: Gets a list of access requests for a project.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AccessRequester"
    post:
      tags:
        - access_requests
      summary: Requests access for the authenticated user to a project.
      description: This feature was introduced in GitLab 8.11.
      operationId: postApiV4ProjectsIdAccessRequests
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AccessRequester"
            successfull_response:
              example:
                id: 1
                username: raymond_smith
                name: Raymond Smith
                state: active
                created_at: 2012-10-22T14:13:35Z
                access_level: 20
  /projects/{id}/alert_management_alerts/{alert_iid}/metric_images/{metric_image_id}:
    put:
      tags:
        - alert_management
      description: Update a metric image for an alert
      operationId: putApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesMetricImageId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: alert_iid
          in: path
          description: The IID of the Alert
          required: true
          schema:
            type: integer
            format: int32
        - name: metric_image_id
          in: path
          description: The ID of metric image
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                url:
                  type: string
                  description: The url to view more metric info
                url_text:
                  type: string
                  description: A description of the image or URL
      responses:
        "200":
          description: Update a metric image for an alert
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MetricImage"
        "403":
          description: Forbidden
          content: {}
        "422":
          description: Unprocessable entity
          content: {}
    delete:
      tags:
        - alert_management
      description: Remove a metric image for an alert
      operationId: deleteApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesMetricImageId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: alert_iid
          in: path
          description: The IID of the Alert
          required: true
          schema:
            type: integer
            format: int32
        - name: metric_image_id
          in: path
          description: The ID of metric image
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "204":
          description: Remove a metric image for an alert
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MetricImage"
        "403":
          description: Forbidden
          content: {}
        "422":
          description: Unprocessable entity
          content: {}
  /projects/{id}/alert_management_alerts/{alert_iid}/metric_images:
    get:
      tags:
        - alert_management
      description: Metric Images for alert
      operationId: getApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImages
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: alert_iid
          in: path
          description: The IID of the Alert
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Metric Images for alert
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_MetricImage"
        "404":
          description: Not found
          content: {}
    post:
      tags:
        - alert_management
      description: Upload a metric image for an alert
      operationId: postApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImages
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: alert_iid
          in: path
          description: The IID of the Alert
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          multipart/form-data:
            schema:
              required:
                - file
              properties:
                file:
                  type: string
                  description: The image file to be uploaded
                  format: binary
                url:
                  type: string
                  description: The url to view more metric info
                url_text:
                  type: string
                  description: A description of the image or URL
        required: true
      responses:
        "200":
          description: Upload a metric image for an alert
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MetricImage"
        "403":
          description: Forbidden
          content: {}
  /projects/{id}/alert_management_alerts/{alert_iid}/metric_images/authorize:
    post:
      tags:
        - alert_management
      description: Workhorse authorize metric image file upload
      operationId: postApiV4ProjectsIdAlertManagementAlertsAlertIidMetricImagesAuthorize
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: alert_iid
          in: path
          description: The IID of the Alert
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Workhorse authorize metric image file upload
          content: {}
        "403":
          description: Forbidden
          content: {}
  /admin/batched_background_migrations/{id}:
    get:
      tags:
        - batched_background_migrations
      description: Retrieve a batched background migration
      operationId: getApiV4AdminBatchedBackgroundMigrationsId
      parameters:
        - name: database
          in: query
          description: The name of the database
          schema:
            type: string
            default: main
            enum:
              - main
              - ci
              - embedding
              - main_clusterwide
              - geo
        - name: id
          in: path
          description: The batched background migration id
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Retrieve a batched background migration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BatchedBackgroundMigration"
        "401":
          description: 401 Unauthorized
          content: {}
        "403":
          description: 403 Forbidden
          content: {}
        "404":
          description: 404 Not found
          content: {}
  /admin/batched_background_migrations:
    get:
      tags:
        - batched_background_migrations
      description: Get the list of batched background migrations
      operationId: getApiV4AdminBatchedBackgroundMigrations
      parameters:
        - name: database
          in: query
          description: The name of the database, the default `main`
          schema:
            type: string
            default: main
            enum:
              - main
              - ci
              - embedding
              - main_clusterwide
              - geo
      responses:
        "200":
          description: Get the list of batched background migrations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_BatchedBackgroundMigration"
        "401":
          description: 401 Unauthorized
          content: {}
        "403":
          description: 403 Forbidden
          content: {}
  /admin/batched_background_migrations/{id}/resume:
    put:
      tags:
        - batched_background_migrations
      description: Resume a batched background migration
      operationId: putApiV4AdminBatchedBackgroundMigrationsIdResume
      parameters:
        - name: id
          in: path
          description: The batched background migration id
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                database:
                  type: string
                  description: The name of the database
                  default: main
                  enum:
                    - main
                    - ci
                    - embedding
                    - main_clusterwide
                    - geo
      responses:
        "200":
          description: Resume a batched background migration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BatchedBackgroundMigration"
        "401":
          description: 401 Unauthorized
          content: {}
        "403":
          description: 403 Forbidden
          content: {}
        "404":
          description: 404 Not found
          content: {}
        "422":
          description: You can resume only `paused` batched background migrations.
          content: {}
  /admin/batched_background_migrations/{id}/pause:
    put:
      tags:
        - batched_background_migrations
      description: Pause a batched background migration
      operationId: putApiV4AdminBatchedBackgroundMigrationsIdPause
      parameters:
        - name: id
          in: path
          description: The batched background migration id
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                database:
                  type: string
                  description: The name of the database
                  default: main
                  enum:
                    - main
                    - ci
                    - embedding
                    - main_clusterwide
                    - geo
      responses:
        "200":
          description: Pause a batched background migration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BatchedBackgroundMigration"
        "401":
          description: 401 Unauthorized
          content: {}
        "403":
          description: 403 Forbidden
          content: {}
        "404":
          description: 404 Not found
          content: {}
        "422":
          description: You can pause only `active` batched background migrations.
          content: {}
  /admin/ci/variables/{key}:
    get:
      tags:
        - pipeline_composition
      description: Get the details of a specific instance-level variable
      operationId: getApiV4AdminCiVariablesKey
      parameters:
        - name: key
          in: path
          description: The key of a variable
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Get the details of a specific instance-level variable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Ci_Variable"
        "404":
          description: Instance Variable Not Found
          content: {}
    put:
      tags:
        - pipeline_composition
      description: Update an instance-level variable
      operationId: putApiV4AdminCiVariablesKey
      parameters:
        - name: key
          in: path
          description: The key of a variable
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                value:
                  type: string
                  description: The value of a variable
                protected:
                  type: boolean
                  description: Whether the variable is protected
                masked:
                  type: boolean
                  description: Whether the variable is masked
                raw:
                  type: boolean
                  description: Whether the variable will be expanded
                variable_type:
                  type: string
                  description: "The type of a variable. Available types are: env_var (default) and file"
                  enum:
                    - env_var
                    - file
      responses:
        "200":
          description: Update an instance-level variable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Ci_Variable"
        "404":
          description: Instance Variable Not Found
          content: {}
    delete:
      tags:
        - pipeline_composition
      description: Delete an existing instance-level variable
      operationId: deleteApiV4AdminCiVariablesKey
      parameters:
        - name: key
          in: path
          description: The key of a variable
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Delete an existing instance-level variable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Ci_Variable"
        "404":
          description: Instance Variable Not Found
          content: {}
  /admin/ci/variables:
    get:
      tags:
        - pipeline_composition
      description: List all instance-level variables
      operationId: getApiV4AdminCiVariables
      parameters:
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: List all instance-level variables
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Ci_Variable"
    post:
      tags:
        - pipeline_composition
      description: Create a new instance-level variable
      operationId: postApiV4AdminCiVariables
      requestBody:
        content:
          application/json:
            schema:
              required:
                - key
                - value
              properties:
                key:
                  type: string
                  description: The key of the variable. Max 255 characters
                value:
                  type: string
                  description: The value of a variable
                protected:
                  type: boolean
                  description: Whether the variable is protected
                masked:
                  type: boolean
                  description: Whether the variable is masked
                raw:
                  type: boolean
                  description: Whether the variable will be expanded
                variable_type:
                  type: string
                  description: "The type of a variable. Available types are: env_var (default) and file"
                  enum:
                    - env_var
                    - file
        required: true
      responses:
        "201":
          description: Create a new instance-level variable
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Ci_Variable"
        "400":
          description: 400 Bad Request
          content: {}
  /admin/databases/{database_name}/dictionary/tables/{table_name}:
    get:
      tags:
        - admin
      description: Retrieve dictionary details
      operationId: getApiV4AdminDatabasesDatabaseNameDictionaryTablesTableName
      parameters:
        - name: database_name
          in: path
          description: The database name
          required: true
          schema:
            type: string
            enum:
              - main
              - ci
        - name: table_name
          in: path
          description: The table name
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Retrieve dictionary details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Dictionary_Table"
        "401":
          description: 401 Unauthorized
          content: {}
        "403":
          description: 403 Forbidden
          content: {}
        "404":
          description: 404 Not found
          content: {}
  /admin/clusters/{cluster_id}:
    get:
      tags:
        - clusters
      summary: Get a single instance cluster
      description: This feature was introduced in GitLab 13.2. Returns a single instance cluster.
      operationId: getApiV4AdminClustersClusterId
      parameters:
        - name: cluster_id
          in: path
          description: The cluster ID
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Get a single instance cluster
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Cluster"
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not found
          content: {}
    put:
      tags:
        - clusters
      summary: Edit instance cluster
      description: This feature was introduced in GitLab 13.2. Updates an existing instance cluster.
      operationId: putApiV4AdminClustersClusterId
      parameters:
        - name: cluster_id
          in: path
          description: The cluster ID
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  type: string
                  description: Cluster name
                enabled:
                  type: boolean
                  description: Enable or disable Gitlab's connection to your Kubernetes cluster
                environment_scope:
                  type: string
                  description: The associated environment to the cluster
                namespace_per_environment:
                  type: boolean
                  description: Deploy each environment to a separate Kubernetes namespace
                  default: true
                domain:
                  type: string
                  description: Cluster base domain
                management_project_id:
                  type: integer
                  description: The ID of the management project
                  format: int32
                managed:
                  type: boolean
                  description: Determines if GitLab will manage namespaces and service accounts for this cluster
                platform_kubernetes_attributes[api_url]:
                  type: string
                  description: URL to access the Kubernetes API
                platform_kubernetes_attributes[token]:
                  type: string
                  description: Token to authenticate against Kubernetes
                platform_kubernetes_attributes[ca_cert]:
                  type: string
                  description: TLS certificate (needed if API is using a self-signed TLS certificate)
                platform_kubernetes_attributes[namespace]:
                  type: string
                  description: Unique namespace related to Project
      responses:
        "200":
          description: Edit instance cluster
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Cluster"
        "400":
          description: Validation error
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not found
          content: {}
    delete:
      tags:
        - clusters
      summary: Delete instance cluster
      description: This feature was introduced in GitLab 13.2. Deletes an existing instance cluster. Does not remove existing resources within the connected Kubernetes cluster.
      operationId: deleteApiV4AdminClustersClusterId
      parameters:
        - name: cluster_id
          in: path
          description: The cluster ID
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "204":
          description: Delete instance cluster
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Cluster"
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not found
          content: {}
  /admin/clusters/add:
    post:
      tags:
        - clusters
      summary: Add existing instance cluster
      description: This feature was introduced in GitLab 13.2. Adds an existing Kubernetes instance cluster.
      operationId: postApiV4AdminClustersAdd
      requestBody:
        content:
          application/json:
            schema:
              required:
                - name
                - platform_kubernetes_attributes[api_url]
                - platform_kubernetes_attributes[token]
              properties:
                name:
                  type: string
                  description: Cluster name
                enabled:
                  type: boolean
                  description: Determines if cluster is active or not, defaults to true
                  default: true
                environment_scope:
                  type: string
                  description: The associated environment to the cluster
                  default: "*"
                namespace_per_environment:
                  type: boolean
                  description: Deploy each environment to a separate Kubernetes namespace
                  default: true
                domain:
                  type: string
                  description: Cluster base domain
                management_project_id:
                  type: integer
                  description: The ID of the management project
                  format: int32
                managed:
                  type: boolean
                  description: Determines if GitLab will manage namespaces and service accounts for this cluster, defaults to true
                  default: true
                platform_kubernetes_attributes[api_url]:
                  type: string
                  description: URL to access the Kubernetes API
                platform_kubernetes_attributes[token]:
                  type: string
                  description: Token to authenticate against Kubernetes
                platform_kubernetes_attributes[ca_cert]:
                  type: string
                  description: TLS certificate (needed if API is using a self-signed TLS certificate)
                platform_kubernetes_attributes[namespace]:
                  type: string
                  description: Unique namespace related to Project
                platform_kubernetes_attributes[authorization_type]:
                  type: string
                  description: Cluster authorization type, defaults to RBAC
                  default: rbac
                  enum:
                    - unknown_authorization
                    - rbac
                    - abac
        required: true
      responses:
        "201":
          description: Add existing instance cluster
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Cluster"
        "400":
          description: Validation error
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not found
          content: {}
  /admin/clusters:
    get:
      tags:
        - clusters
      summary: List instance clusters
      description: This feature was introduced in GitLab 13.2. Returns a list of instance clusters.
      operationId: getApiV4AdminClusters
      responses:
        "200":
          description: List instance clusters
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Cluster"
        "403":
          description: Forbidden
          content: {}
  /admin/migrations/{timestamp}/mark:
    post:
      tags:
        - migrations
      description: Mark the migration as successfully executed
      operationId: postApiV4AdminMigrationsTimestampMark
      parameters:
        - name: timestamp
          in: path
          description: The migration version timestamp
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                database:
                  type: string
                  description: The name of the database
                  default: main
                  enum:
                    - main
                    - ci
                    - embedding
                    - main_clusterwide
                    - geo
      responses:
        "201":
          description: 201 Created
          content: {}
        "401":
          description: 401 Unauthorized
          content: {}
        "403":
          description: 403 Forbidden
          content: {}
        "404":
          description: 404 Not found
          content: {}
        "422":
          description: You can mark only pending migrations
          content: {}
  /applications/{id}:
    delete:
      tags:
        - applications
      summary: Delete an application
      description: Delete a specific application
      operationId: deleteApiV4ApplicationsId
      parameters:
        - name: id
          in: path
          description: The ID of the application (not the application_id)
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "204":
          description: Delete an application
          content: {}
  /applications:
    get:
      tags:
        - applications
      summary: Get applications
      description: List all registered applications
      operationId: getApiV4Applications
      responses:
        "200":
          description: Get applications
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Application"
    post:
      tags:
        - applications
      summary: Create a new application
      description: This feature was introduced in GitLab 10.5
      operationId: postApiV4Applications
      requestBody:
        content:
          application/json:
            schema:
              required:
                - name
                - redirect_uri
                - scopes
              properties:
                name:
                  type: string
                  description: Name of the application.
                redirect_uri:
                  type: string
                  description: Redirect URI of the application.
                scopes:
                  type: string
                  description: |-
                    Scopes of the application. You can specify multiple scopes by separating\
                                                     each scope using a space
                confidential:
                  type: boolean
                  description: |-
                    The application is used where the client secret can be kept confidential. Native mobile apps \
                                            and Single Page Apps are considered non-confidential. Defaults to true if not supplied
                  default: true
        required: true
      responses:
        "200":
          description: Create a new application
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_ApplicationWithSecret"
  /avatar:
    get:
      tags:
        - avatar
      description: Return avatar url for a user
      operationId: getApiV4Avatar
      parameters:
        - name: email
          in: query
          description: Public email address of the user
          required: true
          schema:
            type: string
        - name: size
          in: query
          description: Single pixel dimension for Gravatar images
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Return avatar url for a user
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Avatar"
  /broadcast_messages/{id}:
    get:
      tags:
        - broadcast_messages
      summary: Get a specific broadcast message
      description: This feature was introduced in GitLab 8.12.
      operationId: getApiV4BroadcastMessagesId
      parameters:
        - name: id
          in: path
          description: Broadcast message ID
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Get a specific broadcast message
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BroadcastMessage"
    put:
      tags:
        - broadcast_messages
      summary: Update a broadcast message
      description: This feature was introduced in GitLab 8.12.
      operationId: putApiV4BroadcastMessagesId
      parameters:
        - name: id
          in: path
          description: Broadcast message ID
          required: true
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              properties:
                message:
                  type: string
                  description: Message to display
                starts_at:
                  type: string
                  description: Starting time
                  format: date-time
                ends_at:
                  type: string
                  description: Ending time
                  format: date-time
                color:
                  type: string
                  description: Background color
                font:
                  type: string
                  description: Foreground color
                target_access_levels:
                  type: array
                  description: Target user roles
                  items:
                    type: integer
                    format: int32
                    enum:
                      - 10
                      - 20
                      - 30
                      - 40
                      - 50
                target_path:
                  type: string
                  description: Target path
                broadcast_type:
                  type: string
                  description: Broadcast Type
                  enum:
                    - banner
                    - notification
                dismissable:
                  type: boolean
                  description: Is dismissable
      responses:
        "200":
          description: Update a broadcast message
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BroadcastMessage"
    delete:
      tags:
        - broadcast_messages
      summary: Delete a broadcast message
      description: This feature was introduced in GitLab 8.12.
      operationId: deleteApiV4BroadcastMessagesId
      parameters:
        - name: id
          in: path
          description: Broadcast message ID
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Delete a broadcast message
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BroadcastMessage"
  /broadcast_messages:
    get:
      tags:
        - broadcast_messages
      summary: Get all broadcast messages
      description: This feature was introduced in GitLab 8.12.
      operationId: getApiV4BroadcastMessages
      parameters:
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: Get all broadcast messages
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BroadcastMessage"
    post:
      tags:
        - broadcast_messages
      summary: Create a broadcast message
      description: This feature was introduced in GitLab 8.12.
      operationId: postApiV4BroadcastMessages
      requestBody:
        content:
          application/json:
            schema:
              required:
                - message
              properties:
                message:
                  type: string
                  description: Message to display
                starts_at:
                  type: string
                  description: Starting time
                  format: date-time
                ends_at:
                  type: string
                  description: Ending time
                  format: date-time
                color:
                  type: string
                  description: Background color
                font:
                  type: string
                  description: Foreground color
                target_access_levels:
                  type: array
                  description: Target user roles
                  items:
                    type: integer
                    format: int32
                    enum:
                      - 10
                      - 20
                      - 30
                      - 40
                      - 50
                target_path:
                  type: string
                  description: Target path
                broadcast_type:
                  type: string
                  description: Broadcast type. Defaults to banner
                  enum:
                    - banner
                    - notification
                dismissable:
                  type: boolean
                  description: Is dismissable
        required: true
      responses:
        "201":
          description: Create a broadcast message
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BroadcastMessage"
  /bulk_imports/{import_id}/entities/{entity_id}:
    get:
      tags:
        - bulk_imports
      summary: Get GitLab Migration entity details
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImportsImportIdEntitiesEntityId
      parameters:
        - name: import_id
          in: path
          description: The ID of user's GitLab Migration
          required: true
          schema:
            type: integer
            format: int32
        - name: entity_id
          in: path
          description: The ID of GitLab Migration entity
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Get GitLab Migration entity details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BulkImports"
        "401":
          description: Unauthorized
          content: {}
        "404":
          description: Not found
          content: {}
        "503":
          description: Service unavailable
          content: {}
  /bulk_imports/{import_id}/entities:
    get:
      tags:
        - bulk_imports
      summary: List GitLab Migration entities
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImportsImportIdEntities
      parameters:
        - name: import_id
          in: path
          description: The ID of user's GitLab Migration
          required: true
          schema:
            type: integer
            format: int32
        - name: status
          in: query
          description: Return import entities with specified status
          schema:
            type: string
            enum:
              - created
              - started
              - finished
              - timeout
              - failed
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: List GitLab Migration entities
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_BulkImports"
        "401":
          description: Unauthorized
          content: {}
        "404":
          description: Not found
          content: {}
        "503":
          description: Service unavailable
          content: {}
  /bulk_imports/{import_id}:
    get:
      tags:
        - bulk_imports
      summary: Get GitLab Migration details
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImportsImportId
      parameters:
        - name: import_id
          in: path
          description: The ID of user's GitLab Migration
          required: true
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Get GitLab Migration details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BulkImport"
        "401":
          description: Unauthorized
          content: {}
        "404":
          description: Not found
          content: {}
        "503":
          description: Service unavailable
          content: {}
  /bulk_imports/entities:
    get:
      tags:
        - bulk_imports
      summary: List all GitLab Migrations' entities
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImportsEntities
      parameters:
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
        - name: sort
          in: query
          description: Return GitLab Migrations sorted in created by `asc` or `desc` order.
          schema:
            type: string
            default: desc
            enum:
              - asc
              - desc
        - name: status
          in: query
          description: Return all GitLab Migrations' entities with specified status
          schema:
            type: string
            enum:
              - created
              - started
              - finished
              - timeout
              - failed
      responses:
        "200":
          description: List all GitLab Migrations' entities
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_BulkImports"
        "401":
          description: Unauthorized
          content: {}
        "404":
          description: Not found
          content: {}
        "503":
          description: Service unavailable
          content: {}
  /bulk_imports:
    get:
      tags:
        - bulk_imports
      summary: List all GitLab Migrations
      description: This feature was introduced in GitLab 14.1.
      operationId: getApiV4BulkImports
      parameters:
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            format: int32
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            format: int32
            default: 20
        - name: sort
          in: query
          description: Return GitLab Migrations sorted in created by `asc` or `desc` order.
          schema:
            type: string
            default: desc
            enum:
              - asc
              - desc
        - name: status
          in: query
          description: Return GitLab Migrations with specified status
          schema:
            type: string
            enum:
              - created
              - started
              - finished
              - timeout
              - failed
      responses:
        "200":
          description: List all GitLab Migrations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_BulkImport"
        "401":
          description: Unauthorized
          content: {}
        "404":
          description: Not found
          content: {}
        "503":
          description: Service unavailable
          content: {}
    post:
      tags:
        - bulk_imports
      summary: Start a new GitLab Migration
      description: This feature was introduced in GitLab 14.2.
      operationId: postApiV4BulkImports
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - configuration[access_token]
                - configuration[url]
                - entities[destination_namespace]
                - entities[source_full_path]
                - entities[source_type]
              properties:
                configuration[url]:
                  type: string
                  description: Source GitLab instance URL
                configuration[access_token]:
                  type: string
                  description: Access token to the source GitLab instance
                entities[source_type]:
                  type: array
                  description: Source entity type
                  items:
                    type: string
                    enum:
                      - group_entity
                      - project_entity
                entities[source_full_path]:
                  type: array
                  description: Relative path of the source entity to import
                  items:
                    type: string
                entities[destination_namespace]:
                  type: array
                  description: Destination namespace for the entity
                  items:
                    type: string
                entities[destination_slug]:
                  type: array
                  description: Destination slug for the entity
                  items:
                    type: string
                entities[destination_name]:
                  type: array
                  description: "Deprecated: Use :destination_slug instead. Destination slug for the entity"
                  items:
                    type: string
                entities[migrate_projects]:
                  type: array
                  description: Indicates group migration should include nested projects
                  items:
                    type: boolean
        required: true
      responses:
        "200":
          description: Start a new GitLab Migration
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BulkImport"
        "400":
          description: Bad request
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "404":
          description: Not found
          content: {}
        "422":
          description: Unprocessable entity
          content: {}
        "503":
          description: Service unavailable
          content: {}
  /application/appearance:
    get:
      tags:
        - application
      description: Get the current appearance
      operationId: getApiV4ApplicationAppearance
      responses:
        "200":
          description: Get the current appearance
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Appearance"
    put:
      tags:
        - application
      description: Modify appearance
      operationId: putApiV4ApplicationAppearance
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                title:
                  type: string
                  description: Instance title on the sign in / sign up page
                description:
                  type: string
                  description: Markdown text shown on the sign in / sign up page
                pwa_name:
                  type: string
                  description: Name of the Progressive Web App
                pwa_short_name:
                  type: string
                  description: Optional, short name for Progressive Web App
                pwa_description:
                  type: string
                  description: An explanation of what the Progressive Web App does
                logo:
                  type: string
                  description: Instance image used on the sign in / sign up page
                  format: binary
                pwa_icon:
                  type: string
                  description: Icon used for Progressive Web App
                  format: binary
                header_logo:
                  type: string
                  description: Instance image used for the main navigation bar
                  format: binary
                favicon:
                  type: string
                  description: Instance favicon in .ico/.png format
                  format: binary
                new_project_guidelines:
                  type: string
                  description: Markdown text shown on the new project page
                profile_image_guidelines:
                  type: string
                  description: Markdown text shown on the profile page below Public Avatar
                header_message:
                  type: string
                  description: Message within the system header bar
                footer_message:
                  type: string
                  description: Message within the system footer bar
                message_background_color:
                  type: string
                  description: Background color for the system header / footer bar
                message_font_color:
                  type: string
                  description: Font color for the system header / footer bar
                email_header_and_footer_enabled:
                  type: boolean
                  description: Add header and footer to all outgoing emails if enabled
      responses:
        "200":
          description: Modify appearance
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Appearance"
  /application/plan_limits:
    get:
      tags:
        - plan_limits
      summary: Get current plan limits
      description: List the current limits of a plan on the GitLab instance.
      operationId: getApiV4ApplicationPlanLimits
      parameters:
        - name: plan_name
          in: query
          description: "Name of the plan to get the limits from. Default: default."
          schema:
            type: string
            default: default
            enum:
              - default
              - free
              - bronze
              - silver
              - premium
              - gold
              - ultimate
              - ultimate_trial
              - premium_trial
              - opensource
      responses:
        "200":
          description: Get current plan limits
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_PlanLimit"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
    put:
      tags:
        - plan_limits
      summary: Change plan limits
      description: Modify the limits of a plan on the GitLab instance.
      operationId: putApiV4ApplicationPlanLimits
      requestBody:
        content:
          application/json:
            schema:
              required:
                - plan_name
              properties:
                plan_name:
                  type: string
                  description: Name of the plan to update
                  enum:
                    - default
                    - free
                    - bronze
                    - silver
                    - premium
                    - gold
                    - ultimate
                    - ultimate_trial
                    - premium_trial
                    - opensource
                ci_pipeline_size:
                  type: integer
                  description: Maximum number of jobs in a single pipeline
                  format: int32
                ci_active_jobs:
                  type: integer
                  description: Total number of jobs in currently active pipelines
                  format: int32
                ci_project_subscriptions:
                  type: integer
                  description: Maximum number of pipeline subscriptions to and from a project
                  format: int32
                ci_pipeline_schedules:
                  type: integer
                  description: Maximum number of pipeline schedules
                  format: int32
                ci_needs_size_limit:
                  type: integer
                  description: Maximum number of needs dependencies that a job can have
                  format: int32
                ci_registered_group_runners:
                  type: integer
                  description: Maximum number of runners registered per group
                  format: int32
                ci_registered_project_runners:
                  type: integer
                  description: Maximum number of runners registered per project
                  format: int32
                conan_max_file_size:
                  type: integer
                  description: Maximum Conan package file size in bytes
                  format: int32
                enforcement_limit:
                  type: integer
                  description: Maximum storage size for the root namespace enforcement in MiB
                  format: int32
                generic_packages_max_file_size:
                  type: integer
                  description: Maximum generic package file size in bytes
                  format: int32
                helm_max_file_size:
                  type: integer
                  description: Maximum Helm chart file size in bytes
                  format: int32
                maven_max_file_size:
                  type: integer
                  description: Maximum Maven package file size in bytes
                  format: int32
                notification_limit:
                  type: integer
                  description: Maximum storage size for the root namespace notifications in MiB
                  format: int32
                npm_max_file_size:
                  type: integer
                  description: Maximum NPM package file size in bytes
                  format: int32
                nuget_max_file_size:
                  type: integer
                  description: Maximum NuGet package file size in bytes
                  format: int32
                pypi_max_file_size:
                  type: integer
                  description: Maximum PyPI package file size in bytes
                  format: int32
                terraform_module_max_file_size:
                  type: integer
                  description: Maximum Terraform Module package file size in bytes
                  format: int32
                storage_size_limit:
                  type: integer
                  description: Maximum storage size for the root namespace in MiB
                  format: int32
                pipeline_hierarchy_size:
                  type: integer
                  description: Maximum number of downstream pipelines in a pipeline's hierarchy tree
                  format: int32
        required: true
      responses:
        "200":
          description: Change plan limits
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_PlanLimit"
        "400":
          description: Bad request
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
  /metadata:
    get:
      tags:
        - metadata
      summary: Retrieve metadata information for this GitLab instance
      description: This feature was introduced in GitLab 15.2.
      operationId: getApiV4Metadata
      responses:
        "200":
          description: Retrieve metadata information for this GitLab instance
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Metadata"
        "401":
          description: Unauthorized
          content: {}
  /version:
    get:
      tags:
        - metadata
      summary: Retrieves version information for the GitLab instance
      description: This feature was introduced in GitLab 8.13 and deprecated in 15.5. We recommend you instead use the Metadata API.
      operationId: getApiV4Version
      responses:
        "200":
          description: Retrieves version information for the GitLab instance
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Metadata"
        "401":
          description: Unauthorized
          content: {}
  /projects/{id}/jobs:
    get:
      tags:
        - jobs
      summary: List jobs for a project
      operationId: listProjectJobs
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: scope
          in: query
          required: false
          description: Return all jobs with the specified statuses
          schema:
            type: array
            items:
              type: string
      responses:
        "200":
          description: An array of jobs
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Job"
  /projects/{id}/jobs/{job_id}:
    get:
      tags:
        - jobs
      summary: Get a single job by ID
      operationId: getSingleJob
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: job_id
          in: path
          required: true
          description: The ID of the job
          schema:
            type: integer
      responses:
        "200":
          description: A single job object
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Job"
  /projects/{id}/jobs/{job_id}/play:
    post:
      tags:
        - jobs
      summary: Run a manual job
      operationId: triggerManualJob
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: job_id
          in: path
          required: true
          description: The ID of the manual job to run
          schema:
            type: integer
        - name: job_variables_attributes
          in: query
          required: false
          description: An array containing the custom variables available to the job
          schema:
            type: array
            items:
              type: string
      responses:
        "200":
          description: Job started successfully
  /projects/{id}/issues/{issue_iid}/notes:
    get:
      tags:
        - issues
      summary: List issue notes
      description: Get all notes (comments) for an issue
      operationId: getApiV4ProjectsIdIssuesIssueIidNotes
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: issue_iid
          in: path
          required: true
          description: The internal ID of the issue
          schema:
            type: integer
        - name: activity_filter
          in: query
          description: Filter issue notes by activity type (all_notes, only_comments, only_activity)
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
        - name: sort
          in: query
          description: Return notes sorted in created order
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
        - name: order_by
          in: query
          description: Return issue notes ordered by created_at or updated_at
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Note"
        "404":
          description: Issue not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    post:
      tags:
        - issues
      summary: Create new issue note
      description: Create a new note (comment) on an issue
      operationId: postApiV4ProjectsIdIssuesIssueIidNotes
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: issue_iid
          in: path
          required: true
          description: The internal ID of the issue
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - body
              properties:
                body:
                  type: string
                  description: The content of the note
                  minLength: 1
                  example: This needs more details.
                confidential:
                  type: boolean
                  description: Whether the note should be confidential
                  default: false
                  example: false
      responses:
        "201":
          description: Note created successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Note"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/issues/{issue_iid}/notes/{note_id}:
    get:
      tags:
        - issues
      summary: Get a single issue note
      description: Get details of a specific issue note
      operationId: getApiV4ProjectsIdIssuesIssueIidNotesNoteId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: issue_iid
          in: path
          required: true
          description: The internal ID of the issue
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Note"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Note not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    put:
      tags:
        - issues
      summary: Update issue note
      description: Update an existing note (comment) on an issue
      operationId: putApiV4ProjectsIdIssuesIssueIidNotesNoteId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: issue_iid
          in: path
          required: true
          description: The internal ID of the issue
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - body
              properties:
                body:
                  type: string
                  description: The updated content of the note
                  minLength: 1
                  example: Updated comment text
      responses:
        "200":
          description: Note updated successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Note"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "403":
          description: Forbidden - only the author can update the note
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Issue or note not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    delete:
      tags:
        - issues
      summary: Delete issue note
      description: Delete a note (comment) from an issue
      operationId: deleteApiV4ProjectsIdIssuesIssueIidNotesNoteId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: issue_iid
          in: path
          required: true
          description: The internal ID of the issue
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
      responses:
        "204":
          description: Note deleted successfully
        "403":
          description: Forbidden - only the author or project maintainer can delete the note
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Issue or note not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/issues/{issue_iid}/notes/{note_id}/award_emoji:
    get:
      tags:
        - issues
      summary: List award emoji on issue note
      description: List award emoji for a specific issue note
      operationId: getApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_AwardEmoji"
    post:
      tags:
        - issues
      summary: Add award emoji to issue note
      description: Add award emoji to a specific issue note
      operationId: postApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: Emoji name
                  example: thumbs_up
      responses:
        "201":
          description: Award emoji added
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AwardEmoji"
  /projects/{id}/issues/{issue_iid}/notes/{note_id}/award_emoji/{award_id}:
    get:
      tags:
        - issues
      summary: Get award emoji on issue note
      description: Get a specific award emoji for an issue note
      operationId: getApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmojiAwardId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          schema:
            type: integer
        - name: award_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AwardEmoji"
    delete:
      tags:
        - issues
      summary: Delete award emoji from issue note
      description: Delete a specific award emoji from an issue note
      operationId: deleteApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmojiAwardId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          schema:
            type: integer
        - name: award_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "204":
          description: Award emoji removed
  /projects/{id}/issues/{issue_iid}/discussions:
    get:
      tags:
        - issues
      summary: List issue discussions
      description: List discussions for an issue
      operationId: getApiV4ProjectsIdIssuesIssueIidDiscussions
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Discussion"
    post:
      tags:
        - issues
      summary: Create issue discussion
      description: Create a discussion on an issue
      operationId: postApiV4ProjectsIdIssuesIssueIidDiscussions
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - body
              properties:
                body:
                  type: string
                  description: Discussion body
                  example: Please review this change.
      responses:
        "201":
          description: Discussion created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Discussion"
  /projects/{id}/issues/{issue_iid}/discussions/{discussion_id}:
    get:
      tags:
        - issues
      summary: Get issue discussion
      description: Get a single discussion from an issue
      operationId: getApiV4ProjectsIdIssuesIssueIidDiscussionsDiscussionId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
        - name: discussion_id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Discussion"
    delete:
      tags:
        - issues
      summary: Delete issue discussion
      description: Delete a discussion from an issue
      operationId: deleteApiV4ProjectsIdIssuesIssueIidDiscussionsDiscussionId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
        - name: discussion_id
          in: path
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Discussion deleted
    put:
      tags:
        - issues
      summary: Resolve or unresolve issue discussion
      description: Resolve or unresolve a discussion on an issue
      operationId: putApiV4ProjectsIdIssuesIssueIidDiscussionsDiscussionId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
        - name: discussion_id
          in: path
          required: true
          schema:
            type: string
        - name: resolved
          in: query
          required: true
          schema:
            type: boolean
          description: Resolve (true) or reopen (false) the discussion
      responses:
        "200":
          description: Discussion updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Discussion"
  /projects/{id}/issues/{issue_iid}/discussions/{discussion_id}/notes:
    post:
      tags:
        - issues
      summary: Reply to issue discussion
      description: Add a reply to an issue discussion
      operationId: postApiV4ProjectsIdIssuesIssueIidDiscussionsDiscussionIdNotes
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: issue_iid
          in: path
          required: true
          schema:
            type: integer
        - name: discussion_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - body
              properties:
                body:
                  type: string
                  description: Reply body
                  example: Thanks for the update.
      responses:
        "201":
          description: Reply created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Discussion"
  /groups:
    get:
      tags:
        - groups
      summary: List groups
      description: Get a list of visible groups for authenticated user
      operationId: getApiV4Groups
      parameters:
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
        - name: search
          in: query
          description: Search for groups by name or path
          schema:
            type: string
        - name: owned
          in: query
          description: Limit to groups owned by the current user
          schema:
            type: boolean
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_BasicGroupDetails"
  /groups/{id}:
    get:
      tags:
        - groups
      summary: Get group details
      description: Get details of a single group
      operationId: getApiV4GroupsId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BasicGroupDetails"
  /groups/{id}/labels:
    get:
      tags:
        - labels
      summary: List group labels
      description: List labels for a group
      operationId: getApiV4GroupsIdLabels
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Label"
  /groups/{id}/milestones:
    get:
      tags:
        - milestones
      summary: List group milestones
      description: List milestones for a group
      operationId: getApiV4GroupsIdMilestones
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Milestone"
  /groups/{id}/projects:
    get:
      tags:
        - groups
      summary: List group projects
      description: Get a list of projects in a group
      operationId: getApiV4GroupsIdProjects
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
        - name: search
          in: query
          description: Search for projects by name
          schema:
            type: string
        - name: archived
          in: query
          description: Limit by archived status
          schema:
            type: boolean
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_BasicProjectDetails"
  /groups/{id}/subgroups:
    get:
      tags:
        - groups
      summary: List subgroups
      description: Get a list of subgroups of a group
      operationId: getApiV4GroupsIdSubgroups
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_BasicGroupDetails"
  /projects/{id}/pipeline:
    post:
      tags:
        - pipelines
      summary: Run pipeline
      description: Create and run a new pipeline for a project
      operationId: postApiV4ProjectsIdPipeline
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - ref
              properties:
                ref:
                  type: string
                  description: Branch or tag to run pipeline on
      responses:
        "201":
          description: Pipeline created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Pipeline"
  /projects/{id}/pipelines:
    get:
      tags:
        - pipelines
      summary: List pipelines
      description: List pipelines for a project, optionally filtered by ref
      operationId: getApiV4ProjectsIdPipelines
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: ref
          in: query
          description: Filter by branch or tag name
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Pipeline"
  /projects/{id}/pipelines/{pipeline_id}:
    get:
      tags:
        - pipelines
      summary: Get pipeline details
      description: Get details of a pipeline
      operationId: getApiV4ProjectsIdPipelinesPipelineId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: pipeline_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Pipeline"
  /projects/{id}/pipelines/{pipeline_id}/jobs:
    get:
      tags:
        - jobs
      summary: List jobs for pipeline
      description: List jobs for a specific pipeline
      operationId: getApiV4ProjectsIdPipelinesPipelineIdJobs
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: pipeline_id
          in: path
          required: true
          schema:
            type: integer
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Job"
  /projects/{id}/jobs/{job_id}/retry:
    post:
      tags:
        - jobs
      summary: Retry job
      description: Retry a job
      operationId: postApiV4ProjectsIdJobsJobIdRetry
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: job_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "201":
          description: Job retried
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Job"
  /projects/{id}/jobs/{job_id}/cancel:
    post:
      tags:
        - jobs
      summary: Cancel job
      description: Cancel a job
      operationId: postApiV4ProjectsIdJobsJobIdCancel
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: job_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "201":
          description: Job cancelled
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Job"
  /projects/{id}/labels:
    get:
      tags:
        - labels
      summary: List labels
      description: List all labels for a project
      operationId: getApiV4ProjectsIdLabels
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Label"
    post:
      tags:
        - labels
      summary: Create label
      description: Create a new label
      operationId: postApiV4ProjectsIdLabels
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - color
              properties:
                name:
                  type: string
                color:
                  type: string
                  description: Hex color code
      responses:
        "201":
          description: Label created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Label"
    delete:
      tags:
        - labels
      summary: Delete label
      description: Delete a label by name
      operationId: deleteApiV4ProjectsIdLabels
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: name
          in: query
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Label deleted
  /projects/{id}/milestones:
    get:
      tags:
        - milestones
      summary: List milestones
      description: List milestones for a project
      operationId: getApiV4ProjectsIdMilestones
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Milestone"
    post:
      tags:
        - milestones
      summary: Create milestone
      description: Create a new milestone
      operationId: postApiV4ProjectsIdMilestones
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - title
              properties:
                title:
                  type: string
      responses:
        "201":
          description: Milestone created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Milestone"
  /projects/{id}/milestones/{milestone_id}:
    put:
      tags:
        - milestones
      summary: Update milestone
      description: Update an existing milestone
      operationId: putApiV4ProjectsIdMilestonesMilestoneId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: milestone_id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                description:
                  type: string
                state_event:
                  type: string
                  enum:
                    - close
                    - activate
      responses:
        "200":
          description: Milestone updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Milestone"
  /projects/{id}/releases:
    get:
      tags:
        - releases
      summary: List releases
      description: List releases for a project
      operationId: getApiV4ProjectsIdReleases
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Release"
    post:
      tags:
        - releases
      summary: Create release
      description: Create a new release
      operationId: postApiV4ProjectsIdReleases
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - tag_name
                - name
              properties:
                tag_name:
                  type: string
                name:
                  type: string
                description:
                  type: string
      responses:
        "201":
          description: Release created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Release"
  /projects/{id}/repository/tags:
    get:
      tags:
        - tags
      summary: List tags
      description: List repository tags
      operationId: getApiV4ProjectsIdRepositoryTags
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Tag"
    post:
      tags:
        - tags
      summary: Create tag
      description: Create a new tag from ref
      operationId: postApiV4ProjectsIdRepositoryTags
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - tag_name
                - ref
              properties:
                tag_name:
                  type: string
                ref:
                  type: string
      responses:
        "201":
          description: Tag created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Tag"
  /projects/{id}/repository/tags/{tag_name}:
    delete:
      tags:
        - tags
      summary: Delete tag
      description: Delete a tag
      operationId: deleteApiV4ProjectsIdRepositoryTagsTagName
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: tag_name
          in: path
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Tag deleted
  /projects/{id}/members:
    get:
      tags:
        - members
      summary: List project members
      description: List members of a project
      operationId: getApiV4ProjectsIdMembers
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Member"
    post:
      tags:
        - members
      summary: Add project member
      description: Add a user to a project
      operationId: postApiV4ProjectsIdMembers
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - user_id
                - access_level
              properties:
                user_id:
                  type: integer
                access_level:
                  type: integer
      responses:
        "201":
          description: Member added
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Member"
  /projects/{id}/members/{user_id}:
    delete:
      tags:
        - members
      summary: Remove project member
      description: Remove a member from a project
      operationId: deleteApiV4ProjectsIdMembersUserId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: user_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "204":
          description: Member removed
  /projects/{id}/variables:
    get:
      tags:
        - project_variables
      summary: List project variables
      description: List variables for a project
      operationId: getApiV4ProjectsIdVariables
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
    post:
      tags:
        - project_variables
      summary: Create project variable
      description: Create a new variable for a project
      operationId: postApiV4ProjectsIdVariables
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - key
                - value
              properties:
                key:
                  type: string
                value:
                  type: string
                protected:
                  type: boolean
                masked:
                  type: boolean
                environment_scope:
                  type: string
      responses:
        "201":
          description: Variable created
          content:
            application/json:
              schema:
                type: object
  /projects/{id}/variables/{key}:
    get:
      tags:
        - project_variables
      summary: Get project variable
      description: Get a variable for a project
      operationId: getApiV4ProjectsIdVariablesKey
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: key
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
    put:
      tags:
        - project_variables
      summary: Update project variable
      description: Update a variable for a project
      operationId: putApiV4ProjectsIdVariablesKey
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: key
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - value
              properties:
                value:
                  type: string
                protected:
                  type: boolean
                masked:
                  type: boolean
                environment_scope:
                  type: string
      responses:
        "200":
          description: Variable updated
          content:
            application/json:
              schema:
                type: object
    delete:
      tags:
        - project_variables
      summary: Delete project variable
      description: Delete a variable for a project
      operationId: deleteApiV4ProjectsIdVariablesKey
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: key
          in: path
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Variable deleted
  /projects/{id}/hooks:
    get:
      tags:
        - hooks
      summary: List project hooks
      description: List webhooks for a project
      operationId: getApiV4ProjectsIdHooks
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Hook"
    post:
      tags:
        - hooks
      summary: Create project hook
      description: Create a webhook for a project
      operationId: postApiV4ProjectsIdHooks
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                push_events:
                  type: boolean
                issues_events:
                  type: boolean
                merge_requests_events:
                  type: boolean
      responses:
        "201":
          description: Hook created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Hook"
  /projects/{id}/hooks/{hook_id}:
    get:
      tags:
        - hooks
      summary: Get project hook
      description: Get a webhook for a project
      operationId: getApiV4ProjectsIdHooksHookId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: hook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Hook"
    put:
      tags:
        - hooks
      summary: Update project hook
      description: Update a webhook for a project
      operationId: putApiV4ProjectsIdHooksHookId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: hook_id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - url
              properties:
                url:
                  type: string
                push_events:
                  type: boolean
                issues_events:
                  type: boolean
                merge_requests_events:
                  type: boolean
      responses:
        "200":
          description: Hook updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Hook"
    delete:
      tags:
        - hooks
      summary: Delete project hook
      description: Delete a webhook
      operationId: deleteApiV4ProjectsIdHooksHookId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: hook_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "204":
          description: Hook deleted
  /projects/{id}/snippets:
    get:
      tags:
        - snippets
      summary: List project snippets
      description: List snippets for a project
      operationId: getApiV4ProjectsIdSnippets
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Snippet"
  /projects/{id}/snippets/{snippet_id}:
    get:
      tags:
        - snippets
      summary: Get project snippet
      description: Get a snippet by ID
      operationId: getApiV4ProjectsIdSnippetsSnippetId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: snippet_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Snippet"
  /projects:
    get:
      tags:
        - projects
      summary: List projects
      description: Get a list of all visible projects
      operationId: getApiV4Projects
      parameters:
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
        - name: search
          in: query
          description: Search for projects by name or description
          schema:
            type: string
        - name: owned
          in: query
          description: Limit to projects owned by the current user
          schema:
            type: boolean
        - name: membership
          in: query
          description: Limit to projects that the current user is a member of
          schema:
            type: boolean
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_BasicProjectDetails"
  /projects/{id}:
    get:
      tags:
        - projects
      summary: Get project details
      description: Get details of a single project
      operationId: getApiV4ProjectsId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_BasicProjectDetails"
  /projects/{id}/merge_requests:
    get:
      tags:
        - merge_requests
      summary: List merge requests
      description: Get all merge requests for a project
      operationId: getApiV4ProjectsIdMergeRequests
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: state
          in: query
          description: Return merge requests with the specified state
          schema:
            type: string
            enum:
              - opened
              - closed
              - merged
              - all
        - name: reviewer_id
          in: query
          description: Filter merge requests by reviewer ID
          schema:
            type: integer
        - name: created_after
          in: query
          description: Return merge requests created on or after the given time (ISO 8601)
          schema:
            type: string
        - name: created_before
          in: query
          description: Return merge requests created on or before the given time (ISO 8601)
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_MergeRequestBasic"
    post:
      tags:
        - merge_requests
      summary: Create merge request
      description: Create a new merge request for a project
      operationId: postApiV4ProjectsIdMergeRequests
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - source_branch
                - target_branch
                - title
              properties:
                source_branch:
                  type: string
                  description: The source branch name
                  example: feature/new-feature
                target_branch:
                  type: string
                  description: The target branch name
                  example: main
                title:
                  type: string
                  description: The title of the merge request
                  minLength: 1
                  maxLength: 255
                  example: Implement new feature
                description:
                  type: string
                  description: The description of the merge request (max 1MB)
                  maxLength: 1048576
                  example: This implements the new feature requested by the team.
                assignee_id:
                  type: integer
                  description: The ID of the user to assign the merge request to
                  minimum: 1
                  maximum: 2147483647
                  example: 123
                assignee_ids:
                  type: array
                  items:
                    type: integer
                    minimum: 1
                    maximum: 2147483647
                  description: The IDs of the users to assign the merge request to
                  example:
                    - 123
                    - 456
                reviewer_ids:
                  type: array
                  items:
                    type: integer
                    minimum: 1
                    maximum: 2147483647
                  description: The IDs of the users to review the merge request
                  example:
                    - 789
                    - 101
                labels:
                  type: string
                  description: Labels to be added to the merge request (comma-separated)
                  example: bug,feature,frontend
                milestone_id:
                  type: integer
                  description: The ID of the milestone to assign the merge request to
                  minimum: 1
                  maximum: 2147483647
                  example: 42
                allow_collaboration:
                  type: boolean
                  description: Allow commits from the target branch to be pushed to the source branch
                  default: false
                  example: true
                allow_maintainer_to_push:
                  type: boolean
                  description: Allow maintainers to push to the source branch
                  default: false
                  example: true
                squash:
                  type: boolean
                  description: Squash commits when merge request is accepted
                  default: false
                  example: true
                target_project_id:
                  type: integer
                  description: The target project ID (when creating merge request across projects)
                  example: 789
                remove_source_branch:
                  type: boolean
                  description: Remove the source branch when the merge request is accepted
                  default: false
                  example: true
                draft:
                  type: boolean
                  description: Mark the merge request as a draft
                  default: false
                  example: false
      responses:
        "201":
          description: Merge request created successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MergeRequest"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Project not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}:
    get:
      tags:
        - merge_requests
      summary: Get merge request details
      description: Get details of a single merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIid
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MergeRequestBasic"
    put:
      tags:
        - merge_requests
      summary: Update merge request
      description: Update an existing merge request
      operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIid
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: The title of the merge request
                  minLength: 1
                  maxLength: 255
                  example: Implement new feature
                description:
                  type: string
                  description: The description of the merge request (max 1MB)
                  maxLength: 1048576
                  example: This implements the new feature requested by the team.
                assignee_id:
                  type: integer
                  description: The ID of the user to assign the merge request to
                  minimum: 1
                  maximum: 2147483647
                  example: 123
                assignee_ids:
                  type: array
                  items:
                    type: integer
                    minimum: 1
                    maximum: 2147483647
                  description: The IDs of the users to assign the merge request to
                  example:
                    - 123
                    - 456
                reviewer_ids:
                  type: array
                  items:
                    type: integer
                    minimum: 1
                    maximum: 2147483647
                  description: The IDs of the users to review the merge request
                  example:
                    - 789
                    - 101
                labels:
                  type: string
                  description: Labels to be added to the merge request (comma-separated)
                  example: bug,feature,frontend
                milestone_id:
                  type: integer
                  description: The ID of the milestone to assign the merge request to
                  minimum: 1
                  maximum: 2147483647
                  example: 42
                state_event:
                  type: string
                  description: New state for the merge request
                  enum:
                    - close
                    - reopen
                  example: close
                target_branch:
                  type: string
                  description: The target branch name
                  example: main
                remove_source_branch:
                  type: boolean
                  description: Remove the source branch when the merge request is accepted
                  default: false
                  example: true
                squash:
                  type: boolean
                  description: Squash commits when merge request is accepted
                  default: false
                  example: true
                discussion_locked:
                  type: boolean
                  description: Whether the merge request discussion is locked
                  default: false
                  example: false
                allow_collaboration:
                  type: boolean
                  description: Allow commits from the target branch to be pushed to the source branch
                  default: false
                  example: true
                allow_maintainer_to_push:
                  type: boolean
                  description: Allow maintainers to push to the source branch
                  default: false
                  example: true
      responses:
        "200":
          description: Merge request updated successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MergeRequestBasic"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Merge request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    delete:
      tags:
        - merge_requests
      summary: Delete merge request
      description: Delete a merge request (only for administrators and project owners)
      operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIid
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
      responses:
        "204":
          description: Merge request deleted successfully
        "403":
          description: Forbidden - only administrators and project owners can delete merge requests
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Merge request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/notes:
    get:
      tags:
        - merge_requests
      summary: List merge request notes
      description: Get all notes (comments) for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidNotes
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
        - name: sort
          in: query
          description: Return notes sorted in created order
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Note"
        "404":
          description: Merge request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    post:
      tags:
        - merge_requests
      summary: Create new merge request note
      description: Create a new note (comment) on a merge request
      operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidNotes
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - body
              properties:
                body:
                  type: string
                  description: The content of the note
                  minLength: 1
                  example: This looks good to me!
                confidential:
                  type: boolean
                  description: Whether the note should be confidential
                  default: false
                  example: false
      responses:
        "201":
          description: Note created successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Note"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/notes/{note_id}:
    get:
      tags:
        - merge_requests
      summary: Get a single merge request note
      description: Get details of a specific merge request note
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Note"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Note not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    put:
      tags:
        - merge_requests
      summary: Update merge request note
      description: Update an existing note (comment) on a merge request
      operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - body
              properties:
                body:
                  type: string
                  description: The updated content of the note
                  minLength: 1
                  example: Updated comment text
      responses:
        "200":
          description: Note updated successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Note"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "403":
          description: Forbidden - only the author can update the note
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Merge request or note not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    delete:
      tags:
        - merge_requests
      summary: Delete merge request note
      description: Delete a note (comment) from a merge request
      operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
      responses:
        "204":
          description: Note deleted successfully
        "403":
          description: Forbidden - only the author or project maintainer can delete the note
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Merge request or note not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/discussions:
    get:
      tags:
        - merge_requests
      summary: List merge request discussions
      description: Get all discussions for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidDiscussions
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: page
          in: query
          description: Page number for pagination
          schema:
            type: integer
        - name: per_page
          in: query
          description: Items per page
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Discussion"
    post:
      tags:
        - merge_requests
      summary: Create merge request discussion
      description: Create a new discussion on a merge request
      operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidDiscussions
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - body
              properties:
                body:
                  type: string
                  description: The discussion text
      responses:
        "201":
          description: Discussion created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Discussion"
  /projects/{id}/merge_requests/{merge_request_iid}/discussions/{discussion_id}:
    get:
      tags:
        - merge_requests
      summary: Get merge request discussion
      description: Get a specific discussion on a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidDiscussionsDiscussionId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
        - name: discussion_id
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Discussion"
        "404":
          description: Discussion not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    delete:
      tags:
        - merge_requests
      summary: Delete merge request discussion
      description: Delete a discussion on a merge request
      operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIidDiscussionsDiscussionId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
        - name: discussion_id
          in: path
          required: true
          schema:
            type: string
      responses:
        "204":
          description: Discussion deleted
        "404":
          description: Discussion not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/discussions/{discussion_id}/notes:
    post:
      tags:
        - merge_requests
      summary: Reply to merge request discussion
      description: Add a note to an existing discussion thread on a merge request
      operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidDiscussionsDiscussionIdNotes
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
        - name: discussion_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - body
              properties:
                body:
                  type: string
                  description: The note text
      responses:
        "201":
          description: Note created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Discussion"
        "404":
          description: Discussion not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    put:
      tags:
        - merge_requests
      summary: Resolve merge request discussion
      description: Resolve or unresolve a discussion thread on a merge request
      operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIidDiscussionsDiscussionId
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
        - name: discussion_id
          in: path
          required: true
          schema:
            type: string
        - name: resolved
          in: query
          required: true
          schema:
            type: boolean
          description: Resolve (true) or reopen (false) the discussion
      responses:
        "200":
          description: Discussion updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Discussion"
        "404":
          description: Discussion not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/approvals:
    get:
      tags:
        - merge_requests
      summary: Get merge request approvals
      description: Get approvals information for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidApprovals
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Approval"
  /projects/{id}/merge_requests/{merge_request_iid}/approve:
    post:
      tags:
        - merge_requests
      summary: Approve merge request
      description: Approve a merge request
      operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidApprove
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      responses:
        "201":
          description: Merge request approved
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Approval"
  /projects/{id}/merge_requests/{merge_request_iid}/unapprove:
    post:
      tags:
        - merge_requests
      summary: Unapprove merge request
      description: Remove approval from a merge request
      operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidUnapprove
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      responses:
        "201":
          description: Merge request unapproved
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Approval"
  /projects/{id}/merge_requests/{merge_request_iid}/merge:
    put:
      tags:
        - merge_requests
      summary: Merge (accept) merge request
      description: Merge a merge request
      operationId: putApiV4ProjectsIdMergeRequestsMergeRequestIidMerge
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                merge_commit_message:
                  type: string
                  description: Custom merge commit message
                squash:
                  type: boolean
                  description: Whether to squash commits on merge
                squash_commit_message:
                  type: string
                  description: Custom squash commit message
                should_remove_source_branch:
                  type: boolean
                  description: Remove source branch after merge
                merge_when_pipeline_succeeds:
                  type: boolean
                  description: Merge when pipeline succeeds
      responses:
        "200":
          description: Merge request merged
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MergeRequestBasic"
        "405":
          description: Merge not allowed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/commits:
    get:
      tags:
        - merge_requests
      summary: List merge request commits
      description: List commits for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidCommits
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Commit"
  /projects/{id}/merge_requests/{merge_request_iid}/diffs:
    get:
      tags:
        - merge_requests
      summary: List merge request diffs
      description: List diffs for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidDiffs
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    old_path:
                      type: string
                    new_path:
                      type: string
                    a_mode:
                      type: string
                    b_mode:
                      type: string
                    new_file:
                      type: boolean
                    renamed_file:
                      type: boolean
                    deleted_file:
                      type: boolean
                    diff:
                      type: string
  /projects/{id}/merge_requests/{merge_request_iid}/raw_diffs:
    get:
      tags:
        - merge_requests
      summary: Get merge request raw diffs
      description: Get raw diffs for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidRawDiffs
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            text/plain:
              schema:
                type: string
  /projects/{id}/merge_requests/{merge_request_iid}/pipelines:
    get:
      tags:
        - merge_requests
      summary: List merge request pipelines
      description: List pipelines for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Pipeline"
    post:
      tags:
        - merge_requests
      summary: Create merge request pipeline
      description: Create a pipeline for a merge request
      operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: merge_request_iid
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                variables:
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                      value:
                        type: string
      responses:
        "201":
          description: Pipeline created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Pipeline"
  /projects/{id}/merge_requests/{merge_request_iid}/changes:
    get:
      tags:
        - merge_requests
      summary: Get merge request changes
      description: Get file changes (diffs) for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidChanges
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MergeRequestChanges"
        "404":
          description: Merge request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/versions:
    get:
      tags:
        - merge_requests
      summary: List merge request diff versions
      description: List diff versions for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidVersions
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_MergeRequestVersion"
        "404":
          description: Merge request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/versions/{version_id}:
    get:
      tags:
        - merge_requests
      summary: Get merge request diff version
      description: Get details for a specific diff version of a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidVersionsVersionId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: version_id
          in: path
          required: true
          description: The ID of the merge request version
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_MergeRequestVersionDetails"
        "404":
          description: Merge request version not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/award_emoji:
    get:
      tags:
        - award_emoji
      summary: List merge request emoji reactions
      description: Get a list of all emoji reactions for a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmoji
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_AwardEmoji"
        "404":
          description: Merge request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    post:
      tags:
        - award_emoji
      summary: Add a new emoji reaction
      description: Add an emoji reaction to a merge request
      operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmoji
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: Name of the emoji without colons
                  example: thumbsup
      responses:
        "201":
          description: Emoji reaction created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AwardEmoji"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Merge request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/award_emoji/{award_id}:
    get:
      tags:
        - award_emoji
      summary: Get a single emoji reaction
      description: Get a single emoji reaction from a merge request
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmojiAwardId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: award_id
          in: path
          required: true
          description: ID of the emoji reaction
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AwardEmoji"
        "404":
          description: Emoji reaction not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    delete:
      tags:
        - award_emoji
      summary: Delete an emoji reaction
      description: Delete an emoji reaction from a merge request
      operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIidAwardEmojiAwardId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: award_id
          in: path
          required: true
          description: ID of the emoji reaction
          schema:
            type: integer
      responses:
        "204":
          description: Emoji reaction deleted
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Emoji reaction not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/notes/{note_id}/award_emoji:
    get:
      tags:
        - award_emoji
      summary: List merge request note emoji reactions
      description: Get a list of all emoji reactions for a merge request note
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmoji
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_AwardEmoji"
        "404":
          description: Merge request or note not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    post:
      tags:
        - award_emoji
      summary: Add a new emoji reaction
      description: Add an emoji reaction to a merge request note
      operationId: postApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmoji
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: Name of the emoji without colons
                  example: eyes
      responses:
        "201":
          description: Emoji reaction created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AwardEmoji"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Merge request or note not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/merge_requests/{merge_request_iid}/notes/{note_id}/award_emoji/{award_id}:
    get:
      tags:
        - award_emoji
      summary: Get a single emoji reaction
      description: Get a single emoji reaction from a merge request note
      operationId: getApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmojiAwardId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
        - name: award_id
          in: path
          required: true
          description: ID of the emoji reaction
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_AwardEmoji"
        "404":
          description: Emoji reaction not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    delete:
      tags:
        - award_emoji
      summary: Delete an emoji reaction
      description: Delete an emoji reaction from a merge request note
      operationId: deleteApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteIdAwardEmojiAwardId
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: merge_request_iid
          in: path
          required: true
          description: The internal ID of the merge request
          schema:
            type: integer
        - name: note_id
          in: path
          required: true
          description: The ID of the note
          schema:
            type: integer
        - name: award_id
          in: path
          required: true
          description: ID of the emoji reaction
          schema:
            type: integer
      responses:
        "204":
          description: Emoji reaction deleted
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Emoji reaction not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /deploy_keys:
    get:
      tags:
        - deploy_keys
      summary: List deploy keys
      description: Get a list of deploy keys
      operationId: getApiV4DeployKeys
      parameters:
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
  /deploy_tokens:
    get:
      tags:
        - deploy_tokens
      summary: List deploy tokens
      description: Get a list of deploy tokens
      operationId: getApiV4DeployTokens
      parameters:
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
  /groups/{id}/deploy_tokens:
    get:
      tags:
        - deploy_tokens
        - groups
      summary: List group deploy tokens
      description: Get a list of deploy tokens for a group
      operationId: getApiV4GroupsIdDeployTokens
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
    post:
      tags:
        - deploy_tokens
        - groups
      summary: Create group deploy token
      description: Create a deploy token for a group
      operationId: postApiV4GroupsIdDeployTokens
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
  /events:
    get:
      tags:
        - events
      summary: List events
      description: Get a list of events
      operationId: getApiV4Events
      parameters:
        - name: page
          in: query
          description: Current page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
  /features:
    get:
      tags:
        - features
      summary: List feature flags
      description: Get a list of feature flags
      operationId: getApiV4Features
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
    post:
      tags:
        - features
      summary: Set feature flag
      description: Enable or disable a feature flag
      operationId: postApiV4Features
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
  /features/definitions:
    get:
      tags:
        - features
      summary: List feature flag definitions
      description: Get a list of feature flag definitions
      operationId: getApiV4FeaturesDefinitions
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
  /features/{name}:
    get:
      tags:
        - features
      summary: Get feature flag
      description: Get a single feature flag
      operationId: getApiV4FeaturesName
      parameters:
        - name: name
          in: path
          required: true
          description: The name of the feature flag
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    post:
      tags:
        - features
      summary: Update feature flag
      description: Enable or disable a feature flag
      operationId: postApiV4FeaturesName
      parameters:
        - name: name
          in: path
          required: true
          description: The name of the feature flag
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
    delete:
      tags:
        - features
      summary: Delete feature flag
      description: Delete a feature flag
      operationId: deleteApiV4FeaturesName
      parameters:
        - name: name
          in: path
          required: true
          description: The name of the feature flag
          schema:
            type: string
      responses:
        "204":
          description: Deleted
  /feature_flags/unleash/{project_id}:
    get:
      tags:
        - feature_flags
      summary: Get Unleash configuration
      description: Get Unleash configuration for a project
      operationId: getApiV4FeatureFlagsUnleashProjectId
      parameters:
        - name: project_id
          in: path
          required: true
          description: The project ID
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
  /feature_flags/unleash/{project_id}/features:
    get:
      tags:
        - feature_flags
      summary: List Unleash features
      description: Get Unleash feature list for a project
      operationId: getApiV4FeatureFlagsUnleashProjectIdFeatures
      parameters:
        - name: project_id
          in: path
          required: true
          description: The project ID
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
  /feature_flags/unleash/{project_id}/client/features:
    get:
      tags:
        - feature_flags
      summary: Get Unleash client features
      description: Get Unleash client feature list for a project
      operationId: getApiV4FeatureFlagsUnleashProjectIdClientFeatures
      parameters:
        - name: project_id
          in: path
          required: true
          description: The project ID
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
  /feature_flags/unleash/{project_id}/client/metrics:
    post:
      tags:
        - feature_flags
      summary: Report Unleash client metrics
      description: Report Unleash client metrics for a project
      operationId: postApiV4FeatureFlagsUnleashProjectIdClientMetrics
      parameters:
        - name: project_id
          in: path
          required: true
          description: The project ID
          schema:
            type: integer
            format: int32
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        "202":
          description: Metrics accepted
          content: {}
  /feature_flags/unleash/{project_id}/client/register:
    post:
      tags:
        - feature_flags
      summary: Register Unleash client
      description: Register an Unleash client for a project
      operationId: postApiV4FeatureFlagsUnleashProjectIdClientRegister
      parameters:
        - name: project_id
          in: path
          required: true
          description: The project ID
          schema:
            type: integer
            format: int32
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        "202":
          description: Registration accepted
          content: {}
  /groups/{id}/dependency_proxy/cache:
    delete:
      tags:
        - dependency_proxy
      summary: Purge dependency proxy cache
      description: Purge the dependency proxy cache for a group
      operationId: deleteApiV4GroupsIdDependencyProxyCache
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
      responses:
        "202":
          description: Purge scheduled
          content: {}
  /groups/{id}/custom_attributes:
    get:
      tags:
        - groups
      summary: List group custom attributes
      description: Get a list of custom attributes for a group
      operationId: getApiV4GroupsIdCustomAttributes
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_CustomAttribute"
  /groups/{id}/custom_attributes/{key}:
    get:
      tags:
        - groups
      summary: Get group custom attribute
      description: Get a custom attribute for a group
      operationId: getApiV4GroupsIdCustomAttributesKey
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
        - name: key
          in: path
          required: true
          description: The custom attribute key
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_CustomAttribute"
        "404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    put:
      tags:
        - groups
      summary: Set group custom attribute
      description: Create or update a custom attribute for a group
      operationId: putApiV4GroupsIdCustomAttributesKey
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
        - name: key
          in: path
          required: true
          description: The custom attribute key
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                value:
                  type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_CustomAttribute"
    delete:
      tags:
        - groups
      summary: Delete group custom attribute
      description: Delete a custom attribute for a group
      operationId: deleteApiV4GroupsIdCustomAttributesKey
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the group
          schema:
            type: string
        - name: key
          in: path
          required: true
          description: The custom attribute key
          schema:
            type: string
      responses:
        "204":
          description: Deleted
  /glql:
    post:
      tags:
        - glql
      summary: Execute GLQL query
      description: Execute a GLQL query
      operationId: postApiV4Glql
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                glql_yaml:
                  type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
  /issues:
    get:
      tags:
        - issues
      summary: List all issues
      description: Get all issues across projects
      operationId: getApiV4Issues
      parameters:
        - name: state
          in: query
          description: Return issues with the specified state
          schema:
            type: string
            enum:
              - opened
              - closed
              - all
        - name: search
          in: query
          description: Search issues by title or description
          schema:
            type: string
        - name: labels
          in: query
          description: Comma-separated list of labels to filter by
          schema:
            type: string
        - name: milestone
          in: query
          description: Milestone title to filter by
          schema:
            type: string
        - name: assignee_id
          in: query
          description: Filter by assignee ID
          schema:
            type: integer
        - name: assignee_username
          in: query
          description: Filter by assignee username
          schema:
            type: string
        - name: author_id
          in: query
          description: Filter by author ID
          schema:
            type: integer
        - name: scope
          in: query
          description: Filter issues by scope
          schema:
            type: string
            enum:
              - created_by_me
              - assigned_to_me
              - all
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_IssueBasic"
  /projects/{id}/issues:
    get:
      tags:
        - issues
      summary: List issues
      description: Get all issues for a project
      operationId: getApiV4ProjectsIdIssues
      parameters:
        - name: id
          in: path
          required: true
          description: The ID of the project (numeric like 123 or URL-encoded path like 'group%2Fproject')
          schema:
            type: string
        - name: state
          in: query
          description: Return issues with the specified state
          schema:
            type: string
            enum:
              - opened
              - closed
              - all
        - name: labels
          in: query
          description: Comma-separated list of labels to filter by
          schema:
            type: string
        - name: updated_after
          in: query
          description: Return issues updated on or after the given time (ISO 8601)
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_IssueBasic"
    post:
      tags:
        - issues
      summary: Create issue
      description: Create a new issue for a project
      operationId: postApiV4ProjectsIdIssues
      parameters:
        - name: id
          in: path
          required: true
          description: The ID of the project (numeric like 123 or URL-encoded path like 'group%2Fproject')
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - title
              properties:
                title:
                  type: string
                  description: The title of the issue
                  minLength: 1
                  maxLength: 255
                  example: Implement new feature
                description:
                  type: string
                  description: The description of the issue (max 1MB)
                  maxLength: 1048576
                  example: This implements the new feature requested by the team.
                assignee_id:
                  type: integer
                  description: The ID of the user to assign the issue to
                  minimum: 1
                  maximum: 2147483647
                  example: 123
                assignee_ids:
                  type: array
                  items:
                    type: integer
                    minimum: 1
                    maximum: 2147483647
                  description: The IDs of the users to assign the issue to
                  example:
                    - 123
                    - 456
                milestone_id:
                  type: integer
                  description: The ID of the milestone to assign the issue to
                  minimum: 1
                  maximum: 2147483647
                  example: 42
                labels:
                  type: string
                  description: Labels to be added to the issue (comma-separated)
                  example: bug,feature,frontend
                created_at:
                  type: string
                  format: date-time
                  description: The date the issue was created at (requires admin permissions)
                  example: 2016-01-11T10:13:33.506Z
                due_date:
                  type: string
                  format: date
                  description: The due date of the issue
                  example: 2016-03-11
                confidential:
                  type: boolean
                  description: Whether the issue should be confidential
                  default: false
                  example: false
                discussion_locked:
                  type: boolean
                  description: Whether the issue discussion is locked
                  default: false
                  example: false
                weight:
                  type: integer
                  description: The weight of the issue
                  minimum: 0
                  maximum: 100
                  example: 5
      responses:
        "201":
          description: Issue created successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Issue"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/issues/{issue_iid}:
    get:
      tags:
        - issues
      summary: Get issue details
      description: Get details of a single issue
      operationId: getApiV4ProjectsIdIssuesIssueIid
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: issue_iid
          in: path
          required: true
          description: The internal ID of the issue
          schema:
            type: integer
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_IssueBasic"
    put:
      tags:
        - issues
      summary: Update issue
      description: Update an existing issue
      operationId: putApiV4ProjectsIdIssuesIssueIid
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or URL-encoded path of the project
          schema:
            type: string
        - name: issue_iid
          in: path
          required: true
          description: The internal ID of the issue
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  description: The title of the issue
                  minLength: 1
                  maxLength: 255
                  example: Implement new feature
                description:
                  type: string
                  description: The description of the issue (max 1MB)
                  maxLength: 1048576
                  example: This implements the new feature requested by the team.
                assignee_id:
                  type: integer
                  description: The ID of the user to assign the issue to
                  minimum: 1
                  maximum: 2147483647
                  example: 123
                assignee_ids:
                  type: array
                  items:
                    type: integer
                    minimum: 1
                    maximum: 2147483647
                  description: The IDs of the users to assign the issue to
                  example:
                    - 123
                    - 456
                milestone_id:
                  type: integer
                  description: The ID of the milestone to assign the issue to
                  minimum: 1
                  maximum: 2147483647
                  example: 42
                labels:
                  type: string
                  description: Labels to be added to the issue (comma-separated)
                  example: bug,feature,frontend
                state_event:
                  type: string
                  enum:
                    - close
                    - reopen
                  description: Change issue state
                  example: close
                due_date:
                  type: string
                  format: date
                  description: The due date of the issue
                  example: 2016-03-11
                confidential:
                  type: boolean
                  description: Whether the issue should be confidential
                  example: false
                discussion_locked:
                  type: boolean
                  description: Whether the issue discussion is locked
                  example: false
                weight:
                  type: integer
                  description: The weight of the issue
                  minimum: 0
                  maximum: 100
                  example: 5
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_IssueBasic"
        "400":
          description: Bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    delete:
      tags:
        - issues
      summary: Delete issue
      description: Delete an issue (only for administrators and project owners)
      operationId: deleteApiV4ProjectsIdIssuesIssueIid
      parameters:
        - name: id
          in: path
          required: true
          description: The ID of the project (numeric like 123 or URL-encoded path like 'group%2Fproject')
          schema:
            type: string
        - name: issue_iid
          in: path
          required: true
          description: The internal ID of the issue
          schema:
            type: integer
      responses:
        "204":
          description: Issue deleted successfully
        "403":
          description: Forbidden - only administrators and project owners can delete issues
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
        "404":
          description: Issue not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/repository/tree:
    get:
      tags:
        - repository
      summary: List repository tree
      description: List files and directories in a repository tree
      operationId: getApiV4ProjectsIdRepositoryTree
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: path
          in: query
          description: Directory path within repository
          schema:
            type: string
        - name: ref
          in: query
          description: Branch or tag name
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    type:
                      type: string
                    path:
                      type: string
                    mode:
                      type: string
  /projects/{id}/repository/compare:
    get:
      tags:
        - repository
      summary: Compare repository refs
      description: Compare two refs (branches, tags, or SHAs)
      operationId: getApiV4ProjectsIdRepositoryCompare
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: from
          in: query
          required: true
          description: Source ref
          schema:
            type: string
        - name: to
          in: query
          required: true
          description: Target ref
          schema:
            type: string
        - name: straight
          in: query
          description: Limit comparison to commits reachable from target
          schema:
            type: boolean
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: object
  /projects/{id}/repository/commits:
    get:
      tags:
        - repository_commits
      summary: List repository commits
      description: Get a list of repository commits for a project, optionally filtered by ref or file path.
      operationId: getApiV4ProjectsIdRepositoryCommits
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: ref_name
          in: query
          description: The name of a branch, tag, or commit SHA to list commits from
          schema:
            type: string
        - name: path
          in: query
          description: File path to filter commits, use URL-encoded slashes for nested paths
          schema:
            type: string
        - name: since
          in: query
          description: Only commits after this date in ISO 8601 format
          schema:
            type: string
        - name: until
          in: query
          description: Only commits before this date in ISO 8601 format
          schema:
            type: string
        - name: all
          in: query
          description: Return all commits, including those not in the default branch
          schema:
            type: boolean
        - name: with_stats
          in: query
          description: Include commit stats in the response
          schema:
            type: boolean
        - name: first_parent
          in: query
          description: Return only the first parent of merge commits
          schema:
            type: boolean
        - name: page
          in: query
          description: Page number for pagination
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: Number of items per page
          schema:
            type: integer
            default: 20
        - name: order
          in: query
          description: Order commits, for example default or topo
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/API_Entities_Commit"
        "404":
          description: Project not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/repository/commits/{sha}:
    get:
      tags:
        - repository
      summary: Get commit by SHA
      description: Get a single commit by SHA
      operationId: getApiV4ProjectsIdRepositoryCommitsSha
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: sha
          in: path
          required: true
          description: Commit SHA
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_Commit"
        "404":
          description: Commit not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/repository/files/{file_path}:
    get:
      tags:
        - repository_files
      summary: Get file from repository
      description: Get file metadata and base64-encoded content from repository
      operationId: getApiV4ProjectsIdRepositoryFilesFilePath
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: file_path
          in: path
          required: true
          description: URL-encoded full path to the file (e.g., src%2Findex.js)
          schema:
            type: string
        - name: ref
          in: query
          required: true
          description: The name of branch, tag, or commit
          schema:
            type: string
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_RepositoryFile"
        "404":
          description: File Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
    post:
      tags:
        - repository_files
      summary: Create file in repository
      description: Create a new file in the repository
      operationId: postApiV4ProjectsIdRepositoryFilesFilePath
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: file_path
          in: path
          required: true
          description: URL-encoded full path to the file (e.g., src%2Findex.js)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - branch
                - content
                - commit_message
              properties:
                branch:
                  type: string
                  description: Branch name
                  example: main
                content:
                  type: string
                  description: File content
                commit_message:
                  type: string
                  description: Commit message
      responses:
        "201":
          description: File created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_RepositoryFile"
    put:
      tags:
        - repository_files
      summary: Update file in repository
      description: Update an existing file in the repository
      operationId: putApiV4ProjectsIdRepositoryFilesFilePath
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: file_path
          in: path
          required: true
          description: URL-encoded full path to the file (e.g., src%2Findex.js)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - branch
                - content
                - commit_message
              properties:
                branch:
                  type: string
                  description: Branch name
                  example: main
                content:
                  type: string
                  description: File content
                commit_message:
                  type: string
                  description: Commit message
      responses:
        "200":
          description: File updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Entities_RepositoryFile"
    delete:
      tags:
        - repository_files
      summary: Delete file from repository
      description: Delete a file from the repository
      operationId: deleteApiV4ProjectsIdRepositoryFilesFilePath
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: file_path
          in: path
          required: true
          description: URL-encoded full path to the file (e.g., src%2Findex.js)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - branch
                - commit_message
              properties:
                branch:
                  type: string
                  description: Branch name
                  example: main
                commit_message:
                  type: string
                  description: Commit message
      responses:
        "204":
          description: File deleted
  /projects/{id}/repository/files/{file_path}/raw:
    get:
      tags:
        - repository_files
      summary: Get raw file from repository
      description: Get raw file content from repository
      operationId: getApiV4ProjectsIdRepositoryFilesFilePathRaw
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: file_path
          in: path
          required: true
          description: URL-encoded full path to the file (e.g., src%2Findex.js)
          schema:
            type: string
        - name: ref
          in: query
          required: true
          description: The name of branch, tag, or commit
          schema:
            type: string
      responses:
        "200":
          description: Raw file content
          content:
            text/plain:
              schema:
                type: string
            application/octet-stream:
              schema:
                type: string
                format: binary
        "404":
          description: File Not Found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/API_Error"
  /projects/{id}/jobs/{job_id}/artifacts:
    get:
      tags:
        - jobs
      summary: Download job artifacts
      description: Download artifacts archive for a job
      operationId: getApiV4ProjectsIdJobsJobIdArtifacts
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: job_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Artifacts archive
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /projects/{id}/jobs/{job_id}/artifacts/{artifact_path}:
    get:
      tags:
        - jobs
      summary: Download single job artifact file
      description: Download a single file from job artifacts
      operationId: getApiV4ProjectsIdJobsJobIdArtifactsArtifactPath
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: job_id
          in: path
          required: true
          schema:
            type: integer
        - name: artifact_path
          in: path
          required: true
          description: Path to artifact file
          schema:
            type: string
      responses:
        "200":
          description: Artifact file content
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /projects/{id}/snippets/{snippet_id}/raw:
    get:
      tags:
        - snippets
      summary: Download snippet raw content
      description: Download raw content of a snippet
      operationId: getApiV4ProjectsIdSnippetsSnippetIdRaw
      parameters:
        - $ref: "#/components/parameters/ProjectIdOrPath"
        - name: snippet_id
          in: path
          required: true
          schema:
            type: integer
      responses:
        "200":
          description: Raw snippet content
          content:
            text/plain:
              schema:
                type: string
components:
  parameters:
    ProjectIdOrPath:
      name: id
      in: path
      description: The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
      required: true
      schema:
        anyOf:
          - type: string
            example: gitlab-org/gitlab
          - type: integer
            example: 278964
  schemas:
    API_Entities_Badge:
      type: object
      properties:
        name:
          type: string
        link_url:
          type: string
        image_url:
          type: string
        rendered_link_url:
          type: string
        rendered_image_url:
          type: string
        id:
          type: string
        kind:
          type: string
      description: API_Entities_Badge model
    API_Entities_BasicBadgeDetails:
      type: object
      properties:
        name:
          type: string
        link_url:
          type: string
        image_url:
          type: string
        rendered_link_url:
          type: string
        rendered_image_url:
          type: string
      description: API_Entities_BasicBadgeDetails model
    API_Entities_AccessRequester:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        username:
          type: string
          example: admin
        name:
          type: string
          example: Administrator
        state:
          type: string
          example: active
        avatar_url:
          type: string
          example: https://gravatar.com/avatar/1
        avatar_path:
          type: string
          example: /user/avatar/28/The-Big-Lebowski-400-400.png
        custom_attributes:
          type: array
          items:
            $ref: "#/components/schemas/API_Entities_CustomAttribute"
        web_url:
          type: string
          example: https://gitlab.example.com/root
        email:
          type: string
        requested_at:
          type: string
      description: API_Entities_AccessRequester model
    API_Entities_CustomAttribute:
      type: object
      properties:
        key:
          type: string
          example: foo
        value:
          type: string
          example: bar
    API_Entities_Branch:
      type: object
      properties:
        name:
          type: string
          example: master
        commit:
          $ref: "#/components/schemas/API_Entities_Commit"
        merged:
          type: boolean
          example: true
        protected:
          type: boolean
          example: true
        developers_can_push:
          type: boolean
          example: true
        developers_can_merge:
          type: boolean
          example: true
        can_push:
          type: boolean
          example: true
        default:
          type: boolean
          example: true
        web_url:
          type: string
          example: https://gitlab.example.com/Commit921/the-dude/-/tree/master
      description: API_Entities_Branch model
    API_Entities_Commit:
      type: object
      properties:
        id:
          type: string
          example: 2695effb5807a22ff3d138d593fd856244e155e7
        short_id:
          type: string
          example: 2695effb
        created_at:
          type: string
          format: date-time
          example: 2017-07-26T11:08:53+02:00
        parent_ids:
          type: array
          items:
            type: string
            example: 2a4b78934375d7f53875269ffd4f45fd83a84ebe
        title:
          type: string
          example: Initial commit
        message:
          type: string
          example: Initial commit
        author_name:
          type: string
          example: John Smith
        author_email:
          type: string
          example: john@example.com
        authored_date:
          type: string
          format: date-time
          example: 2012-05-28T04:42:42-07:00
        committer_name:
          type: string
          example: Jack Smith
        committer_email:
          type: string
          example: jack@example.com
        committed_date:
          type: string
          format: date-time
          example: 2012-05-28T04:42:42-07:00
        trailers:
          type: object
          properties: {}
          example: '{ "Merged-By": "Jane Doe janedoe@gitlab.com" }'
        web_url:
          type: string
          example: https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746
    API_Entities_MetricImage:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 23
        created_at:
          type: string
          format: date-time
          example: 2020-11-13T00:06:18.084Z
        filename:
          type: string
          example: file.png
        file_path:
          type: string
          example: /uploads/-/system/alert_metric_image/file/23/file.png
        url:
          type: string
          example: https://example.com/metric
        url_text:
          type: string
          example: An example metric
      description: API_Entities_MetricImage model
    API_Entities_BatchedBackgroundMigration:
      type: object
      properties:
        id:
          type: string
          example: "1234"
        job_class_name:
          type: string
          example: CopyColumnUsingBackgroundMigrationJob
        table_name:
          type: string
          example: events
        status:
          type: string
          example: active
        progress:
          type: number
          format: float
          example: 50
        created_at:
          type: string
          format: date-time
          example: 2022-11-28T16:26:39+02:00
      description: API_Entities_BatchedBackgroundMigration model
    API_Entities_Ci_Variable:
      type: object
      properties:
        variable_type:
          type: string
          example: env_var
        key:
          type: string
          example: TEST_VARIABLE_1
        value:
          type: string
          example: TEST_1
        protected:
          type: boolean
        masked:
          type: boolean
        raw:
          type: boolean
        environment_scope:
          type: string
          example: "*"
      description: API_Entities_Ci_Variable model
    API_Entities_Dictionary_Table:
      type: object
      properties:
        table_name:
          type: string
          example: users
        feature_categories:
          type: array
          items:
            type: string
            example: database
      description: API_Entities_Dictionary_Table model
    API_Entities_Cluster:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        created_at:
          type: string
        domain:
          type: string
        enabled:
          type: string
        managed:
          type: string
        provider_type:
          type: string
        platform_type:
          type: string
        environment_scope:
          type: string
        cluster_type:
          type: string
        namespace_per_environment:
          type: string
        user:
          $ref: "#/components/schemas/API_Entities_UserBasic"
        platform_kubernetes:
          $ref: "#/components/schemas/API_Entities_Platform_Kubernetes"
        provider_gcp:
          $ref: "#/components/schemas/API_Entities_Provider_Gcp"
        management_project:
          $ref: "#/components/schemas/API_Entities_ProjectIdentity"
      description: API_Entities_Cluster model
    API_Entities_UserBasic:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        username:
          type: string
          example: admin
        name:
          type: string
          example: Administrator
        state:
          type: string
          example: active
        avatar_url:
          type: string
          example: https://gravatar.com/avatar/1
        avatar_path:
          type: string
          example: /user/avatar/28/The-Big-Lebowski-400-400.png
        custom_attributes:
          type: array
          items:
            $ref: "#/components/schemas/API_Entities_CustomAttribute"
        web_url:
          type: string
          example: https://gitlab.example.com/root
        email:
          type: string
    API_Entities_Platform_Kubernetes:
      type: object
      properties:
        api_url:
          type: string
        namespace:
          type: string
        authorization_type:
          type: string
        ca_cert:
          type: string
    API_Entities_Provider_Gcp:
      type: object
      properties:
        cluster_id:
          type: string
        status_name:
          type: string
        gcp_project_id:
          type: string
        zone:
          type: string
        machine_type:
          type: string
        num_nodes:
          type: string
        endpoint:
          type: string
    API_Entities_ProjectIdentity:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        description:
          type: string
          example: desc
        name:
          type: string
          example: project1
        name_with_namespace:
          type: string
          example: John Doe / project1
        path:
          type: string
          example: project1
        path_with_namespace:
          type: string
          example: namespace1/project1
        created_at:
          type: string
          format: date-time
          example: 2020-05-07T04:27:17.016Z
    API_Entities_Application:
      type: object
      properties:
        id:
          type: string
        application_id:
          type: string
          example: 5832fc6e14300a0d962240a8144466eef4ee93ef0d218477e55f11cf12fc3737
        application_name:
          type: string
          example: MyApplication
        callback_url:
          type: string
          example: https://redirect.uri
        confidential:
          type: boolean
          example: true
      description: API_Entities_Application model
    API_Entities_ApplicationWithSecret:
      type: object
      properties:
        id:
          type: string
        application_id:
          type: string
          example: 5832fc6e14300a0d962240a8144466eef4ee93ef0d218477e55f11cf12fc3737
        application_name:
          type: string
          example: MyApplication
        callback_url:
          type: string
          example: https://redirect.uri
        confidential:
          type: boolean
          example: true
        secret:
          type: string
          example: ee1dd64b6adc89cf7e2c23099301ccc2c61b441064e9324d963c46902a85ec34
      description: API_Entities_ApplicationWithSecret model
    API_Entities_Avatar:
      type: object
      properties:
        avatar_url:
          type: string
      description: API_Entities_Avatar model
    API_Entities_BroadcastMessage:
      type: object
      properties:
        id:
          type: string
        message:
          type: string
        starts_at:
          type: string
        ends_at:
          type: string
        color:
          type: string
        font:
          type: string
        target_access_levels:
          type: string
        target_path:
          type: string
        broadcast_type:
          type: string
        dismissable:
          type: string
        active:
          type: string
      description: API_Entities_BroadcastMessage model
    API_Entities_BulkImports:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        bulk_import_id:
          type: integer
          format: int32
          example: 1
        status:
          type: string
          example: created
          enum:
            - created
            - started
            - finished
            - timeout
            - failed
        entity_type:
          type: string
          enum:
            - group
            - project
        source_full_path:
          type: string
          example: source_group
        destination_full_path:
          type: string
          example: some_group/source_project
        destination_name:
          type: string
          example: destination_slug
        destination_slug:
          type: string
          example: destination_slug
        destination_namespace:
          type: string
          example: destination_path
        parent_id:
          type: integer
          format: int32
          example: 1
        namespace_id:
          type: integer
          format: int32
          example: 1
        project_id:
          type: integer
          format: int32
          example: 1
        created_at:
          type: string
          format: date-time
          example: 2012-05-28T04:42:42-07:00
        updated_at:
          type: string
          format: date-time
          example: 2012-05-28T04:42:42-07:00
        failures:
          type: array
          items:
            $ref: "#/components/schemas/API_Entities_BulkImports_EntityFailure"
        migrate_projects:
          type: boolean
          example: true
      description: API_Entities_BulkImports model
    API_Entities_BulkImports_EntityFailure:
      type: object
      properties:
        relation:
          type: string
          example: group
        step:
          type: string
          example: extractor
        exception_message:
          type: string
          example: error message
        exception_class:
          type: string
          example: Exception
        correlation_id_value:
          type: string
          example: dfcf583058ed4508e4c7c617bd7f0edd
        created_at:
          type: string
          format: date-time
          example: 2012-05-28T04:42:42-07:00
        pipeline_class:
          type: string
          example: BulkImports::Groups::Pipelines::GroupPipeline
        pipeline_step:
          type: string
          example: extractor
    API_Entities_BulkImport:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        status:
          type: string
          example: finished
          enum:
            - created
            - started
            - finished
            - timeout
            - failed
        source_type:
          type: string
          example: gitlab
        created_at:
          type: string
          format: date-time
          example: 2012-05-28T04:42:42-07:00
        updated_at:
          type: string
          format: date-time
          example: 2012-05-28T04:42:42-07:00
      description: API_Entities_BulkImport model
    API_Entities_Appearance:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
        pwa_name:
          type: string
        pwa_short_name:
          type: string
        pwa_description:
          type: string
        logo:
          type: string
        pwa_icon:
          type: string
        header_logo:
          type: string
        favicon:
          type: string
        new_project_guidelines:
          type: string
        profile_image_guidelines:
          type: string
        header_message:
          type: string
        footer_message:
          type: string
        message_background_color:
          type: string
        message_font_color:
          type: string
        email_header_and_footer_enabled:
          type: string
      description: API_Entities_Appearance model
    API_Entities_PlanLimit:
      type: object
      properties:
        ci_pipeline_size:
          type: integer
          format: int32
          example: 0
        ci_active_jobs:
          type: integer
          format: int32
          example: 0
        ci_project_subscriptions:
          type: integer
          format: int32
          example: 2
        ci_pipeline_schedules:
          type: integer
          format: int32
          example: 10
        ci_needs_size_limit:
          type: integer
          format: int32
          example: 50
        ci_registered_group_runners:
          type: integer
          format: int32
          example: 1000
        ci_registered_project_runners:
          type: integer
          format: int32
          example: 1000
        conan_max_file_size:
          type: integer
          format: int32
          example: 3221225472
        enforcement_limit:
          type: integer
          format: int32
          example: 15000
        generic_packages_max_file_size:
          type: integer
          format: int32
          example: 5368709120
        helm_max_file_size:
          type: integer
          format: int32
          example: 5242880
        limits_history:
          type: object
          properties: {}
          example: |-
            {"enforcement_limit"=>[{"timestamp"=>1686909124, "user_id"=>1, "username"=>"x", "value"=>5}],
                               "notification_limit"=>[{"timestamp"=>1686909124, "user_id"=>2, "username"=>"y", "value"=>7}]}
        maven_max_file_size:
          type: integer
          format: int32
          example: 3221225472
        notification_limit:
          type: integer
          format: int32
          example: 15000
        npm_max_file_size:
          type: integer
          format: int32
          example: 524288000
        nuget_max_file_size:
          type: integer
          format: int32
          example: 524288000
        pipeline_hierarchy_size:
          type: integer
          format: int32
          example: 1000
        pypi_max_file_size:
          type: integer
          format: int32
          example: 3221225472
        terraform_module_max_file_size:
          type: integer
          format: int32
          example: 1073741824
        storage_size_limit:
          type: integer
          format: int32
          example: 15000
      description: API_Entities_PlanLimit model
    API_Entities_Metadata:
      type: object
      properties:
        version:
          type: string
          example: 15.2-pre
        revision:
          type: string
          example: c401a659d0c
        kas:
          type: object
          properties:
            enabled:
              type: boolean
            externalUrl:
              type: string
              example: grpc://gitlab.example.com:8150
            version:
              type: string
              example: 15.0.0
        enterprise:
          type: boolean
      description: API_Entities_Metadata model
    API_Entities_Job:
      type: object
      properties:
        id:
          type: integer
          description: The ID of the job
        name:
          type: string
          description: The name of the job
        status:
          type: string
          description: The current status of the job
        stage:
          type: string
          description: The stage of the job in the CI/CD pipeline
        created_at:
          type: string
          format: date-time
          example: 2016-01-11T10:13:33.506Z
          description: The creation time of the job
        started_at:
          type: string
          format: date-time
          example: 2016-01-11T10:13:33.506Z
          description: The start time of the job
        finished_at:
          type: string
          format: date-time
          example: 2016-01-11T10:13:33.506Z
          description: The finish time of the job
        commit:
          $ref: "#/components/schemas/API_Entities_Commit"
        archived:
          type: boolean
          description: Indicates if the job is archived
        allow_failure:
          type: boolean
          description: Indicates if the job is allowed to fail
        erased_at:
          type: string
          format: date-time
          example: 2016-01-11T10:13:33.506Z
          description: The time when the job was erased, if applicable
        duration:
          type: integer
          description: The duration of the job in seconds
        queued_duration:
          type: number
          description: The duration the job was queued before execution, in seconds
        ref:
          type: string
          description: The reference for the job
        artifacts:
          type: array
          description: The artifacts produced by the job
        tag:
          type: boolean
          description: Indicates if the job is tagged
        web_url:
          type: string
          description: The URL for accessing the job in the web interface
        project:
          type: object
          properties:
            ci_job_token_scope_enabled:
              type: boolean
              description: Indicates if the CI/CD job token scope setting is enabled for the project
        user:
          $ref: "#/components/schemas/API_Entities_UserBasic"
          description: The user that started the job
      description: API_Entities_Job model
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Private-Token
