グループのインポート/エクスポートAPI
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、グループの構造を移行できます。このAPIをプロジェクトインポートおよびエクスポートAPIと組み合わせて使用すると、プロジェクトイシューとグループエピック間の関連性など、グループレベルの関連性を保持できます。
グループエクスポートには以下が含まれます:
- グループマイルストーン
- グループボード
- グループラベル
- グループバッジ
- グループメンバー
- グループイベント
- グループWiki(PremiumおよびUltimateのみ)
- サブグループ。各サブグループには、リスト内の以前のデータがすべて含まれます。
インポートされたプロジェクトからグループレベルの関連性を維持するには、まずグループエクスポートとインポートを実行する必要があります。この方法で、プロジェクトエクスポートを目的のグループ構造にインポートできます。
イシュー405168のため、インポートされたグループは、親グループにインポートしない限り、private表示レベルになります。デフォルトでは、グループを親グループにインポートすると、サブグループは親と同じ表示レベルを継承します。
インポートされたグループのメンバーリストとそれぞれの権限を保持するには、これらのグループのユーザーをレビューしてください。目的のグループをインポートする前に、これらのユーザーが存在することを確認してください。
グループエクスポートを作成する
指定したグループのグループエクスポートを作成します。
POST /groups/:id/export| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | グループのID。 |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/1/export"{
"message": "202 Accepted"
}グループエクスポートのダウンロードを取得
指定したグループのエクスポートされたアーカイブを取得する。
GET /groups/:id/export/download| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | グループのID。 |
group=1
token=secret
curl --request GET \
--header "PRIVATE-TOKEN: ${token}" \
--output download_group_${group}.tar.gz \
--url "https://gitlab.example.com/api/v4/groups/${group}/export/download"ls *export.tar.gz
2020-12-05_22-11-148_namespace_export.tar.gzグループのエクスポートにかかる時間は、グループのサイズによって異なる場合があります。このエンドポイントは以下を返します:
- エクスポートされたアーカイブ(利用可能な場合)
- 404メッセージ
グループインポートを作成する
ファイルをアップロードしてグループインポートを作成します。
最大インポートファイルサイズは、GitLab Self-Managedの管理者によって設定できます(デフォルトは0(無制限)です)。管理者は、最大インポートファイルサイズを次のいずれかの方法で変更できます:
- 管理者エリアで。
- アプリケーション設定APIの
max_import_sizeオプションを使用します。
GitLab.comでの最大インポートファイルサイズについては、アカウントと制限設定を参照してください。
POST /groups/import| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
file | 文字列 | はい | アップロードするファイル。 |
name | 文字列 | はい | インポートするグループの名前。 |
path | 文字列 | はい | 新しいグループの名前とパス。 |
parent_id | 整数 | いいえ | グループをインポートする親グループのID。指定しない場合、現在のユーザーのネームスペースにデフォルト設定されます。 |
ファイルシステムからファイルをアップロードするには、--form引数を使用します。これにより、cURLはヘッダーContent-Type: multipart/form-dataを使用してデータを送信します。file=パラメータは、ファイルシステムのファイルを指しており、先頭に@を付ける必要があります。例:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--form "name=imported-group" \
--form "path=imported-group" \
--form "file=@/path/to/file" \
--url "https://gitlab.example.com/api/v4/groups/import"