マージリクエスト承認者API

  • /approvals エンドポイントによる承認者設定の変更は、GitLab 12.3 で非推奨となりました。
  • エンドポイント/approvals は GitLab 16.0 で削除されました。

プロジェクト内のすべてのマージリクエストの承認者設定。すべてのエンドポイントで認証されている必要があります。

プロジェクトレベルの MR 承認者

設定の取得

  • 13.9でGitLab Premiumに移行しました。
  • approversapprover_groups フィールドは GitLab 12.3 で非推奨となり、常に空文字列を返すようになりました。この情報にアクセスするには、プロジェクトレベルの承認ルールを使用してください。

プロジェクトの承認設定に関する情報は、以下のエンドポイントを使ってリクエストできます:

GET /projects/:id/approvals

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
{
  "approvers": [], // Deprecated in GitLab 12.3, always returns empty
  "approver_groups": [], // Deprecated in GitLab 12.3, always returns empty
  "approvals_before_merge": 2, // Deprecated in GitLab 12.3, use Approval Rules instead
  "reset_approvals_on_push": true,
  "selective_code_owner_removals": false,
  "disable_overriding_approvers_per_merge_request": false,
  "merge_requests_author_approval": true,
  "merge_requests_disable_committers_approval": false,
  "require_password_to_approve": true
}

設定の変更

13.9でGitLab Premiumに移行しました。

許可されている場合は、以下のエンドポイントを使用して承認者設定を変更できます:

POST /projects/:id/approvals

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approvals_before_merge (非推奨)整数。なしマージリクエストをマージする前に必要な承認者の数。GitLab 12.3では非推奨。代わりに承認者ルールを使用してください。
disable_overriding_approvers_per_merge_requestbooleanなしマージリクエストごとに承認者を上書きすることを許可または禁止します。
merge_requests_author_approvalbooleanなし作成者がマージリクエストを自己承認することを許可または禁止します。true は作成者が自己承認できることを意味します。
merge_requests_disable_committers_approvalbooleanなしコミッターによるマージリクエストの自己承認を許可または禁止します。
require_password_to_approvebooleanなし承認を追加する前に、承認者にパスワードの入力を要求します。
reset_approvals_on_pushbooleanなし新しいプッシュで承認者をリセットします。
selective_code_owner_removalsbooleanなしコードオーナーのファイルが変更された場合、承認者をリセットします。reset_approvals_on_push が無効の場合のみ有効にできます。
{
  "approvals_before_merge": 2, // Deprecated in GitLab 12.3, use Approval Rules instead
  "reset_approvals_on_push": true,
  "selective_code_owner_removals": false,
  "disable_overriding_approvers_per_merge_request": false,
  "merge_requests_author_approval": false,
  "merge_requests_disable_committers_approval": false,
  "require_password_to_approve": true
}

プロジェクトレベルのルールを取得

  • 13.9でGitLab Premiumに移行しました。
  • GitLab 15.3でapproval_rules_paginationというフラグでページネーションのサポートを導入。デフォルトで有効。
  • applies_to_all_protected_branches プロパティはGitLab 15.3で導入れました。
  • ページネーションのサポートはGitLab 15.7で一般的に利用可能。機能フラグapproval_rules_pagination を削除しました。
  • usernames プロパティはGitLab 15.8で導入されました。

プロジェクトの承認ルールに関する情報は、以下のエンドポイントを使ってリクエストできます:

GET /projects/:id/approval_rules

