GitLab CI/CD commits API

Operations about commits

Operations 12

GET /api/v4/projects/{id}/repository/commits #
POST /api/v4/projects/{id}/repository/commits Create a new commit #
GET /api/v4/projects/{id}/repository/commits/{sha} #
GET /api/v4/projects/{id}/repository/commits/{sha}/diff #
GET /api/v4/projects/{id}/repository/commits/{sha}/comments #
POST /api/v4/projects/{id}/repository/commits/{sha}/comments #
GET /api/v4/projects/{id}/repository/commits/{sha}/sequence #
POST /api/v4/projects/{id}/repository/commits/{sha}/cherry_pick Cherry pick commit into a branch #
POST /api/v4/projects/{id}/repository/commits/{sha}/revert Revert a commit in a branch #
GET /api/v4/projects/{id}/repository/commits/{sha}/refs Get all references a commit is pushed to #
GET /api/v4/projects/{id}/repository/commits/{sha}/merge_requests #
GET /api/v4/projects/{id}/repository/commits/{sha}/signature #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gitlab-ci-commits-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gitlab-ci-commits-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GitLab access_requests Commits API
  version: v4
  description: Operations related to access requests
servers:
- url: https://gitlab.com
tags:
- name: commits
  description: Operations about commits
paths:
  /api/v4/projects/{id}/repository/commits:
    get:
      description: Get a project repository commits
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: query
        name: ref_name
        description: The name of a repository branch or tag, if not given the default branch is used
        required: false
        example: v1.1.0
        schema:
          type: string
      - in: query
        name: since
        description: Only commits after or on this date will be returned
        required: false
        example: '2021-09-20T11:50:22.001'
        schema:
          type: string
          format: date-time
      - in: query
        name: until
        description: Only commits before or on this date will be returned
        required: false
        example: '2021-09-20T11:50:22.001'
        schema:
          type: string
          format: date-time
      - in: query
        name: path
        description: The file path
        required: false
        example: README.md
        schema:
          type: string
      - in: query
        name: follow
        description: Follow file renames when filtering by path
        required: false
        schema:
          type: boolean
      - in: query
        name: author
        description: Search commits by commit author
        required: false
        example: John Smith
        schema:
          type: string
      - in: query
        name: all
        description: Every commit will be returned
        required: false
        schema:
          type: boolean
      - in: query
        name: with_stats
        description: Stats about each commit will be added to the response
        required: false
        schema:
          type: boolean
      - in: query
        name: first_parent
        description: Only include the first parent of merges
        required: false
        schema:
          type: boolean
      - in: query
        name: order
        description: List commits in order
        required: false
        schema:
          type: string
          enum:
          - default
          - topo
          default: default
      - in: query
        name: trailers
        description: Parse and include Git trailers for every commit
        required: false
        schema:
          type: boolean
          default: false
      - in: query
        name: page
        description: Current page number
        required: false
        example: 1
        schema:
          type: integer
          format: int32
          default: 1
      - in: query
        name: per_page
        description: Number of items per page
        required: false
        example: 20
        schema:
          type: integer
          format: int32
          default: 20
      responses:
        '200':
          description: Get a project repository commits
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_Commit'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
      tags:
      - commits
      operationId: getApiV4ProjectsIdRepositoryCommits
    post:
      summary: Create a new commit
      description: This feature was introduced in GitLab 8.13
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Create a new commit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_CommitDetail'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
      tags:
      - commits
      operationId: postApiV4ProjectsIdRepositoryCommits
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postApiV4ProjectsIdRepositoryCommits'
        required: true
  /api/v4/projects/{id}/repository/commits/{sha}:
    get:
      description: Get a specific commit of a project
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: A commit sha, or the name of a branch or tag
        required: true
        schema:
          type: string
      - in: query
        name: stats
        description: Include commit stats
        required: false
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: Get a specific commit of a project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_CommitDetail'
        '404':
          description: Not found
      tags:
      - commits
      operationId: getApiV4ProjectsIdRepositoryCommitsSha
  /api/v4/projects/{id}/repository/commits/{sha}/diff:
    get:
      description: Get the diff for a specific commit of a project
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: A commit sha, or the name of a branch or tag
        required: true
        schema:
          type: string
      - in: query
        name: page
        description: Current page number
        required: false
        example: 1
        schema:
          type: integer
          format: int32
          default: 1
      - in: query
        name: per_page
        description: Number of items per page
        required: false
        example: 20
        schema:
          type: integer
          format: int32
          default: 20
      - in: query
        name: unidiff
        description: A diff in a Unified diff format
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Get the diff for a specific commit of a project
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_Diff'
        '404':
          description: Not found
      tags:
      - commits
      operationId: getApiV4ProjectsIdRepositoryCommitsShaDiff
  /api/v4/projects/{id}/repository/commits/{sha}/comments:
    get:
      description: Get a commit's comments
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: query
        name: page
        description: Current page number
        required: false
        example: 1
        schema:
          type: integer
          format: int32
          default: 1
      - in: query
        name: per_page
        description: Number of items per page
        required: false
        example: 20
        schema:
          type: integer
          format: int32
          default: 20
      - in: path
        name: sha
        description: A commit sha, or the name of a branch or tag
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get a commit's comments
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_CommitNote'
        '404':
          description: Not found
      tags:
      - commits
      operationId: getApiV4ProjectsIdRepositoryCommitsShaComments
    post:
      description: Post comment to commit
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: A commit sha, or the name of a branch or tag on which to post a comment
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Post comment to commit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_CommitNote'
        '400':
          description: Bad request
        '404':
          description: Not found
      tags:
      - commits
      operationId: postApiV4ProjectsIdRepositoryCommitsShaComments
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postApiV4ProjectsIdRepositoryCommitsShaComments'
        required: true
  /api/v4/projects/{id}/repository/commits/{sha}/sequence:
    get:
      description: Get the sequence count of a commit SHA
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: A commit SHA
        required: true
        schema:
          type: string
      - in: query
        name: first_parent
        description: Only include the first parent of merges
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Get the sequence count of a commit SHA
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_CommitSequence'
        '404':
          description: Not found
      tags:
      - commits
      operationId: getApiV4ProjectsIdRepositoryCommitsShaSequence
  /api/v4/projects/{id}/repository/commits/{sha}/cherry_pick:
    post:
      summary: Cherry pick commit into a branch
      description: This feature was introduced in GitLab 8.15
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: A commit sha, or the name of a branch or tag to be cherry-picked
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Cherry pick commit into a branch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_Commit'
        '400':
          description: Bad request
        '404':
          description: Not found
      tags:
      - commits
      operationId: postApiV4ProjectsIdRepositoryCommitsShaCherryPick
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postApiV4ProjectsIdRepositoryCommitsShaCherryPick'
        required: true
  /api/v4/projects/{id}/repository/commits/{sha}/revert:
    post:
      summary: Revert a commit in a branch
      description: This feature was introduced in GitLab 11.5
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: Commit SHA to revert
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Revert a commit in a branch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_Commit'
        '400':
          description: Bad request
        '404':
          description: Not found
      tags:
      - commits
      operationId: postApiV4ProjectsIdRepositoryCommitsShaRevert
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postApiV4ProjectsIdRepositoryCommitsShaRevert'
        required: true
  /api/v4/projects/{id}/repository/commits/{sha}/refs:
    get:
      summary: Get all references a commit is pushed to
      description: This feature was introduced in GitLab 10.6
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: A commit sha
        required: true
        schema:
          type: string
      - in: query
        name: type
        description: Scope
        required: false
        schema:
          type: string
          enum:
          - branch
          - tag
          - all
          default: all
      - in: query
        name: page
        description: Current page number
        required: false
        example: 1
        schema:
          type: integer
          format: int32
          default: 1
      - in: query
        name: per_page
        description: Number of items per page
        required: false
        example: 20
        schema:
          type: integer
          format: int32
          default: 20
      responses:
        '200':
          description: Get all references a commit is pushed to
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_BasicRef'
        '404':
          description: Not found
      tags:
      - commits
      operationId: getApiV4ProjectsIdRepositoryCommitsShaRefs
  /api/v4/projects/{id}/repository/commits/{sha}/merge_requests:
    get:
      description: Get Merge Requests associated with a commit
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: A commit sha, or the name of a branch or tag on which to find Merge Requests
        required: true
        schema:
          type: string
      - in: query
        name: state
        description: Filter merge-requests by state
        required: false
        example: merged
        schema:
          type: string
      - in: query
        name: page
        description: Current page number
        required: false
        example: 1
        schema:
          type: integer
          format: int32
          default: 1
      - in: query
        name: per_page
        description: Number of items per page
        required: false
        example: 20
        schema:
          type: integer
          format: int32
          default: 20
      responses:
        '200':
          description: Get Merge Requests associated with a commit
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_MergeRequestBasic'
        '404':
          description: Not found
      tags:
      - commits
      operationId: getApiV4ProjectsIdRepositoryCommitsShaMergeRequests
  /api/v4/projects/{id}/repository/commits/{sha}/signature:
    get:
      description: Get a commit's signature
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project
        required: true
        schema:
          type: string
      - in: path
        name: sha
        description: A commit sha, or the name of a branch or tag
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get a commit's signature
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_CommitSignature'
        '404':
          description: Not found
      tags:
      - commits
      operationId: getApiV4ProjectsIdRepositoryCommitsShaSignature
