Project remote mirrors API
Push mirrors defined on a project’s repository settings are called “remote mirrors”, and the state of these mirrors can be queried and modified via the remote mirror API outlined below.
List a project’s remote mirrors
Introduced in GitLab 12.9.
Returns an Array of remote mirrors and their statuses:
GET /projects/:id/remote_mirrors
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" 'https://gitlab.example.com/api/v4/projects/42/remote_mirrors'
Example response:
[
{
"enabled": true,
"id": 101486,
"last_error": null,
"last_successful_update_at": "2020-01-06T17:32:02.823Z",
"last_update_at": "2020-01-06T17:32:02.823Z",
"last_update_started_at": "2020-01-06T17:31:55.864Z",
"only_protected_branches": true,
"update_status": "finished",
"url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git"
}
]
Note:
For security reasons, the
url
attribute will always be scrubbed of username
and password information.Create a remote mirror
Introduced in GitLab 12.9.
Create a remote mirror for a project. The mirror will be disabled by default. You can enable it by including the optional parameter enabled
when creating it:
POST /projects/:id/remote_mirrors
Attribute | Type | Required | Description |
---|---|---|---|
url
| String | yes | The URL of the remote repository to be mirrored. |
enabled
| Boolean | no | Determines if the mirror is enabled. |
only_protected_branches
| Boolean | no | Determines if only protected branches are mirrored. |
Example request:
curl --request POST --data "url=https://username:token@example.com/gitlab/example.git" --header "PRIVATE-TOKEN: <your_access_token>" 'https://gitlab.example.com/api/v4/projects/42/remote_mirrors'
Example response:
{
"enabled": false,
"id": 101486,
"last_error": null,
"last_successful_update_at": null,
"last_update_at": null,
"last_update_started_at": null,
"only_protected_branches": false,
"update_status": "none",
"url": "https://*****:*****@example.com/gitlab/example.git"
}
Update a remote mirror’s attributes
Introduced in GitLab 12.9.
Toggle a remote mirror on or off, or change which types of branches are mirrored:
PUT /projects/:id/remote_mirrors/:mirror_id
Attribute | Type | Required | Description |
---|---|---|---|
mirror_id
| Integer | yes | The remote mirror ID. |
enabled
| Boolean | no | Determines if the mirror is enabled. |
only_protected_branches
| Boolean | no | Determines if only protected branches are mirrored. |
Example request:
curl --request PUT --data "enabled=false" --header "PRIVATE-TOKEN: <your_access_token>" 'https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486'
Example response:
{
"enabled": false,
"id": 101486,
"last_error": null,
"last_successful_update_at": "2020-01-06T17:32:02.823Z",
"last_update_at": "2020-01-06T17:32:02.823Z",
"last_update_started_at": "2020-01-06T17:31:55.864Z",
"only_protected_branches": true,
"update_status": "finished",
"url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git"
}
Help and feedback
If there's something you don't like about this feature
To propose functionality that GitLab does not yet offer
To further help GitLab in shaping new features
If you didn't find what you were looking for
If you want help with something very specific to your use case, and can use some community support
POST ON GITLAB FORUM
If you have problems setting up or using this feature (depending on your GitLab subscription)
REQUEST SUPPORT
To view all GitLab tiers and features or to upgrade
If you want to try all features available in GitLab.com
If you want to try all features available in GitLab self-managed
If you spot an error or a need for improvement and would like to fix it yourself in a merge request
EDIT THIS PAGE
If you would like to suggest an improvement to this doc