page およびper_page ページ分割パラメーターを使用して、承認ルールのリストを制限します。

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
[
  {
    "id": 1,
    "name": "security",
    "rule_type": "regular",
    "eligible_approvers": [
      {
        "id": 5,
        "name": "John Doe",
        "username": "jdoe",
        "state": "active",
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "http://localhost/jdoe"
      },
      {
        "id": 50,
        "name": "Group Member 1",
        "username": "group_member_1",
        "state": "active",
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "http://localhost/group_member_1"
      }
    ],
    "approvals_required": 3,
    "users": [
      {
        "id": 5,
        "name": "John Doe",
        "username": "jdoe",
        "state": "active",
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "http://localhost/jdoe"
      }
    ],
    "groups": [
      {
        "id": 5,
        "name": "group1",
        "path": "group1",
        "description": "",
        "visibility": "public",
        "lfs_enabled": false,
        "avatar_url": null,
        "web_url": "http://localhost/groups/group1",
        "request_access_enabled": false,
        "full_name": "group1",
        "full_path": "group1",
        "parent_id": null,
        "ldap_cn": null,
        "ldap_access": null
      }
    ],
    "applies_to_all_protected_branches": false,
    "protected_branches": [
      {
        "id": 1,
        "name": "master",
        "push_access_levels": [
          {
            "access_level": 30,
            "access_level_description": "Developers + Maintainers"
          }
        ],
        "merge_access_levels": [
          {
            "access_level": 30,
            "access_level_description": "Developers + Maintainers"
          }
        ],
        "unprotect_access_levels": [
          {
            "access_level": 40,
            "access_level_description": "Maintainers"
          }
        ],
        "code_owner_approval_required": "false"
      }
    ],
    "contains_hidden_groups": false
  }
]

単一のプロジェクトレベルのルールを取得します。

  • GitLab 13.7 で導入されました。
  • applies_to_all_protected_branches プロパティはGitLab 15.3で導入れました。
  • usernames プロパティはGitLab 15.8で導入されました。

以下のエンドポイントを使うことで、一つのプロジェクトの承認ルールに関する情報を要求することができます:

GET /projects/:id/approval_rules/:approval_rule_id

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approval_rule_id整数。はい承認規則の ID。
{
  "id": 1,
  "name": "security",
  "rule_type": "regular",
  "eligible_approvers": [
    {
      "id": 5,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    },
    {
      "id": 50,
      "name": "Group Member 1",
      "username": "group_member_1",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/group_member_1"
    }
  ],
  "approvals_required": 3,
  "users": [
    {
      "id": 5,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    }
  ],
  "groups": [
    {
      "id": 5,
      "name": "group1",
      "path": "group1",
      "description": "",
      "visibility": "public",
      "lfs_enabled": false,
      "avatar_url": null,
      "web_url": "http://localhost/groups/group1",
      "request_access_enabled": false,
      "full_name": "group1",
      "full_path": "group1",
      "parent_id": null,
      "ldap_cn": null,
      "ldap_access": null
    }
  ],
  "applies_to_all_protected_branches": false,
  "protected_branches": [
    {
      "id": 1,
      "name": "master",
      "push_access_levels": [
        {
          "access_level": 30,
          "access_level_description": "Developers + Maintainers"
        }
      ],
      "merge_access_levels": [
        {
          "access_level": 30,
          "access_level_description": "Developers + Maintainers"
        }
      ],
      "unprotect_access_levels": [
        {
          "access_level": 40,
          "access_level_description": "Maintainers"
        }
      ],
      "code_owner_approval_required": "false"
    }
  ],
  "contains_hidden_groups": false
}

プロジェクトレベルのルール作成

  • 13.9でGitLab Premiumに移行しました。
  • GitLab 15.0で脆弱性チェック機能を削除しました。
  • applies_to_all_protected_branches プロパティはGitLab 15.3で導入れました。
  • usernames プロパティはGitLab 15.8で導入されました。

次のエンドポイントを使ってプロジェクトの承認者ルールを作成することができます:

