Group Relations Export API

With the Group Relations Export API, you can partially export group structure. This API is similar to group export, but it exports each top-level relation (for example, milestones/boards/labels) as a separate file instead of one archive. The group relations export API is primarily used in group migration.

Schedule new export

Start a new group relations export:

POST /groups/:id/export_relations
Attribute Type Required Description
id integer/string yes ID of the group owned by the authenticated user.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/export_relations"
{
  "message": "202 Accepted"
}

Export status

View the status of the relations export:

GET /groups/:id/export_relations/status
Attribute Type Required Description
id integer/string yes ID of the group owned by the authenticated user.
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/groups/1/export_relations/status"

The status can be one of the following:

  • 0: started
  • 1: finished
  • -1: failed

  • 0 - started
  • 1 - finished
  • -1 - failed
[
  {
    "relation": "badges",
    "status": 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"
  }
]

Export download

Download the finished relations export:

GET /groups/:id/export_relations/download
Attribute Type Required Description
id integer/string yes ID of the group owned by the authenticated user.
relation string yes Name of the group top-level relation to download.
curl --header "PRIVATE-TOKEN: <your_access_token>" --remote-header-name \
     --remote-name "https://gitlab.example.com/api/v4/groups/1/export_relations/download?relation=labels"
ls labels.ndjson.gz
labels.ndjson.gz