変更提案API
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このAPIを使用して、コード提案を管理します。
提案は、コードに直接適用できる特定の変更を提案する方法を提供します。このAPIを使用すると、マージリクエストのディスカッションでコード提案をプログラムで作成および適用できます。提案に対するすべてのAPIコールは、認証される必要があります。
提案を作成する
API経由で提案を作成するには、ディスカッション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"
}
]