POST /projects/:id/approval_rules

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approvals_required整数。はいこの規則に必要な承認者の数。
name文字列です。はい承認規則の名前。
applies_to_all_protected_branchesbooleanなしルールをすべての保護ブランチに適用するかどうかを指定します。true に設定すると、protected_branch_ids の値は無視されます。デフォルトはfalse 。 GitLab 15.3で導入されました
group_ids配列なし承認者としてのグループのID。
protected_branch_ids配列なしルールをスコープする保護ブランチのID。ID を特定するには、API を使用してください。
report_type文字列です。なしルールタイプがreport_approver の場合に必要なレポートタイプ。サポートされているレポートタイプはlicense_scanning (GitLab 15.9 で非推奨)code_coverage です。
rule_type文字列です。なしルールの種類。any_approver は設定済みのデフォルトルールで、approvals_required0 。その他のルールはregularreport_approver です。
user_ids配列なし承認者としてのユーザーのID。user_idsusernames の両方を指定すると、両方のユーザーリストが追加されます。
usernames文字列配列なしこのルールの承認者のユーザー名 (同じuser_ids ですが、ユーザー名のリストが必要です) user_ids。とusernamesuser_ids 両方を指定 user_idsすると、両方のユーザーリストが追加されます。
{
  "id": 1,
  "name": "security",
  "rule_type": "regular",
  "eligible_approvers": [
    {
      "id": 2,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    },
    {
      "id": 50,
      "name": "Group Member 1",
      "username": "group_member_1",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/group_member_1"
    }
  ],
  "approvals_required": 1,
  "users": [
    {
      "id": 2,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    }
  ],
  "groups": [
    {
      "id": 5,
      "name": "group1",
      "path": "group1",
      "description": "",
      "visibility": "public",
      "lfs_enabled": false,
      "avatar_url": null,
      "web_url": "http://localhost/groups/group1",
      "request_access_enabled": false,
      "full_name": "group1",
      "full_path": "group1",
      "parent_id": null,
      "ldap_cn": null,
      "ldap_access": null
    }
  ],
  "applies_to_all_protected_branches": false,
  "protected_branches": [
    {
      "id": 1,
      "name": "master",
      "push_access_levels": [
        {
          "access_level": 30,
          "access_level_description": "Developers + Maintainers"
        }
      ],
      "merge_access_levels": [
        {
          "access_level": 30,
          "access_level_description": "Developers + Maintainers"
        }
      ],
      "unprotect_access_levels": [
        {
          "access_level": 40,
          "access_level_description": "Maintainers"
        }
      ],
      "code_owner_approval_required": "false"
    }
  ],
  "contains_hidden_groups": false
}

このように、デフォルトの「0」の承認者数を増やすことができます:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
  --header 'Content-Type: application/json' \
  --data '{"name": "Any name", "rule_type": "any_approver", "approvals_required": 2}'

別の例として、ユーザー固有のルールを作成することもできます:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
  --header 'Content-Type: application/json' \
  --data '{"name": "Name of your rule", "approvals_required": 3, "user_ids": [123, 456, 789]}' \
  https://gitlab.example.com/api/v4/projects/<project_id>/approval_rules

プロジェクトレベルのルールの更新

  • 13.9でGitLab Premiumに移行しました。
  • GitLab 15.0で脆弱性チェック機能を削除しました。
  • applies_to_all_protected_branches プロパティはGitLab 15.3で導入れました。
  • usernames プロパティはGitLab 15.8で導入されました。

プロジェクトの承認ルールを更新するには、以下のエンドポイントを使います:

