Group placeholder reassignments API

{{< details >}}

  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

{{< history >}}

  • Introduced in GitLab 17.10 with a flag named importer_user_mapping_reassignment_csv. Enabled by default.
  • Generally available in GitLab 18.0. Feature flag importer_user_mapping_reassignment_csv removed.

{{< /history >}}

Prerequisites:

  • You must have the Owner role for the group.

Use the following endpoints to reassign placeholder users in bulk without using the UI.

{{< alert type=”note” >}}

User contribution mapping is not supported when you import projects to a personal namespace. When you import to a personal namespace, all contributions are assigned to a single non-functional user called Import User and they cannot be reassigned. Issue 525342 proposes to map all contributions to the importing user instead.

{{< /alert >}}

Download the CSV file

Download a CSV file of pending reassignments.

GET /groups/:id/placeholder_reassignments

Supported attributes:

Attribute Type Required Description
id integer or string yes ID of the group or URL-encoded path of the group.

Example request:

curl \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/2/placeholder_reassignments"

Example response:

Source host,Import type,Source user identifier,Source user name,Source username,GitLab username,GitLab public email
http://gitlab.example,gitlab_migration,11,Bob,bob,"",""
http://gitlab.example,gitlab_migration,9,Alice,alice,"",""

Reassign placeholders

Complete the CSV file and upload it to reassign placeholder users.

POST /groups/:id/placeholder_reassignments

Supported attributes:

Attribute Type Required Description
id integer or string yes ID of the group or URL-encoded path of the group.

Example request:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
  --form "file=@placeholder_reassignments_for_group_2_1741253695.csv" \
  "http://gdk.test:3000/api/v4/groups/2/placeholder_reassignments"

Example response:

{"message":"The file is being processed and you will receive an email when completed."}