保護ブランチAPI
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、リポジトリのブランチ保護を管理します。
GitLab PremiumとGitLab Ultimateでは、ブランチへのプッシュに対する、よりきめ細かい保護がサポートされています。管理者は、特定のユーザーの代わりに、デプロイキーのみに保護ブランチを変更およびプッシュする権限を付与できます。
有効なアクセスレベル
ProtectedRefAccess.allowed_access_levelsメソッドは、次のアクセスレベルを定義します。
0: アクセスなし30: デベロッパーロール40: メンテナーロール60: 管理者
保護ブランチのリスト
UIで定義されているように、プロジェクトから保護されたブランチのリストを取得します。ワイルドカードが設定されている場合、そのワイルドカードに一致するブランチの正確な名前の代わりに、ワイルドカードが返されます。
GET /projects/:id/protected_branchesサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのID、またはURLエンコードされたパス。 |
search | 文字列 | いいえ | 検索する保護ブランチの名前または名前の一部。 |
成功した場合は、200 OKと以下のレスポンス属性が返されます。
| 属性 | 型 | 説明 |
|---|---|---|
allow_force_push | ブール値 | trueの場合、このブランチで強制プッシュが許可されます。 |
code_owner_approval_required | ブール値 | trueの場合、このブランチへのプッシュにはコードオーナーの承認が必要です。 |
id | 整数 | 保護ブランチのID。 |
inherited | ブール値 | trueの場合、保護設定は親グループから継承されます。PremiumおよびUltimateのみ。 |
merge_access_levels | 配列 | マージアクセスレベルの設定の配列。 |
merge_access_levels[].access_level | 整数 | マージのアクセスレベル。 |
merge_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
merge_access_levels[].group_id | 整数 | マージアクセスを持つグループのID。PremiumおよびUltimateのみ。 |
merge_access_levels[].id | 整数 | マージアクセスレベルの設定のID。 |
merge_access_levels[].user_id | 整数 | マージアクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
name | 文字列 | 保護ブランチの名前。 |
push_access_levels | 配列 | プッシュアクセスレベルの設定の配列。 |
push_access_levels[].access_level | 整数 | プッシュのアクセスレベル。 |
push_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
push_access_levels[].deploy_key_id | 整数 | プッシュアクセスを持つデプロイキーのID。 |
push_access_levels[].group_id | 整数 | プッシュアクセスを持つグループのID。PremiumおよびUltimateのみ。 |
push_access_levels[].id | 整数 | プッシュアクセスレベルの設定のID。 |
push_access_levels[].user_id | 整数 | プッシュアクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
次のリクエストの例では、プロジェクトIDは5です。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches"次の応答例を示します。
- IDが
100と101の2つの保護ブランチ。 - IDが
1001、1002、および1003のpush_access_levels。 - IDが
2001と2002のmerge_access_levels。
[
{
"id": 100,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 40,
"access_level_description": "Maintainers"
},
{
"id": 1002,
"access_level": 40,
"access_level_description": "Deploy key",
"deploy_key_id": 1
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
},
{
"id": 101,
"name": "release/*",
"push_access_levels": [
{
"id": 1003,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"merge_access_levels": [
{
"id": 2002,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
]GitLab PremiumまたはUltimateのユーザーには、user_id、group_id、およびinheritedのパラメータも表示されます。inheritedパラメータが存在する場合、設定はプロジェクトのグループから継承されました。
次の応答例を示します。
- ID
100の1つの保護ブランチ。 - IDが
1001と1002のpush_access_levels。 - IDが
2001のmerge_access_levels。
[
{
"id": 101,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
},
{
"id": 1002,
"access_level": 40,
"access_level_description": "Deploy key",
"deploy_key_id": 1,
"user_id": null,
"group_id": null
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": null,
"user_id": null,
"group_id": 1234,
"access_level_description": "Example Merge Group"
}
],
"allow_force_push":false,
"code_owner_approval_required": false,
"inherited": true
}
]単一の保護ブランチまたはワイルドカード保護ブランチを取得します
単一の保護ブランチまたはワイルドカード保護ブランチを取得します。
GET /projects/:id/protected_branches/:nameサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのID、またはURLエンコードされたパス。 |
name | 文字列 | はい | ブランチまたはワイルドカードの名前。 |
成功した場合は、200 OKと以下のレスポンス属性が返されます。
| 属性 | 型 | 説明 |
|---|---|---|
allow_force_push | ブール値 | trueの場合、このブランチで強制プッシュが許可されます。 |
code_owner_approval_required | ブール値 | trueの場合、このブランチへのプッシュにはコードオーナーの承認が必要です。 |
id | 整数 | 保護ブランチのID。 |
merge_access_levels | 配列 | マージアクセスレベルの設定の配列。 |
merge_access_levels[].access_level | 整数 | マージのアクセスレベル。 |
merge_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
merge_access_levels[].group_id | 整数 | マージアクセスを持つグループのID。PremiumおよびUltimateのみ。 |
merge_access_levels[].id | 整数 | マージアクセスレベルの設定のID。 |
merge_access_levels[].user_id | 整数 | マージアクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
name | 文字列 | 保護ブランチの名前。 |
push_access_levels | 配列 | プッシュアクセスレベルの設定の配列。 |
push_access_levels[].access_level | 整数 | プッシュのアクセスレベル。 |
push_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
push_access_levels[].group_id | 整数 | プッシュアクセスを持つグループのID。PremiumおよびUltimateのみ。 |
push_access_levels[].id | 整数 | プッシュアクセスレベルの設定のID。 |
push_access_levels[].user_id | 整数 | プッシュアクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
次のリクエストの例では、プロジェクトIDは5、ブランチ名はmainです。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches/main"レスポンス例:
{
"id": 101,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}GitLab PremiumまたはUltimateのユーザーには、user_idおよびgroup_idのパラメータも表示されます。
レスポンス例:
{
"id": 101,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": null,
"user_id": null,
"group_id": 1234,
"access_level_description": "Example Merge Group"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}リポジトリのブランチを保護する
単一のリポジトリブランチ、またはワイルドカード保護ブランチを使用して複数のプロジェクトリポジトリブランチを保護します。
POST /projects/:id/protected_branchesサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのID、またはURLエンコードされたパス。 |
name | 文字列 | はい | ブランチまたはワイルドカードの名前。 |
allow_force_push | ブール値 | いいえ | trueの場合、このブランチにプッシュできるメンバーは、強制プッシュもできます。デフォルトはfalseです。 |
allowed_to_merge | 配列 | いいえ | マージアクセスレベルの配列。それぞれが{user_id: integer}、{group_id: integer}、または{access_level: integer}の形式のハッシュで記述されています。PremiumおよびUltimateのみ。 |
allowed_to_push | 配列 | いいえ | プッシュアクセスレベルの配列。それぞれが{user_id: integer}、{group_id: integer}、{deploy_key_id: integer}、または{access_level: integer}の形式のハッシュで記述されています。PremiumおよびUltimateのみ。 |
allowed_to_unprotect | 配列 | いいえ | 保護解除アクセスレベルの配列。それぞれが{user_id: integer}、{group_id: integer}、または{access_level: integer}の形式のハッシュで記述されています。アクセスレベルNo accessは、このフィールドでは使用できません。PremiumおよびUltimateのみ。 |
code_owner_approval_required | ブール値 | いいえ | trueの場合、CODEOWNERSファイルの項目と一致する場合、このブランチへのプッシュを防ぎます。デフォルトはfalseです。PremiumおよびUltimateのみ。 |
merge_access_level | 整数 | いいえ | マージを許可するアクセスレベル。デフォルトは40(メンテナーロール)です。 |
push_access_level | 整数 | いいえ | プッシュを許可するアクセスレベル。デフォルトは40(メンテナーロール)です。 |
unprotect_access_level | 整数 | いいえ | 保護解除を許可するアクセスレベル。デフォルトは40(メンテナーロール)です。 |
成功した場合は、201 Createdと以下のレスポンス属性が返されます。
| 属性 | 型 | 説明 |
|---|---|---|
allow_force_push | ブール値 | trueの場合、このブランチで強制プッシュが許可されます。 |
code_owner_approval_required | ブール値 | trueの場合、このブランチへのプッシュにはコードオーナーの承認が必要です。 |
id | 整数 | 保護ブランチのID。 |
merge_access_levels | 配列 | マージアクセスレベルの設定の配列。 |
merge_access_levels[].access_level | 整数 | マージのアクセスレベル。 |
merge_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
merge_access_levels[].group_id | 整数 | マージアクセスを持つグループのID。PremiumおよびUltimateのみ。 |
merge_access_levels[].id | 整数 | マージアクセスレベルの設定のID。 |
merge_access_levels[].user_id | 整数 | マージアクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
name | 文字列 | 保護ブランチの名前。 |
push_access_levels | 配列 | プッシュアクセスレベルの設定の配列。 |
push_access_levels[].access_level | 整数 | プッシュのアクセスレベル。 |
push_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
push_access_levels[].deploy_key_id | 整数 | プッシュアクセスを持つデプロイキーのID。 |
push_access_levels[].group_id | 整数 | プッシュアクセスを持つグループのID。PremiumおよびUltimateのみ。 |
push_access_levels[].id | 整数 | プッシュアクセスレベルの設定のID。 |
push_access_levels[].user_id | 整数 | プッシュアクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
unprotect_access_levels | 配列 | 保護解除アクセスレベルの設定の配列。 |
unprotect_access_levels[].access_level | 整数 | 保護解除のアクセスレベル。 |
unprotect_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
unprotect_access_levels[].group_id | 整数 | 保護解除アクセスを持つグループのID。PremiumおよびUltimateのみ。 |
unprotect_access_levels[].id | 整数 | 保護解除アクセスレベルの設定のID。 |
unprotect_access_levels[].user_id | 整数 | 保護解除アクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
次のリクエストの例では、プロジェクトIDは5で、ブランチ名は*-stableです。
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches?name=*-stable&push_access_level=30&merge_access_level=30&unprotect_access_level=40"応答の例を次に示します。
- ID
101の保護ブランチ。 - IDが
1001のpush_access_levels。 - IDが
2001のmerge_access_levels。 - IDが
3001のunprotect_access_levels。
{
"id": 101,
"name": "*-stable",
"push_access_levels": [
{
"id": 1001,
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}GitLab PremiumまたはUltimateのユーザーには、user_idとgroup_idのパラメータも表示されます。
次の応答例を示します。
- ID
101の保護ブランチ。 - IDが
1001のpush_access_levels。 - IDが
2001のmerge_access_levels。 - IDが
3001のunprotect_access_levels。
{
"id": 1,
"name": "*-stable",
"push_access_levels": [
{
"id": 1001,
"access_level": 30,
"user_id": null,
"group_id": null,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 30,
"user_id": null,
"group_id": null,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}ユーザープッシュアクセスとグループマージアクセスの例
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
allowed_to_push / allowed_to_merge / allowed_to_unprotect配列の要素は、{user_id: integer}、{group_id: integer}、または{access_level: integer}の形式をとる必要があります。各ユーザーはプロジェクトへのアクセス権を持ち、各グループはこのプロジェクトを共有する必要があります。これらのアクセスレベルにより、保護ブランチへのアクセスをよりきめ細かく制御できます。詳細については、グループ権限を設定するを参照してください。
次のリクエストの例では、ユーザープッシュアクセスとグループマージアクセスを持つ保護ブランチを作成します。user_idは2で、group_idは3です。
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches?name=*-stable&allowed_to_push%5B%5D%5Buser_id%5D=2&allowed_to_merge%5B%5D%5Bgroup_id%5D=3"次の応答例を示します。
- ID
101の保護ブランチ。 - IDが
1001のpush_access_levels。 - IDが
2001のmerge_access_levels。 - IDが
3001のunprotect_access_levels。
{
"id": 101,
"name": "*-stable",
"push_access_levels": [
{
"id": 1001,
"access_level": null,
"user_id": 2,
"group_id": null,
"access_level_description": "Administrator"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": null,
"user_id": null,
"group_id": 3,
"access_level_description": "Example Merge Group"
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}デプロイキーアクセスの例
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
allowed_to_push配列の要素は、{user_id: integer}、{group_id: integer}、{deploy_key_id: integer}、または{access_level: integer}の形式をとる必要があります。デプロイキーは、プロジェクトに対して有効になっており、プロジェクトリポジトリへの書き込みアクセス権を持っている必要があります。その他の要件については、保護ブランチへのプッシュをアクセスするためにデプロイキーを許可するを参照してください。
リクエスト例:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches?name=*-stable&allowed_to_push[][deploy_key_id]=1"次の応答例を示します。
- ID
101の保護ブランチ。 - IDが
1001のpush_access_levels。 - IDが
2001のmerge_access_levels。 - IDが
3001のunprotect_access_levels。
{
"id": 101,
"name": "*-stable",
"push_access_levels": [
{
"id": 1001,
"access_level": null,
"user_id": null,
"group_id": null,
"deploy_key_id": 1,
"access_level_description": "Deploy"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}プッシュとマージを許可するアクセスの例
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
リクエスト例:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"name": "main",
"allowed_to_push": [
{"access_level": 30}
],
"allowed_to_merge": [
{"access_level": 30},
{"access_level": 40}
]
}' \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches"次の応答例を示します。
- ID
105の保護ブランチ。 - IDが
1001のpush_access_levels。 - IDが
2001と2002のmerge_access_levels。 - IDが
3001のunprotect_access_levels。
{
"id": 105,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 30,
"access_level_description": "Developers + Maintainers",
"user_id": null,
"group_id": null
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 30,
"access_level_description": "Developers + Maintainers",
"user_id": null,
"group_id": null
},
{
"id": 2002,
"access_level": 40,
"access_level_description": "Maintainers",
"user_id": null,
"group_id": null
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"access_level_description": "Maintainers",
"user_id": null,
"group_id": null
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}保護解除アクセスアクセスレベルの例
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
特定のグループのみがブランチを保護解除できる保護ブランチを作成するには:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"name": "production",
"allowed_to_unprotect": [
{"group_id": 789}
]
}' \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches"複数の種類のユーザーがブランチを保護解除できるようにするには:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"name": "main",
"allowed_to_unprotect": [
{"user_id": 123},
{"group_id": 456},
{"access_level": 40}
]
}' \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches"この設定では、これらのユーザーはブランチを保護解除できます。
- ID
123のユーザー。 - ID
456のグループのメンバー。 - 少なくともメンテナーロール(アクセスレベル40)を持つユーザー。
リポジトリのブランチの保護を解除する
指定された保護ブランチまたはワイルドカード保護ブランチを保護解除します。
DELETE /projects/:id/protected_branches/:nameサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのID、またはURLエンコードされたパス。 |
name | 文字列 | はい | ブランチの名前。 |
成功すると、204 No Contentを返します。
次のリクエストの例では、プロジェクトIDは5で、ブランチ名は*-stableです。
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches/*-stable"保護ブランチを更新する
保護ブランチを更新します。
PATCH /projects/:id/protected_branches/:nameサポートされている属性:
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 整数または文字列 | はい | プロジェクトのID、またはURLエンコードされたパス。 |
name | 文字列 | はい | ブランチまたはワイルドカードの名前。 |
allow_force_push | ブール値 | いいえ | trueの場合、このブランチにプッシュできるメンバーは、強制プッシュもできます。 |
allowed_to_merge | 配列 | いいえ | マージアクセスレベルの配列。それぞれが{user_id: integer}、{group_id: integer}、または{access_level: integer}の形式のハッシュで記述されています。PremiumおよびUltimateのみ。 |
allowed_to_push | 配列 | いいえ | プッシュアクセスレベルの配列。それぞれが{user_id: integer}、{group_id: integer}、{deploy_key_id: integer}、または{access_level: integer}の形式のハッシュで記述されています。PremiumおよびUltimateのみ。 |
allowed_to_unprotect | 配列 | いいえ | 保護解除アクセスレベルの配列。それぞれが{user_id: integer}、{group_id: integer}、{access_level: integer}、または既存のアクセスレベルを削除するための{id: integer, _destroy: true}の形式のハッシュで記述されています。アクセスレベルNo accessは、このフィールドでは使用できません。PremiumおよびUltimateのみ。 |
code_owner_approval_required | ブール値 | いいえ | trueの場合、CODEOWNERSファイルの項目と一致する場合、このブランチへのプッシュを防ぎます。PremiumおよびUltimateのみ。 |
成功した場合は、200 OKと以下のレスポンス属性が返されます。
| 属性 | 型 | 説明 |
|---|---|---|
allow_force_push | ブール値 | trueの場合、このブランチで強制プッシュが許可されます。 |
code_owner_approval_required | ブール値 | trueの場合、このブランチへのプッシュにはコードオーナーの承認が必要です。 |
id | 整数 | 保護ブランチのID。 |
merge_access_levels | 配列 | マージアクセスレベルの設定の配列。 |
merge_access_levels[].access_level | 整数 | マージのアクセスレベル。 |
merge_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
merge_access_levels[].group_id | 整数 | マージアクセスを持つグループのID。PremiumおよびUltimateのみ。 |
merge_access_levels[].id | 整数 | マージアクセスレベルの設定のID。 |
merge_access_levels[].user_id | 整数 | マージアクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
name | 文字列 | 保護ブランチの名前。 |
push_access_levels | 配列 | プッシュアクセスレベルの設定の配列。 |
push_access_levels[].access_level | 整数 | プッシュのアクセスレベル。 |
push_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
push_access_levels[].deploy_key_id | 整数 | プッシュアクセスを持つデプロイキーのID。 |
push_access_levels[].group_id | 整数 | プッシュアクセスを持つグループのID。PremiumおよびUltimateのみ。 |
push_access_levels[].id | 整数 | プッシュアクセスレベルの設定のID。 |
push_access_levels[].user_id | 整数 | プッシュアクセスを持つユーザーのID。PremiumおよびUltimateのみ。 |
unprotect_access_levels | 配列 | 保護解除アクセスレベルの設定の配列。 |
unprotect_access_levels[].access_level | 整数 | 保護解除のアクセスレベル。 |
unprotect_access_levels[].access_level_description | 文字列 | アクセスレベルの人にとって読みやすい説明。 |
unprotect_access_levels[].group_id | 整数 | 保護解除アクセスを持つグループのID。PremiumおよびUltimateのみ。 |
unprotect_access_levels[].id | 整数 | 保護解除アクセスレベルの設定のID。 |
unprotect_access_levels[].user_id | 整数 | 保護解除アクセスレベルを持つユーザーのID。PremiumおよびUltimateのみ。 |
リクエスト例:
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches/feature-branch?allow_force_push=true&code_owner_approval_required=true"allowed_to_push、allowed_to_merge、およびallowed_to_unprotectの配列内の要素は、user_id、group_id、またはaccess_levelのいずれかであり、{user_id: integer}、{group_id: integer}、または{access_level: integer}の形式を取ります。
allowed_to_pushには追加の要素deploy_key_idが含まれており、{deploy_key_id: integer}の形式を取ります。
更新するには:
user_id: 更新されたユーザーがプロジェクトへのアクセスレベルを持っていることを確認してください。それぞれのハッシュで、access_levelのidも渡す必要があります。group_id: 更新されたグループがこのプロジェクトを共有していることを確認してください。それぞれのハッシュで、access_levelのidも渡す必要があります。deploy_key_id: デプロイキーがプロジェクトで有効になっていること、およびプロジェクトリポジトリへの書き込みアクセスレベルを持っていることを確認してください。
削除するには、_destroyをtrueに設定して渡す必要があります。次の例を参照してください。
例: push_access_levelレコードを作成する
curl --header 'Content-Type: application/json' --request PATCH \
--data '{"allowed_to_push": [{"access_level": 40}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/22034114/protected_branches/main"レスポンス例:
{
"name": "main",
"push_access_levels": [
{
"id": 12,
"access_level": 40,
"access_level_description": "Maintainers",
"user_id": null,
"group_id": null
}
]
}例: push_access_levelレコードを更新する
curl --header 'Content-Type: application/json' --request PATCH \
--data '{"allowed_to_push": [{"id": 12, "access_level": 0}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/22034114/protected_branches/main"レスポンス例:
{
"name": "main",
"push_access_levels": [
{
"id": 12,
"access_level": 0,
"access_level_description": "No One",
"user_id": null,
"group_id": null
}
]
}例: push_access_levelレコードを削除する
curl --header 'Content-Type: application/json' --request PATCH \
--data '{"allowed_to_push": [{"id": 12, "_destroy": true}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/22034114/protected_branches/main"レスポンス例:
{
"name": "main",
"push_access_levels": []
}例: unprotect_access_levelレコードを更新する
前提要件:
- このAPIを呼び出すユーザーは、
allowed_to_unprotect設定に含まれている必要があります。 user_idで指定されたユーザーは、プロジェクトメンバーである必要があります。group_idで指定されたグループは、プロジェクトへのアクセスレベルを持っている必要があります。
既存の保護ブランチを誰が保護解除できるかを変更するには、既存のアクセスレベルレコードのidを含めます。次に例を示します。
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"allowed_to_unprotect": [
{"id": 17486, "user_id": 3791}
]
}' \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches/main"特定のアクセスレベルを削除するには、_destroy: trueを使用します。