PUT /projects/:id/approval_rules/:approval_rule_id
note
承認者とグループ(users またはgroups パラメーターにない非表示グループを除く)が削除されます。非表示グループとは、ユーザーに表示権限がない非公開グループです。デフォルトでは、remove_hidden_groups パラメータがtrueでない限り、非表示グループは削除されません。これにより、ユーザーが承認ルールを更新したときに、非表示グループが意図せずに削除されることがなくなります。

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approvals_required整数。はいこの規則に必要な承認者の数。
approval_rule_id整数。はい承認規則の ID。
name文字列です。はい承認規則の名前。
applies_to_all_protected_branchesbooleanなしルールをすべての保護ブランチに適用するかどうかを指定します。true に設定すると、protected_branch_ids の値は無視されます。デフォルトはfalse 。 GitLab 15.3で導入されました
group_ids配列なし承認者としてのグループのID。
protected_branch_ids配列なしルールをスコープする保護ブランチのID。ID を特定するには、API を使用してください。
remove_hidden_groupsbooleanなし非表示グループを承認ルールから削除するかどうか。
user_ids配列なし承認者としてのユーザーのID。user_idsusernames の両方を指定すると、両方のユーザーリストが追加されます。
usernames文字列配列なしこのルールの承認者のユーザー名 (同じuser_ids ですが、ユーザー名のリストが必要です) user_ids。とusernamesuser_ids 両方を指定 user_idsすると、両方のユーザーリストが追加されます。
{
  "id": 1,
  "name": "security",
  "rule_type": "regular",
  "eligible_approvers": [
    {
      "id": 2,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    },
    {
      "id": 50,
      "name": "Group Member 1",
      "username": "group_member_1",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/group_member_1"
    }
  ],
  "approvals_required": 1,
  "users": [
    {
      "id": 2,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    }
  ],
  "groups": [
    {
      "id": 5,
      "name": "group1",
      "path": "group1",
      "description": "",
      "visibility": "public",
      "lfs_enabled": false,
      "avatar_url": null,
      "web_url": "http://localhost/groups/group1",
      "request_access_enabled": false,
      "full_name": "group1",
      "full_path": "group1",
      "parent_id": null,
      "ldap_cn": null,
      "ldap_access": null
    }
  ],
  "applies_to_all_protected_branches": false,
  "protected_branches": [
    {
      "id": 1,
      "name": "master",
      "push_access_levels": [
        {
          "access_level": 30,
          "access_level_description": "Developers + Maintainers"
        }
      ],
      "merge_access_levels": [
        {
          "access_level": 30,
          "access_level_description": "Developers + Maintainers"
        }
      ],
      "unprotect_access_levels": [
        {
          "access_level": 40,
          "access_level_description": "Maintainers"
        }
      ],
      "code_owner_approval_required": "false"
    }
  ],
  "contains_hidden_groups": false
}

プロジェクトレベルのルールを削除します。

13.9でGitLab Premiumに移行しました。

プロジェクトの承認者ルールを削除するには、以下のエンドポイントを使用します:

DELETE /projects/:id/approval_rules/:approval_rule_id

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approval_rule_id整数。はい承認規則の ID。

リクエストレベルの MR 承認者をマージします。

特定のマージリクエストに対する承認者の設定。すべてのエンドポイントで認証されている必要があります。

設定の取得

13.9でGitLab Premiumに移行しました。

マージリクエストの承認状況については、以下のエンドポイントを使用して情報をリクエストできます:

GET /projects/:id/merge_requests/:merge_request_iid/approvals

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの IID。
{
  "id": 5,
  "iid": 5,
  "project_id": 1,
  "title": "Approvals API",
  "description": "Test",
  "state": "opened",
  "created_at": "2016-06-08T00:19:52.638Z",
  "updated_at": "2016-06-08T21:20:42.470Z",
  "merge_status": "cannot_be_merged",
  "approvals_required": 2,
  "approvals_left": 1,
  "approved_by": [
    {
      "user": {
        "name": "Administrator",
        "username": "root",
        "id": 1,
        "state": "active",
        "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
        "web_url": "http://localhost:3000/root"
      }
    }
  ]
}

承認者設定の変更 (削除)

Version history
  • エンドポイント/approvals GitLab 12.3で非推奨
  • エンドポイントapprovals はGitLab 16.0ではremove_deprecated_approvalsというフラグで 無効になっています。デフォルトでは無効。