components:
  schemas:
    API_Entities_UserBasic:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        username:
          type: string
          example: admin
        public_email:
          type: string
          example: john@example.com
        name:
          type: string
          example: Administrator
        state:
          type: string
          example: active
        locked:
          type: boolean
        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
      required:
      - id
      - username
      - public_email
      - name
      - state
      - locked
      - avatar_url
      - web_url
      description: API_Entities_UserBasic model
    API_Entities_CommitNote:
      type: object
      properties:
        note:
          type: string
          example: this doc is really nice
        path:
          type: string
          example: README.md
        line:
          type: integer
          format: int32
          example: 11
        line_type:
          type: string
          example: new
        author:
          $ref: '#/components/schemas/API_Entities_UserBasic'
        created_at:
          type: string
          format: date-time
          example: '2016-01-19T09:44:55.600Z'
      required:
      - note
      - path
      - line
      - line_type
      - author
      - created_at
      description: API_Entities_CommitNote model
    postApiV4ProjectsIdRepositoryCommitsShaRevert:
      type: object
      properties:
        branch:
          type: string
          description: Target branch name
          example: master
        dry_run:
          type: boolean
          description: Does not commit any changes
          default: false
      required:
      - branch
      description: Revert a commit in a branch
    API_Entities_TaskCompletionStatus:
      type: object
      properties:
        count:
          type: integer
          format: int32
          example: 5
        completed_count:
          type: integer
          format: int32
          example: 3
      required:
      - count
      - completed_count
    postApiV4ProjectsIdRepositoryCommits:
      type: object
      properties:
        file:
          type: string
          description: The commit content to be created (generated by Multipart middleware)
          format: binary
      required:
      - file
      description: Create a new commit
    postApiV4ProjectsIdRepositoryCommitsShaCherryPick:
      type: object
      properties:
        branch:
          type: string
          description: The name of the branch
          example: master
        dry_run:
          type: boolean
          description: Does not commit any changes
          default: false
        message:
          type: string
          description: A custom commit message to use for the picked commit
          example: Initial commit
      required:
      - branch
      description: Cherry pick commit into a branch
    API_Entities_CommitSequence:
      type: object
      properties:
        count:
          type: integer
          format: int32
          example: 1
      required:
      - count
      description: API_Entities_CommitSequence model
    API_Entities_Ci_PipelineBasic:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        iid:
          type: integer
          format: int32
          example: 2
        project_id:
          type: integer
          format: int32
          example: 3
        sha:
          type: string
          example: 0ec9e58fdfca6cdd6652c083c9edb53abc0bad52
        ref:
          type: string
          example: feature-branch
        status:
          type: string
          example: success
        source:
          type: string
          example: push
        created_at:
          type: string
          format: date-time
          example: '2022-10-21T16:49:48.000+02:00'
        updated_at:
          type: string
          format: date-time
          example: '2022-10-21T16:49:48.000+02:00'
        web_url:
          type: string
          example: https://gitlab.example.com/gitlab-org/gitlab-foss/-/pipelines/61
      required:
      - id
      - iid
      - project_id
      - sha
      - ref
      - status
      - source
      - created_at
      - updated_at
      - web_url
      description: API_Entities_Ci_PipelineBasic model
    API_Entities_IssuableReferences:
      type: object
      properties:
        short:
          type: string
          example: '&6'
        relative:
          type: string
          example: '&6'
        full:
          type: string
          example: test&6
      required:
      - short
      - relative
      - full
    API_Entities_CommitStats:
      type: object
      properties:
        additions:
          type: integer
          format: int32
          example: 1
        deletions:
          type: integer
          format: int32
          example: 0
        total:
          type: integer
          format: int32
          example: 1
      required:
      - additions
      - deletions
      - total
    API_Entities_BasicRef:
      type: object
      properties:
        type:
          type: string
          example: tag
        name:
          type: string
          example: v1.1.0
      required:
      - type
      - name
      description: API_Entities_BasicRef model
    API_Entities_Diff:
      type: object
      properties:
        diff:
          type: string
          example: '@@ -71,6 +71,8 @@\n...'
        collapsed:
          type: boolean
        too_large:
          type: boolean
        new_path:
          type: string
          example: doc/update/5.4-to-6.0.md
        old_path:
          type: string
          example: doc/update/5.4-to-6.0.md
        a_mode:
          type: string
          example: '100755'
        b_mode:
          type: string
          example: '100644'
        new_file:
          type: boolean
        renamed_file:
          type: boolean
        deleted_file:
          type: boolean
        generated_file:
          type: boolean
      required:
      - diff
      - collapsed
      - too_large
      - new_path
      - old_path
      - a_mode
      - b_mode
      - new_file
      - renamed_file
      - deleted_file
      - generated_file
      description: API_Entities_Diff model
    postApiV4ProjectsIdRepositoryCommitsShaComments:
      type: object
      properties:
        note:
          type: string
          description: The text of the comment
          example: Nice code!
        path:
          type: string
          description: The file path
          example: doc/update/5.4-to-6.0.md
        line:
          type: integer
          format: int32
          description: The line number
          example: 11
        line_type:
          type: string
          description: The type of the line
          enum:
          - new
          - old
          default: new
      required:
      - note
      - line
      - line_type
      description: Post comment to commit
    API_Entities_MergeRequestBasic:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 84
        iid:
          type: integer
          format: int32
          example: 14
        project_id:
          type: integer
          format: int32
          example: 4
        title:
          type: string
          example: Impedit et ut et dolores vero provident ullam est
        description:
          type: string
          example: Repellendus impedit et vel velit dignissimos.
        state:
          type: string
          example: closed
        created_at:
          type: string
          format: date-time
          example: '2022-08-17T12:46:35.053Z'
        updated_at:
          type: string
          format: date-time
          example: '2022-11-14T17:22:01.470Z'
        merged_by:
          $ref: '#/components/schemas/API_Entities_UserBasic'
        merge_user:
          $ref: '#/components/schemas/API_Entities_UserBasic'
        merged_at:
          type: string
          format: date-time
          example: '2022-01-31T15:10:45.080Z'
        closed_by:
          $ref: '#/components/schemas/API_Entities_UserBasic'
        closed_at:
          type: string
          format: date-time
          example: '2022-01-31T15:10:45.080Z'
        title_html:
          type: string
        description_html:
          type: string
        target_branch:
          type: string
        source_branch:
          type: string
        user_notes_count:
          type: integer
          format: int32
        upvotes:
          type: integer
          format: int32
        downvotes:
          type: integer
          format: int32
        author:
          $ref: '#/components/schemas/API_Entities_UserBasic'
        assignees:
          $ref: '#/components/schemas/API_Entities_UserBasic'
        assignee:
          $ref: '#/components/schemas/API_Entities_UserBasic'
        reviewers:
          $ref: '#/components/schemas/API_Entities_UserBasic'
        source_project_id:
          type: integer
          format: int32
        target_project_id:
          type: integer
          format: int32
        labels:
          type: array
          items:
            type: string
        draft:
          type: boolean
        imported:
          type: boolean
        imported_from:
          type: string
          example: bitbucket
        work_in_progress:
          type: boolean
        milestone:
          $ref: '#/components/schemas/API_Entities_Milestone'
        merge_when_pipeline_succeeds:
          type: boolean
        merge_status:
          type: string
          example: unchecked
        detailed_merge_status:
          type: string
          example: mergeable
        merge_after:
          type: string
          format: date-time
          example: '2022-01-31T15:10:45.080Z'
        sha:
          type: string
          example: 1234abcd
        merge_commit_sha:
          type: string
          example: 1234abcd
        squash_commit_sha:
          type: string
          example: 1234abcd
        discussion_locked:
          type: boolean
        should_remove_source_branch:
          type: boolean
        force_remove_source_branch:
          type: boolean
        prepared_at:
          type: string
          format: date-time
          example: '2022-01-31T15:10:45.080Z'
        allow_collaboration:
          type: boolean
        allow_maintainer_to_push:
          type: boolean
        reference:
          type: string
          example: '!1'
        references:
          $ref: '#/components/schemas/API_Entities_IssuableReferences'
        web_url:
          type: string
          example: https://gitlab.example.com/my-group/my-project/-/merge_requests/1
        time_stats:
          $ref: '#/components/schemas/API_Entities_IssuableTimeStats'
        squash:
          type: boolean
        squash_on_merge:
          type: boolean
        task_completion_status:
          $ref: '#/components/schemas/API_Entities_TaskCompletionStatus'
        has_conflicts:
          type: boolean
        blocking_discussions_resolved:
          type: boolean
        approvals_before_merge:
          type: integer
          format: int32
          example: 2
      required:
      - id
      - iid
      - project_id
      - title
      - description
      - state
      - created_at
      - updated_at
      - merged_by
      - merge_user
      - merged_at
      - closed_by
      - closed_at
      - target_branch
      - source_branch
      - user_notes_count
      - upvotes
      - downvotes
      - author
      - assignees
      - assignee
      - reviewers
      - source_project_id
      - target_project_id
      - labels
      - draft
      - imported
      - imported_from
      - work_in_progress
      - milestone
      - merge_when_pipeline_succeeds
      - merge_status
      - detailed_merge_status
      - merge_after
      - sha
      - merge_commit_sha
      - squash_commit_sha
      - discussion_locked
      - should_remove_source_branch
      - force_remove_source_branch
      - prepared_at
      - reference
      - references
      - web_url
      - time_stats
      - squash
      - squash_on_merge
      - task_completion_status
      - has_conflicts
      - blocking_discussions_resolved
      - approvals_before_merge
      description: API_Entities_MergeRequestBasic model
    API_Entities_CommitSignature:
      type: object
      properties:
        signature_type:
          type: string
          example: PGP
        signature:
          type: object
        commit_source:
          type: string
          example: gitaly
      required:
      - signature_type
      - signature
      - commit_source
      description: API_Entities_CommitSignature model
    API_Entities_IssuableTimeStats:
      type: object
      properties:
        time_estimate:
          type: integer
          format: int32
          example: 12600
        total_time_spent:
          type: integer
          format: int32
          example: 3600
        human_time_estimate:
          type: string
          example: 3h 30m
        human_total_time_spent:
          type: string
          example: 1h
      required:
      - time_estimate
      - total_time_spent
      - human_time_estimate
      - human_total_time_spent
      description: API_Entities_IssuableTimeStats model
    API_Entities_CustomAttribute:
      type: object
      properties:
        key:
          type: string
          example: foo
        value:
          type: string
          example: bar
      required:
      - key
      - value
      description: API_Entities_CustomAttribute model
    API_Entities_CommitDetail:
      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.000+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
          example:
            Merged-By: Jane Doe janedoe@gitlab.com
        extended_trailers:
          type: object
          example:
            Signed-off-by:
            - John Doe <johndoe@gitlab.com>
            - Jane Doe <janedoe@gitlab.com>
        web_url:
          type: string
          example: https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746
        stats:
          $ref: '#/components/schemas/API_Entities_CommitStats'
        status:
          type: string
          example: success
        project_id:
          type: integer
          format: int32
          example: 1
        last_pipeline:
          $ref: '#/components/schemas/API_Entities_Ci_PipelineBasic'
      required:
  

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gitlab-ci/refs/heads/main/openapi/gitlab-ci-commits-api-openapi.yml