gitlab-org--gitlab-foss/doc/api/group_import_export.md

2.8 KiB

Group Import/Export API

Introduced in GitLab 12.8 as an experimental feature. May change in future releases.

Group Import/Export functionality allows to export group structure and import it at a new location. Used in combination with Project Import/Export it allows you to preserve connections with group level relations (e.g. a connection between a project issue and group epic).

Group Export includes:

  1. Group Milestones
  2. Group Boards
  3. Group Labels
  4. Group Badges
  5. Group Members
  6. Sub-groups (each sub-group includes all data above)

Schedule new export

Start a new group export.

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

Export download

Download the finished export.

GET /groups/:id/export/download
Attribute Type Required Description
id integer/string yes ID of the group owned by the authenticated user
curl --header "PRIVATE-TOKEN: <your_access_token>" --remote-header-name --remote-name https://gitlab.example.com/api/v4/groups/1/export/download
ls *export.tar.gz
2020-12-05_22-11-148_namespace_export.tar.gz

Time spent on exporting a group may vary depending on a size of the group. Export download endpoint will return exported archive once it is available. 404 is returned otherwise.

Import a file

POST /groups/import
Attribute Type Required Description
name string yes The name of the group to be imported
path string yes Name and path for new group
file string yes The file to be uploaded
parent_id integer no ID of a parent group that the group will be imported into. Defaults to the current user's namespace if not provided.

To upload a file from your file system, use the --form argument. This causes cURL to post data using the header Content-Type: multipart/form-data. The file= parameter must point to a file on your file system and be preceded by @. For example:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "name=imported-group" --form "path=imported-group" --form "file=@/path/to/file" https://gitlab.example.com/api/v4/groups/import