POST /projects/:id/merge_requests/:merge_request_iid/approvals エンドポイントはGitLab 12.3で非推奨となり、GitLab 16.0で削除されました。マージリクエストに必要な承認者を変更するには、このページのマージリクエストレベルルールの作成で説明されている/approval_rules エンドポイントを使用してください。

マージリクエストの承認者の状態を取得します。

13.9でGitLab Premiumに移行しました。

マージリクエストの承認状況に関する情報をリクエストするには、以下のエンドポイントを使用します:

GET /projects/:id/merge_requests/:merge_request_iid/approval_state

マージ・リクエストに対してマージ・リクエスト・レベル・ルールが作成されている場合、approval_rules_overwrittentrue です。何もない場合はfalseです。

これには、すでに承認したユーザー (approved_by) や、ルールがすでに承認されているかどうか (approved) に関する追加情報が含まれます。

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの IID。
{
  "approval_rules_overwritten": true,
  "rules": [
    {
      "id": 1,
      "name": "Ruby",
      "rule_type": "regular",
      "eligible_approvers": [
        {
          "id": 4,
          "name": "John Doe",
          "username": "jdoe",
          "state": "active",
          "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
          "web_url": "http://localhost/jdoe"
        }
      ],
      "approvals_required": 2,
      "users": [
        {
          "id": 4,
          "name": "John Doe",
          "username": "jdoe",
          "state": "active",
          "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
          "web_url": "http://localhost/jdoe"
        }
      ],
      "groups": [],
      "contains_hidden_groups": false,
      "approved_by": [
        {
          "id": 4,
          "name": "John Doe",
          "username": "jdoe",
          "state": "active",
          "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
          "web_url": "http://localhost/jdoe"
        }
      ],
      "source_rule": null,
      "approved": true,
      "overridden": false
    }
  ]
}

マージリクエストレベルルールの取得

  • 13.9でGitLab Premiumに移行しました。
  • GitLab 15.3でapproval_rules_paginationというフラグでページネーションのサポートを導入。デフォルトで有効。
  • ページネーションのサポートはGitLab 15.7で一般的に利用可能。機能フラグapproval_rules_pagination は削除されました。

マージリクエストの承認ルールに関する情報は、次のエンドポイントを使ってリクエストできます:

GET /projects/:id/merge_requests/:merge_request_iid/approval_rules

page およびper_page ページ分割パラメーターを使用して、承認ルールのリストを制限します。

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの IID。
[
  {
    "id": 1,
    "name": "security",
    "rule_type": "regular",
    "eligible_approvers": [
      {
        "id": 5,
        "name": "John Doe",
        "username": "jdoe",
        "state": "active",
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "http://localhost/jdoe"
      },
      {
        "id": 50,
        "name": "Group Member 1",
        "username": "group_member_1",
        "state": "active",
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "http://localhost/group_member_1"
      }
    ],
    "approvals_required": 3,
    "source_rule": null,
    "users": [
      {
        "id": 5,
        "name": "John Doe",
        "username": "jdoe",
        "state": "active",
        "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
        "web_url": "http://localhost/jdoe"
      }
    ],
    "groups": [
      {
        "id": 5,
        "name": "group1",
        "path": "group1",
        "description": "",
        "visibility": "public",
        "lfs_enabled": false,
        "avatar_url": null,
        "web_url": "http://localhost/groups/group1",
        "request_access_enabled": false,
        "full_name": "group1",
        "full_path": "group1",
        "parent_id": null,
        "ldap_cn": null,
        "ldap_access": null
      }
    ],
    "contains_hidden_groups": false,
    "overridden": false
  }
]

単一のマージ・リクエスト・レベルのルールを取得します。

GitLab 14.10で導入されました

単一のマージリクエスト承認ルールに関する情報を、次のエンドポイントを使ってリクエストすることができます:

