正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

変更提案API

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

コードをレビューする際、コード提案を使用すると、直接適用できる特定の変更を提案できます。詳細については、コード提案を参照してください。

このAPIを使用すると、マージリクエストのディスカッションでプログラムによってコード提案を作成および適用できます。コード提案に対するすべてのAPIコールは認証される必要があります。

提案の作成

APIを介して提案を作成するには、Discussions APIを使用して、マージリクエスト差分に新しいスレッドを作成します。提案の形式は次のとおりです:

```suggestion:-3+0
example text
```

提案の適用

マージリクエストで提案されたパッチを適用します。

前提要件:

  • ユーザーは、少なくともデベロッパーロールを持っている必要があります。
PUT /suggestions/:id/apply

サポートされている属性は以下のとおりです:

属性必須説明
id整数はい提案のID。
commit_message文字列いいえデフォルトで生成されたメッセージまたはプロジェクトのデフォルトメッセージの代わりに使用するカスタムコミットメッセージ。

成功した場合、200 OKと次のレスポンス属性を返します:

属性説明
applicableブール値trueの場合、提案を適用できます。
appliedブール値trueの場合、提案が適用されています。
from_content文字列提案前の元のコンテンツ。
from_line整数提案の開始行番号。
id整数提案のID。
to_content文字列元のコンテンツを置き換えるために提案されたコンテンツ。
to_line整数提案の終了行番号。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/suggestions/5/apply"

レスポンス例:

{
  "id": 5,
  "from_line": 10,
  "to_line": 10,
  "applicable": true,
  "applied": false,
  "from_content": "This is an example\n",
  "to_content": "This is an example\n"
}

複数の提案を適用

マージリクエストで複数の提案されたパッチを適用します。

前提要件:

  • ユーザーは、少なくともデベロッパーロールを持っている必要があります。
PUT /suggestions/batch_apply

サポートされている属性は以下のとおりです:

属性必須説明
ids整数の配列はい適用する提案のIDの配列。
commit_message文字列いいえデフォルトで生成されたメッセージまたはプロジェクトのデフォルトメッセージの代わりに使用するカスタムコミットメッセージ。

成功した場合、200 OKと、次の応答属性を持つ提案オブジェクトの配列を返します:

属性説明
applicableブール値trueの場合、提案を適用できます。
appliedブール値trueの場合、提案が適用されています。
from_content文字列提案前の元のコンテンツ。
from_line整数提案の開始行番号。
id整数提案のID。
to_content文字列元のコンテンツを置き換えるために提案されたコンテンツ。
to_line整数提案の終了行番号。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --data '{"ids": [5, 6]}' \
  --url "https://gitlab.example.com/api/v4/suggestions/batch_apply"

レスポンス例:

[
  {
    "id": 5,
    "from_line": 10,
    "to_line": 10,
    "applicable": true,
    "applied": false,
    "from_content": "This is an example\n",
    "to_content": "This is an example\n"
  },
  {
    "id": 6,
    "from_line": 19,
    "to_line": 19,
    "applicable": true,
    "applied": false,
    "from_content": "This is another example\n",
    "to_content": "This is another example\n"
  }
]