保護ブランチAPI
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、保護ブランチを管理します。
PremiumとUltimateは、ブランチへのプッシュに対するよりきめ細かな保護をサポートしています。管理者は、特定のユーザーではなく、デプロイキーに対してのみ、保護ブランチの変更およびプッシュの権限を付与できます。
有効なアクセスレベル
ProtectedRefAccess.allowed_access_levelsメソッドは、プッシュ、マージ、および保護解除の設定全体で使用される次のアクセスレベルを定義します。
0: アクセスなし - プッシュおよびマージアクセスレベルにのみ有効です。保護解除アクセスレベルには無効です。30: デベロッパー40: メンテナー60: 管理者 - GitLab Self-Managedにのみ有効です。
ロールベースのアクセスレベルに加えて、次によってアクセスを割り当てることができます:
- ユーザー (
user_id): プッシュ、マージ、および保護解除アクセスレベルに有効です。 - グループ (
group_id): プッシュ、マージ、および保護解除アクセスレベルに有効です。グループはプロジェクトに対して、デベロッパー、メンテナー、またはオーナーのロールを持っている必要があります。 - デプロイキー (
deploy_key_id): プッシュアクセスレベルにのみ有効です。
詳細については、リポジトリブランチの保護の例を参照してください。
ブランチの保護設定が永続的にロックされるのを避けるために、少なくとも1人のユーザーまたはグループが常にブランチに対する保護解除権限を保持するようにしてください。詳細については、誰がブランチの保護を解除できるかを制御するを参照してください。
保護ブランチを一覧表示
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
}
]PremiumまたはUltimateのGitLabユーザーは、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
}PremiumまたはUltimateのGitLabユーザーは、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}の形式のハッシュで記述されます。user_id、group_id、およびaccess_levelは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 (メンテナーロール) です。0 (アクセスなし) は無効です。 |
アクセスレベルを設定する場合:
allowed_to_pushとallowed_to_mergeに対して複数のアクセスレベルを同時に設定できます。- 最も緩いアクセスレベルによって、誰がそのアクションを実行できるかが決まります。
allowed_to_push、allowed_to_merge、またはallowed_to_unprotect配列にidを含めないでください。idフィールドは既存のアクセスレベルレコードを識別し、保護ブランチを更新する場合にのみ有効です。既存のレコードと一致しないidを含めると、APIは404 Not Foundを返します。
この動作は、なし (access_level: 0) を選択すると他のロール選択を自動的にクリアするUIとは異なります。
成功した場合、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
}PremiumまたはUltimateのGitLabユーザーは、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
}デプロイキーアクセスレベルの例
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}の形式のハッシュで記述されます。user_id、group_id、およびaccess_levelは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: integer}の形式を取る追加の要素deploy_key_idが含まれます。
更新するには:
user_id: 更新されたユーザーがプロジェクトへのアクセス権を持っていることを確認してください。アクセスレベルレコードのidをハッシュに含めます。group_id: 更新されたグループがこのプロジェクトを共有していることを確認してください。アクセスレベルレコードのidをハッシュに含めます。deploy_key_id: デプロイキーがプロジェクトで有効になっており、プロジェクトリポジトリへの書き込みアクセス権を持っていることを確認してください。
既存のアクセスレベルレコードの他のフィールドを更新するには、レコードの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を使用します。