GET /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approval_rule_id整数。はい承認規則の ID。
merge_request_iid整数。はいマージリクエストの IID。
{
  "id": 1,
  "name": "security",
  "rule_type": "regular",
  "eligible_approvers": [
    {
      "id": 5,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    },
    {
      "id": 50,
      "name": "Group Member 1",
      "username": "group_member_1",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/group_member_1"
    }
  ],
  "approvals_required": 3,
  "source_rule": null,
  "users": [
    {
      "id": 5,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    }
  ],
  "groups": [
    {
      "id": 5,
      "name": "group1",
      "path": "group1",
      "description": "",
      "visibility": "public",
      "lfs_enabled": false,
      "avatar_url": null,
      "web_url": "http://localhost/groups/group1",
      "request_access_enabled": false,
      "full_name": "group1",
      "full_path": "group1",
      "parent_id": null,
      "ldap_cn": null,
      "ldap_access": null
    }
  ],
  "contains_hidden_groups": false,
  "overridden": false
}

マージリクエストレベルルールの作成

13.9でGitLab Premiumに移行しました。

マージリクエストの承認ルールは、以下のエンドポイントを使用して作成できます:

POST /projects/:id/merge_requests/:merge_request_iid/approval_rules

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approvals_required整数。はいこの規則に必要な承認者の数。
merge_request_iid整数。はいマージリクエストの IID。
name文字列です。はい承認規則の名前。
approval_project_rule_id整数。なしプロジェクトレベルの承認規則のID。
group_ids配列なし承認者としてのグループのID。
user_ids配列なし承認者としてのユーザーのID。user_idsusernames の両方を指定すると、両方のユーザーリストが追加されます。
usernames文字列配列なしこのルールの承認者のユーザー名 (同じuser_ids ですが、ユーザー名のリストが必要です) user_ids。とusernamesuser_ids 両方を指定 user_idsすると、両方のユーザーリストが追加されます。

重要:approval_project_rule_id を設定すると、プロジェクト レベル ルールのnameusersgroups がコピーされます。指定されたapprovals_required が使用されます。

{
  "id": 1,
  "name": "security",
  "rule_type": "regular",
  "eligible_approvers": [
    {
      "id": 2,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    },
    {
      "id": 50,
      "name": "Group Member 1",
      "username": "group_member_1",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/group_member_1"
    }
  ],
  "approvals_required": 1,
  "source_rule": null,
  "users": [
    {
      "id": 2,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    }
  ],
  "groups": [
    {
      "id": 5,
      "name": "group1",
      "path": "group1",
      "description": "",
      "visibility": "public",
      "lfs_enabled": false,
      "avatar_url": null,
      "web_url": "http://localhost/groups/group1",
      "request_access_enabled": false,
      "full_name": "group1",
      "full_path": "group1",
      "parent_id": null,
      "ldap_cn": null,
      "ldap_access": null
    }
  ],
  "contains_hidden_groups": false,
  "overridden": false
}

マージリクエストレベルルールの更新

13.9でGitLab Premiumに移行しました。

マージリクエストの承認ルールは、以下のエンドポイントを使用して更新できます:

PUT /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id

重要: users/groups パラメーターにない承認者とグループは削除されます。

