Project relations export API
DETAILS: Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
- Introduced in GitLab 14.4 behind the
bulk_importfeature flag, disabled by default.- New application setting
bulk_import_enabledintroduced in GitLab 15.8.bulk_importfeature flag removed.
The project relations export API partially exports a project's structure as separate files for each top-level relation (for example, milestones, issues, and labels).
The project relations export API is primarily used in group migration can't be used with the project import and export API.
Schedule new export
Start a new project relations export:
POST /projects/:id/export_relations
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer/string | yes | ID of the project owned by the authenticated user. |
batched |
boolean | no | Whether to export in batches. |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/export_relations"
{
"message": "202 Accepted"
}
Export status
View the status of the relations export:
GET /projects/:id/export_relations/status
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer/string | yes | ID of the project owned by the authenticated user. |
relation |
string | no | Name of the project top-level relation to view. |
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/export_relations/status"
The status can be one of the following:
-
0-started -
1-finished -
-1-failed
[
{
"relation": "project_badges",
"status": 1,
"error": null,
"updated_at": "2021-05-04T11:25:20.423Z",
"batched": true,
"batches_count": 1,
"batches": [
{
"status": 1,
"batch_number": 1,
"objects_count": 1,
"error": null,
"updated_at": "2021-05-04T11:25:20.423Z"
}
]
},
{
"relation": "boards",
"status": 1,
"error": null,
"updated_at": "2021-05-04T11:25:20.085Z",
"batched": false,
"batches_count": 0
}
]
Export download
Download the finished relations export:
GET /projects/:id/export_relations/download
| Attribute | Type | Required | Description |
|---|---|---|---|
id |
integer/string | yes | ID of the project owned by the authenticated user. |
relation |
string | yes | Name of the project top-level relation to download. |
batched |
boolean | no | Whether the export is batched. |
batch_number |
integer | no | Number of export batch to download. |
curl --header "PRIVATE-TOKEN: <your_access_token>" --remote-header-name \
--remote-name "https://gitlab.example.com/api/v4/projects/1/export_relations/download?relation=labels"
ls labels.ndjson.gz
labels.ndjson.gz