Merge request context commits API

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

If your merge request builds upon a previous merge request, you might need to include previously-merged commits for context in your merge request. Use this API to add commits to a merge request for more context.

List context commits for a merge request

Lists context commits for a single merge request.

GET /projects/:id/merge_requests/:merge_request_iid/context_commits

Parameters:

AttributeTypeRequiredDescription
idintegerYesThe ID or URL-encoded path of the project.
merge_request_iidintegerYesThe internal ID of the merge request.

Example request:

shell
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/15/merge_requests/12/context_commits"

Example response:

json
[
    {
        "id": "4a24d82dbca5c11c61556f3b35ca472b7463187e",
        "short_id": "4a24d82d",
        "created_at": "2017-04-11T10:08:59.000Z",
        "parent_ids": null,
        "title": "Update README.md to include usage in testing and development",
        "message": "Update README.md to include usage in testing and development",
        "author_name": "Example User",
        "author_email": "user@example.com",
        "authored_date": "2017-04-11T10:08:59.000Z",
        "committer_name": "Example User",
        "committer_email": "user@example.com",
        "committed_date": "2017-04-11T10:08:59.000Z",
        "trailers": {},
        "extended_trailers": null,
        "web_url": "https://gitlab.example.com/example/project/-/commit/4a24d82dbca5c11c61556f3b35ca472b7463187e",
        "author": {
            "id": 1,
            "username": "example",
            "public_email": null,
            "name": "Example User",
            "state": "active",
            "locked": false,
            "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
            "web_url": "https://gitlab.example.com/example",
            "show_status": false,
            "path": "/example"
        },
        "author_gravatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
        "commit_url": "https://gitlab.example.com/example/project/-/commit/4a24d82dbca5c11c61556f3b35ca472b7463187e",
        "commit_path": "/example/project/-/commit/4a24d82dbca5c11c61556f3b35ca472b7463187e",
        "description_html": "",
        "title_html": "Update README.md to include usage in testing and development",
        "signature_html": null,
        "prev_commit_id": null,
        "next_commit_id": null,
        "pipeline_status_path": null
    }
]

Create context commits for a merge request

The availability of the rate limit is controlled by a feature flag. For more information, see the history.

Creates context commits for a single merge request.

This endpoint is rate limited for each user. The limit is 10 requests each minute. Requests to delete context commits count toward the same limit. When you exceed the limit, the endpoint returns 429 Too Many Requests.

POST /projects/:id/merge_requests/:merge_request_iid/context_commits

Parameters:

AttributeTypeRequiredDescription
idintegerYesThe ID or URL-encoded path of the project
merge_request_iidintegerYesThe internal ID of the merge request.
commitsstring arrayYesThe context commits’ SHAs.

Example request:

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --data '{"commits": ["51856a574ac3302a95f82483d6c7396b1e0783cb"]}' \
  --url "https://gitlab.example.com/api/v4/projects/15/merge_requests/12/context_commits"

Example response:

json
[
    {
        "id": "51856a574ac3302a95f82483d6c7396b1e0783cb",
        "short_id": "51856a57",
        "created_at": "2014-02-27T10:05:10.000+02:00",
        "parent_ids": [
            "57a82e2180507c9e12880c0747f0ea65ad489515"
        ],
        "title": "Commit title",
        "message": "Commit message",
        "author_name": "Example User",
        "author_email": "user@example.com",
        "authored_date": "2014-02-27T10:05:10.000+02:00",
        "committer_name": "Example User",
        "committer_email": "user@example.com",
        "committed_date": "2014-02-27T10:05:10.000+02:00",
        "trailers": {},
        "web_url": "https://gitlab.example.com/project/path/-/commit/b782f6c553653ab4e16469ff34bf3a81638ac304"
    }
]

Delete context commits from a merge request

The availability of the rate limit is controlled by a feature flag. For more information, see the history.

Deletes context commits from a single merge request.

This endpoint is rate limited for each user. The limit is 10 requests each minute. Requests to create context commits count toward the same limit. When you exceed the limit, the endpoint returns 429 Too Many Requests.

DELETE /projects/:id/merge_requests/:merge_request_iid/context_commits

Parameters:

AttributeTypeRequiredDescription
commitsstring arrayYesThe context commits’ SHA.
idintegerYesThe ID or URL-encoded path of the project.
merge_request_iidintegerYesThe internal ID of the merge request.