重要: report_approver またはcode_owner ルールを更新することはできません。これらはシステムが生成したルールです。

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approval_rule_id整数。はい承認規則の ID。
merge_request_iid整数。はいマージリクエストの IID。
approvals_required整数。なしこの規則に必要な承認者の数。
group_ids配列なし承認者としてのグループのID。
name文字列です。なし承認規則の名前。
remove_hidden_groupsbooleanなし非表示グループを削除するかどうか。
user_ids配列なし承認者としてのユーザーのID。user_idsusernames の両方を指定すると、両方のユーザーリストが追加されます。
usernames文字列配列なしこのルールの承認者のユーザー名 (同じuser_ids ですが、ユーザー名のリストが必要です) user_ids。とusernamesuser_ids 両方を指定 user_idsすると、両方のユーザーリストが追加されます。
{
  "id": 1,
  "name": "security",
  "rule_type": "regular",
  "eligible_approvers": [
    {
      "id": 2,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    },
    {
      "id": 50,
      "name": "Group Member 1",
      "username": "group_member_1",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/group_member_1"
    }
  ],
  "approvals_required": 1,
  "source_rule": null,
  "users": [
    {
      "id": 2,
      "name": "John Doe",
      "username": "jdoe",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
      "web_url": "http://localhost/jdoe"
    }
  ],
  "groups": [
    {
      "id": 5,
      "name": "group1",
      "path": "group1",
      "description": "",
      "visibility": "public",
      "lfs_enabled": false,
      "avatar_url": null,
      "web_url": "http://localhost/groups/group1",
      "request_access_enabled": false,
      "full_name": "group1",
      "full_path": "group1",
      "parent_id": null,
      "ldap_cn": null,
      "ldap_access": null
    }
  ],
  "contains_hidden_groups": false,
  "overridden": false
}

マージリクエストレベルルールの削除

13.9でGitLab Premiumに移行しました。

マージリクエストの承認者ルールを削除するには、以下のエンドポイントを使用します:

DELETE /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id

インポート:重要:report_approver またはcode_owner ルールの削除は許可されていません。これらはシステムが生成したルールです。

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approval_rule_id整数。はい承認規則の ID。
merge_request_iid整数。はいマージリクエストの IID。

マージリクエストを承認します。

13.9でGitLab Premiumに移行しました。

許可されていれば、以下のエンドポイントを使ってマージリクエストを承認することができます:

POST /projects/:id/merge_requests/:merge_request_iid/approve

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
approval_password文字列です。なし現在のユーザーのパスワード。必要な場合 プロジェクト設定でRequire user password to approveがプロジェクト設定で有効になっている場合は必要です。
merge_request_iid整数。はいマージリクエストの IID。
sha文字列です。なしマージリクエストのHEAD

sha パラメータはマージリクエストを承認するときと同じように動作します: パラメータが渡された場合、承認が追加されるためにはマージリクエストの現在の HEAD と一致しなければなりません。一致しない場合、応答コードは409 です。

{
  "id": 5,
  "iid": 5,
  "project_id": 1,
  "title": "Approvals API",
  "description": "Test",
  "state": "opened",
  "created_at": "2016-06-08T00:19:52.638Z",
  "updated_at": "2016-06-09T21:32:14.105Z",
  "merge_status": "can_be_merged",
  "approvals_required": 2,
  "approvals_left": 0,
  "approved_by": [
    {
      "user": {
        "name": "Administrator",
        "username": "root",
        "id": 1,
        "state": "active",
        "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
        "web_url": "http://localhost:3000/root"
      }
    },
    {
      "user": {
        "name": "Nico Cartwright",
        "username": "ryley",
        "id": 2,
        "state": "active",
        "avatar_url": "http://www.gravatar.com/avatar/cf7ad14b34162a76d593e3affca2adca?s=80\u0026d=identicon",
        "web_url": "http://localhost:3000/ryley"
      }
    }
  ]
}

マージリクエストの承認取り消し

13.9でGitLab Premiumに移行しました。

マージリクエストを承認した場合は、次のエンドポイントを使って承認を取り消すことができます:

POST /projects/:id/merge_requests/:merge_request_iid/unapprove

サポートされる属性:

属性種類必須説明
id整数または文字列。はい プロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの IID。

マージリクエストの承認者をリセットします。

マージリクエストの承認者をすべて消去します。

プロジェクトまたはグループ・トークンに基づくボット・ユーザーのみが利用可能です。ボット権限のないユーザーは、401 Unauthorized レスポンスを受け取ります。

PUT /projects/:id/merge_requests/:merge_request_iid/reset_approvals
属性種類必須説明
id整数または文字列。はい認証ユーザーが所有するプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数。はいマージリクエストの内部ID。
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/76/merge_requests/1/reset_approvals"