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."}