ディスカッション API
ディスカッションは、関連するノートのセットです:
- スニペット
- イシュー
- エピック
- マージリクエスト
- コミット
これにはコメントやスレッド、システムノートが含まれます。システムノートとは、オブジェクトの変更に関するメモです(例えば、マイルストーンが変更された場合など)。ラベルノートはこのAPIの一部ではなく、リソースラベルイベントに別のイベントとして記録されます。
ディスカッションのページネーション
デフォルトでは、API の結果はページ分割されているため、GET
リクエストは一度に 20 件の結果を返します。
ページ分割についての詳細はこちらをご覧ください。
イシュー
プロジェクトのイシューのディスカッション項目をリストアップします。
1つのイシューに関するすべてのディスカッション項目のリストを取得します。
GET /projects/:id/issues/:issue_iid/discussions
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
issue_iid | 整数。 | yes | イシューのIID。 |
[
{
"id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
"individual_note": false,
"notes": [
{
"id": 1126,
"type": "DiscussionNote",
"body": "discussion text",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-03T21:54:39.668Z",
"updated_at": "2018-03-03T21:54:39.668Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Issue",
"project_id": 5,
"noteable_iid": null
},
{
"id": 1129,
"type": "DiscussionNote",
"body": "reply to the discussion",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T13:38:02.127Z",
"updated_at": "2018-03-04T13:38:02.127Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Issue",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
}
]
},
{
"id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
"individual_note": true,
"notes": [
{
"id": 1128,
"type": null,
"body": "a single comment",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T09:17:22.520Z",
"updated_at": "2018-03-04T09:17:22.520Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Issue",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
}
]
}
]
curl --header "PRIVATE-TOKEN: <your_access_token>"\
"https://gitlab.example.com/api/v4/projects/5/issues/11/discussions"
単一のイシュー・ディスカッション項目の取得
特定のプロジェクトのイシューに関する単一のディスカッション項目を返します。
GET /projects/:id/issues/:issue_iid/discussions/:discussion_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
issue_iid | 整数。 | yes | イシューのIID。 |
discussion_id | 整数。 | yes | ディスカッション項目のID。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/issues/11/discussions/<discussion_id>"
新しいイシュー・スレッドの作成
1つのプロジェクトのイシューに新しいスレッドを作成します。ノートの作成と似ていますが、他のコメント(返信)を後から追加することができます。
POST /projects/:id/issues/:issue_iid/discussions
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | スレッドの内容 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
issue_iid | 整数。 | yes | イシューのIID。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/issues/11/discussions?body=comment"
既存のイシュースレッドにメモを追加
スレッドに新しいノートを追加します。1つのコメントからスレッドを作成することもできます。
POST /projects/:id/issues/:issue_iid/discussions/:discussion_id/notes
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | メモまたは返信の内容 |
discussion_id | 整数。 | yes | スレッドのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
issue_iid | 整数。 | yes | イシューのIID。 |
note_id | 整数。 | yes | スレッドノートのID。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/issues/11/discussions/<discussion_id>/notes?body=comment"
既存のイシュー・スレッド・ノートの変更
イシューの既存のスレッドノートを変更します。
PUT /projects/:id/issues/:issue_iid/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | メモまたは返信の内容 |
discussion_id | 整数。 | yes | スレッドのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
issue_iid | 整数。 | yes | イシューのIID。 |
note_id | 整数。 | yes | スレッドノートのID。 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/issues/11/discussions/<discussion_id>/notes/1108?body=comment"
イシューのスレッドノートを削除します。
既存のイシューのスレッドノートを削除します。
DELETE /projects/:id/issues/:issue_iid/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
discussion_id | 整数。 | yes | ディスカッションのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
issue_iid | 整数。 | yes | イシューのIID。 |
note_id | 整数。 | yes | ディスカッションノートのID。 |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/issues/11/discussions/636"
スニペット
プロジェクトスニペットディスカッション項目一覧
1つのスニペットに関するすべてのディスカッションアイテムのリストを取得します。
GET /projects/:id/snippets/:snippet_id/discussions
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
snippet_id | 整数。 | yes | スニペットのID。 |
[
{
"id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
"individual_note": false,
"notes": [
{
"id": 1126,
"type": "DiscussionNote",
"body": "discussion text",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-03T21:54:39.668Z",
"updated_at": "2018-03-03T21:54:39.668Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Snippet",
"project_id": 5,
"noteable_iid": null
},
{
"id": 1129,
"type": "DiscussionNote",
"body": "reply to the discussion",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T13:38:02.127Z",
"updated_at": "2018-03-04T13:38:02.127Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Snippet",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
}
]
},
{
"id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
"individual_note": true,
"notes": [
{
"id": 1128,
"type": null,
"body": "a single comment",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T09:17:22.520Z",
"updated_at": "2018-03-04T09:17:22.520Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Snippet",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
}
]
}
]
curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions"
単一のスニペットディスカッション項目を取得します。
特定のプロジェクトのスニペットに関する単一のディスカッション項目を返します。
GET /projects/:id/snippets/:snippet_id/discussions/:discussion_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
discussion_id | 整数。 | yes | ディスカッション項目のID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
snippet_id | 整数。 | yes | スニペットのID。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions/<discussion_id>"
スニペットスレッドの新規作成
1つのプロジェクトスニペットに対して新しいスレッドを作成します。ノートの作成と似ていますが、他のコメント(返信)を後から追加することができます。
POST /projects/:id/snippets/:snippet_id/discussions
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | ディスカッションの内容 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
snippet_id | 整数。 | yes | スニペットのID。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>"\
"https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions?body=comment"
既存のスニペットスレッドにメモを追加
スレッドに新しいノートを追加します。
POST /projects/:id/snippets/:snippet_id/discussions/:discussion_id/notes
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | メモまたは返信の内容 |
discussion_id | 整数。 | yes | スレッドのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
note_id | 整数。 | yes | スレッドノートのID。 |
snippet_id | 整数。 | yes | スニペットのID。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions/<discussion_id>/notes?body=comment"
既存のスニペットスレッドノートの変更
スニペットの既存のスレッドノートを修正します。
PUT /projects/:id/snippets/:snippet_id/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | メモまたは返信の内容 |
discussion_id | 整数。 | yes | スレッドのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
note_id | 整数。 | yes | スレッドノートのID。 |
snippet_id | 整数。 | yes | スニペットのID。 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions/<discussion_id>/notes/1108?body=comment"
スニペットスレッドノートの削除
既存のスニペットのスレッドノートを削除します。
DELETE /projects/:id/snippets/:snippet_id/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
discussion_id | 整数。 | yes | ディスカッションのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
note_id | 整数。 | yes | ディスカッションノートのID。 |
snippet_id | 整数。 | yes | スニペットのID。 |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions/636"
エピック
グループエピック討議項目一覧
単一のエピックに関するすべてのディスカッションアイテムのリストを取得します。
GET /groups/:id/epics/:epic_id/discussions
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
epic_id | 整数。 | yes | エピックのID。 |
id | 整数または文字列。 | yes | グループのIDまたはURLエンコードされたパス。 |
[
{
"id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
"individual_note": false,
"notes": [
{
"id": 1126,
"type": "DiscussionNote",
"body": "discussion text",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-03T21:54:39.668Z",
"updated_at": "2018-03-03T21:54:39.668Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Epic",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
},
{
"id": 1129,
"type": "DiscussionNote",
"body": "reply to the discussion",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T13:38:02.127Z",
"updated_at": "2018-03-04T13:38:02.127Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Epic",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
}
]
},
{
"id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
"individual_note": true,
"notes": [
{
"id": 1128,
"type": null,
"body": "a single comment",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T09:17:22.520Z",
"updated_at": "2018-03-04T09:17:22.520Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Epic",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
}
]
}
]
curl --header "PRIVATE-TOKEN: <your_access_token>"\
"https://gitlab.example.com/api/v4/groups/5/epics/11/discussions"
単一のエピック・ディスカッション・アイテムの取得
特定のグループエピックに関する単一のディスカッション項目を返します。
GET /groups/:id/epics/:epic_id/discussions/:discussion_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
discussion_id | 整数。 | yes | ディスカッション項目のID。 |
epic_id | 整数。 | yes | エピックのID。 |
id | 整数または文字列。 | yes | グループのIDまたはURLエンコードされたパス。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/groups/5/epics/11/discussions/<discussion_id>"
エピックスレッドの新規作成
1つのグループエピックに新しいスレッドを作成します。ノートの作成と似ていますが、他のコメント(返信)を後から追加することができます。
POST /groups/:id/epics/:epic_id/discussions
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | スレッドの内容 |
epic_id | 整数。 | yes | エピックのID。 |
id | 整数または文字列。 | yes | グループのIDまたはURLエンコードされたパス。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/groups/5/epics/11/discussions?body=comment"
既存のエピックスレッドにメモを追加
スレッドに新しいノートを追加します。一つのコメントからスレッドを作成することもできます。
POST /groups/:id/epics/:epic_id/discussions/:discussion_id/notes
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | メモまたは返信の内容 |
discussion_id | 整数。 | yes | スレッドのID。 |
epic_id | 整数。 | yes | エピックのID。 |
id | 整数または文字列。 | yes | グループのIDまたはURLエンコードされたパス。 |
note_id | 整数。 | yes | スレッドノートのID。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/groups/5/epics/11/discussions/<discussion_id>/notes?body=comment"
既存のエピックスレッドノートの変更
エピックの既存のスレッドノートを修正します。
PUT /groups/:id/epics/:epic_id/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | メモまたは返信の内容 |
discussion_id | 整数。 | yes | スレッドのID。 |
epic_id | 整数。 | yes | エピックのID。 |
id | 整数/文字列 | yes | グループのIDまたはURLエンコードされたパス。 |
note_id | 整数。 | yes | スレッドノートのID。 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/groups/5/epics/11/discussions/<discussion_id>/notes/1108?body=comment"
エピックスレッドノートの削除
既存のエピックのスレッドノートを削除します。
DELETE /groups/:id/epics/:epic_id/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
discussion_id | 整数。 | yes | スレッドのID。 |
epic_id | 整数。 | yes | エピックのID。 |
id | 整数または文字列。 | yes | グループのIDまたはURLエンコードされたパス。 |
note_id | 整数。 | yes | スレッドノートのID。 |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/groups/5/epics/11/discussions/636"
マージリクエスト
プロジェクトマージリクエストのディスカッション項目を一覧表示します。
ひとつのマージリクエストのすべてのディスカッション項目の一覧を取得します。
GET /projects/:id/merge_requests/:merge_request_iid/discussions
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数。 | yes | マージリクエストの IID。 |
[
{
"id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
"individual_note": false,
"notes": [
{
"id": 1126,
"type": "DiscussionNote",
"body": "discussion text",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-03T21:54:39.668Z",
"updated_at": "2018-03-03T21:54:39.668Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Merge request",
"project_id": 5,
"noteable_iid": null,
"resolved": false,
"resolvable": true,
"resolved_by": null,
"resolved_at": null
},
{
"id": 1129,
"type": "DiscussionNote",
"body": "reply to the discussion",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T13:38:02.127Z",
"updated_at": "2018-03-04T13:38:02.127Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Merge request",
"project_id": 5,
"noteable_iid": null,
"resolved": false,
"resolvable": true,
"resolved_by": null
}
]
},
{
"id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
"individual_note": true,
"notes": [
{
"id": 1128,
"type": null,
"body": "a single comment",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T09:17:22.520Z",
"updated_at": "2018-03-04T09:17:22.520Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Merge request",
"project_id": 5,
"noteable_iid": null,
"resolved": false,
"resolvable": true,
"resolved_by": null
}
]
}
]
差分コメントには位置も含まれます:
[
{
"id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
"individual_note": false,
"notes": [
{
"id": 1128,
"type": "DiffNote",
"body": "diff comment",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T09:17:22.520Z",
"updated_at": "2018-03-04T09:17:22.520Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Merge request",
"project_id": 5,
"noteable_iid": null,
"commit_id": "4803c71e6b1833ca72b8b26ef2ecd5adc8a38031",
"position": {
"base_sha": "b5d6e7b1613fca24d250fa8e5bc7bcc3dd6002ef",
"start_sha": "7c9c2ead8a320fb7ba0b4e234bd9529a2614e306",
"head_sha": "4803c71e6b1833ca72b8b26ef2ecd5adc8a38031",
"old_path": "package.json",
"new_path": "package.json",
"position_type": "text",
"old_line": 27,
"new_line": 27,
"line_range": {
"start": {
"line_code": "588440f66559714280628a4f9799f0c4eb880a4a_10_10",
"type": "new"
},
"end": {
"line_code": "588440f66559714280628a4f9799f0c4eb880a4a_11_11",
"type": "old"
}
}
},
"resolved": false,
"resolvable": true,
"resolved_by": null
}
]
}
]
curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions"
マージリクエストのディスカッション項目を取得します。
特定のプロジェクトのマージリクエストの単一のディスカッション項目を返します。
GET /projects/:id/merge_requests/:merge_request_iid/discussions/:discussion_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
discussion_id | 文字列です。 | yes | ディスカッション項目のID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数。 | yes | マージリクエストの IID。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions/<discussion_id>"
新しいマージリクエストスレッドの作成
commit id
エントリは GitLab 13.7 で導入されました。
一つのプロジェクトのマージリクエストに新しいスレッドを作成します。ノートの作成と似ていますが、他のコメント(返信)を後から追加することができます。他のアプローチについては、Commits API のPost comment to commitや Notes API のCreate new merge request noteを参照してください。
POST /projects/:id/merge_requests/:merge_request_iid/discussions
すべてのコメントのパラメータ
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | スレッドの内容 |
id | 整数/文字列 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数。 | yes | マージリクエストの IID。 |
position[base_sha] | 文字列です。 | yes | ソースブランチのベースコミットSHA。 |
position[head_sha] | 文字列です。 | yes | このマージリクエストのHEADを参照するSHA。 |
position[start_sha] | 文字列です。 | yes | ターゲットブランチのコミットを参照する SHA。 |
position[new_path] | 文字列です。 | yes (ポジションタイプがtext の場合) | 変更後のファイルパス。 |
position[old_path] | 文字列です。 | yes (ポジションタイプがtext の場合) | 変更前のファイルパス。 |
position[position_type] | 文字列です。 | yes | 位置参照のタイプ。指定可能な値:text またはimage 。 |
commit_id | 文字列です。 | いいえ | このスレッドを開始するためにSHA参照コミット。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
position | ハッシュ | いいえ | 差分ノート作成時の位置 |
position[new_line] | 整数。 | いいえ |
text 差分ノートの場合、変更後の行番号。 |
position[old_line] | 整数。 | いいえ |
text 差分ノートの場合、変更前の行番号。 |
position[line_range] | ハッシュ | いいえ | 複数行の差分音符の行範囲。 |
position[width] | 整数。 | いいえ |
image 差分ノートの場合、画像の幅。 |
position[height] | 整数。 | いいえ |
image 差分ノートの場合、画像の高さ。 |
position[x] | フロート | いいえ |
image 差分ノートの場合、X座標。 |
position[y] | フロート | いいえ |
image 差分ノートのY座標。 |
概要ページに新しいスレッドを作成してください。
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions?body=comment"
マージリクエストの差分に新しいスレッドを作成してください。
-
position[old_path]
とposition[new_path]
の両方が必須で、変更前と変更後のファイルパスを参照する必要があります。 - 追加された行(マージリクエストの差分では緑色でハイライトされています)にスレッドを作成するには、
position[new_line]
を使用し、position[old_line]
を含めないでください。 - 削除された行にスレッドを作成するには (マージリクエストの diff で赤くハイライトされています)、
position[old_line]
を使用し、position[new_line]
を含めないでください。 - 変更のない行にスレッドを作成するには、その行の
position[new_line]
とposition[old_line]
の両方をインクルードします。ファイルの以前の変更によって行番号が変更された場合、これらの位置は同じではないかもしれません。修正についての議論は、イシュー32516を参照してください。 -
base
、head
、start
、SHA
のパラメータを正しく指定しないと、イシュー#296829で説明されているバグに遭遇する可能性があります)。
新しいスレッドを作成するには
-
curl --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/versions"
-
レスポンス配列の最初に表示される最新バージョンの詳細に注意してください。
[ { "id": 164560414, "head_commit_sha": "f9ce7e16e56c162edbc9e480108041cf6b0291fe", "base_commit_sha": "5e6dffa282c5129aa67cd227a0429be21bfdaf80", "start_commit_sha": "5e6dffa282c5129aa67cd227a0429be21bfdaf80", "created_at": "2021-03-30T09:18:27.351Z", "merge_request_id": 93958054, "state": "collected", "real_size": "2" }, "previous versions are here" ]
-
新しい diff スレッドを作成します。この例では、追加された行にスレッドを作成します:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>"\ --form 'position[position_type]=text'\ --form 'position[base_sha]=<use base_commit_sha from the versions response>'\ --form 'position[head_sha]=<use head_commit_sha from the versions response>'\ --form 'position[start_sha]=<use start_commit_sha from the versions response>'\ --form 'position[new_path]=file.js'\ --form 'position[old_path]=file.js'\ --form 'position[new_line]=18'\ --form 'body=test comment body'\ "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions"
複数行コメントのパラメータ
複数行コメント専用のパラメータです:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
position[line_range][end][line_code] | 文字列です。 | yes | 終了行の行コード。 |
position[line_range][end][type] | 文字列です。 | yes | このコミットによって追加された行にはnew を使用し、そうでない場合はold を使用します。 |
position[line_range][start][line_code] | 文字列です。 | yes | スタートラインのラインコード。 |
position[line_range][start][type] | 文字列です。 | yes | このコミットによって追加された行にはnew を使用し、そうでない場合はold を使用します。 |
position[line_range][end] | ハッシュ | いいえ | マルチラインノートの終了行。 |
position[line_range][start] | ハッシュ | いいえ | マルチラインノートの開始行。 |
行コード
ラインコードは<SHA>_<old>_<new>
のような形式です:adc83b19e793491b1c6ea0fd8b46cd9f32e292fc_5_5
-
<SHA>
はファイル名のSHA1ハッシュです。 -
<old>
は変更前の行番号です。 -
<new>
は変更後の行番号です。
たとえば、コミット (<COMMIT_ID>
) で README の 463 行目が削除された場合、古いファイルの 463 行目を参照することで、削除についてコメントすることができます:
curl --request POST --header "PRIVATE-TOKEN: [ACCESS_TOKEN]" \
--form "note=Very clever to remove this unnecessary line!" \
--form "path=README" --form "line=463" --form "line_type=old" \
"https://gitlab.com/api/v4/projects/47/repository/commits/<COMMIT_ID>/comments"
コミット (<COMMIT_ID>
) がhello.rb
に 157 行を追加した場合、新しいファイルの 157 行を参照することで、追加についてコメントすることができます:
curl --request POST --header "PRIVATE-TOKEN: [ACCESS_TOKEN]" \
--form "note=This is brilliant!" --form "path=hello.rb" \
--form "line=157" --form "line_type=new" \
"https://gitlab.com/api/v4/projects/47/repository/commits/<COMMIT_ID>/comments"
マージリクエストスレッドの解決
マージリクエストの議論スレッドを解決または未解決にします。
前提条件
- 少なくとも開発者ロールを持っているか、レビュー対象の変更の作成者である必要があります。
PUT /projects/:id/merge_requests/:merge_request_iid/discussions/:discussion_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数/文字列 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
discussion_id | 文字列です。 | yes | スレッドのID。 |
merge_request_iid | 整数。 | yes | マージリクエストの IID。 |
resolved | boolean | yes | 議論を解決するかしないか。 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions/<discussion_id>?resolved=true"
既存のマージリクエストスレッドにメモを追加します。
スレッドに新しいノートを追加します。一つのコメントからスレッドを作成することもできます。
POST /projects/:id/merge_requests/:merge_request_iid/discussions/:discussion_id/notes
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | メモまたは返信の内容 |
id | 整数/文字列 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
discussion_id | 文字列です。 | yes | スレッドのID。 |
merge_request_iid | 整数。 | yes | マージリクエストの IID。 |
note_id | 整数。 | yes | スレッドノートのID。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions/<discussion_id>/notes?body=comment"
既存のマージリクエストスレッドノートを修正します。
マージリクエストの既存のスレッドノートを修正または解決します。
PUT /projects/:id/merge_requests/:merge_request_iid/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
discussion_id | 文字列です。 | yes | スレッドのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数。 | yes | マージリクエストの IID。 |
note_id | 整数。 | yes | スレッドノートのID。 |
body | 文字列です。 | いいえ | メモまたは返信の内容。body またはresolved のうち、正確に1つを設定する必要があります。 |
resolved | boolean | いいえ | ノートの解決または解決解除。body 、resolved のどちらか一方が設定されている必要があります。 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions/<discussion_id>/notes/1108?body=comment"
ノートの解決
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions/<discussion_id>/notes/1108?resolved=true"
マージリクエストスレッドノートの削除
マージリクエストの既存のスレッドノートを削除します。
DELETE /projects/:id/merge_requests/:merge_request_iid/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
discussion_id | 文字列です。 | yes | スレッドのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
merge_request_iid | 整数。 | yes | マージリクエストの IID。 |
note_id | 整数。 | yes | スレッドノートのID。 |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions/636"
コミット
プロジェクトコミットのディスカッション項目一覧
ひとつのコミットに関するすべてのディスカッション項目の一覧を取得します。
GET /projects/:id/repository/commits/:commit_id/discussions
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
commit_id | 文字列です。 | yes | コミットのSHA。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
[
{
"id": "6a9c1750b37d513a43987b574953fceb50b03ce7",
"individual_note": false,
"notes": [
{
"id": 1126,
"type": "DiscussionNote",
"body": "discussion text",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-03T21:54:39.668Z",
"updated_at": "2018-03-03T21:54:39.668Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Commit",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
},
{
"id": 1129,
"type": "DiscussionNote",
"body": "reply to the discussion",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T13:38:02.127Z",
"updated_at": "2018-03-04T13:38:02.127Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Commit",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
}
]
},
{
"id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
"individual_note": true,
"notes": [
{
"id": 1128,
"type": null,
"body": "a single comment",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T09:17:22.520Z",
"updated_at": "2018-03-04T09:17:22.520Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Commit",
"project_id": 5,
"noteable_iid": null,
"resolvable": false
}
]
}
]
Diffコメントには位置も含まれます:
[
{
"id": "87805b7c09016a7058e91bdbe7b29d1f284a39e6",
"individual_note": false,
"notes": [
{
"id": 1128,
"type": "DiffNote",
"body": "diff comment",
"attachment": null,
"author": {
"id": 1,
"name": "root",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/00afb8fb6ab07c3ee3e9c1f38777e2f4?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"created_at": "2018-03-04T09:17:22.520Z",
"updated_at": "2018-03-04T09:17:22.520Z",
"system": false,
"noteable_id": 3,
"noteable_type": "Commit",
"project_id": 5,
"noteable_iid": null,
"position": {
"base_sha": "b5d6e7b1613fca24d250fa8e5bc7bcc3dd6002ef",
"start_sha": "7c9c2ead8a320fb7ba0b4e234bd9529a2614e306",
"head_sha": "4803c71e6b1833ca72b8b26ef2ecd5adc8a38031",
"old_path": "package.json",
"new_path": "package.json",
"position_type": "text",
"old_line": 27,
"new_line": 27
},
"resolvable": false
}
]
}
]
curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions"
単一コミットのディスカッション項目を取得
特定のプロジェクトコミットに関する単一のディスカッション項目を返します。
GET /projects/:id/repository/commits/:commit_id/discussions/:discussion_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
commit_id | 文字列です。 | yes | コミットのSHA。 |
discussion_id | 文字列です。 | yes | ディスカッション項目のID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions/<discussion_id>"
新しいコミットスレッドの作成
ひとつのプロジェクトコミットに対して新しいスレッドを作成します。ノートの作成と似ていますが、他のコメント (返信) を後から追加することができます。
POST /projects/:id/repository/commits/:commit_id/discussions
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | スレッドの内容 |
commit_id | 文字列です。 | yes | コミットのSHA。 |
id | 整数/文字列 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
position[base_sha] | 文字列です。 | yes | 親コミットのSHA。 |
position[head_sha] | 文字列です。 | yes | このコミットの SHA。commit_id と同じ。 |
position[start_sha] | 文字列です。 | yes | 親コミットのSHA。 |
position[position_type] | 文字列です。 | yes | 位置参照のタイプ。指定可能な値:text またはimage 。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 形式、2016-03-11T03:45:40Z のような。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
position | ハッシュ | いいえ | 差分ノート作成時の位置 |
position[new_path] | 文字列 | no | 変更後のファイルパス。 | position[new_line] | 整数 | no | 変更後の行番号。 | position[old_path] | 文字列 | no | 変更前のファイルパス。 | position[old_line] | 整数 | no | 変更前の行番号。 | position[height] | 整数 | no|image の差分ノートの場合、画像の高さ。 | position[width] | integer | no |
image の差分ノートの場合、画像の幅。 | position[x] | integer | no|image 差分ノートの場合、X座標。 | position[y] | integer | no |
image の差分ノートの場合、Y座標。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions?body=comment"
API リクエストの作成ルールは、マージリクエスト diff で新しいスレッドを作成する場合と同じです。例外があります:
base_sha
head_sha
start_sha
既存のコミットスレッドへのメモの追加
スレッドに新しいノートを追加します。
POST /projects/:id/repository/commits/:commit_id/discussions/:discussion_id/notes
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
body | 文字列です。 | yes | メモまたは返信の内容 |
commit_id | 文字列です。 | yes | コミットのSHA。 |
discussion_id | 文字列です。 | yes | スレッドのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
note_id | 整数。 | yes | スレッドノートのID。 |
created_at | 文字列です。 | いいえ | 日付時刻文字列、ISO 8601 フォーマット、例えば2016-03-11T03:45:40Z 。管理者またはプロジェクト/グループのオーナー権限が必要です。 |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions/<discussion_id>/notes?body=comment
既存のコミットスレッドノートの変更
コミットの既存のスレッドノートを変更または解決します。
PUT /projects/:id/repository/commits/:commit_id/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
commit_id | 文字列です。 | yes | コミットのSHA。 |
discussion_id | 文字列です。 | yes | スレッドのID。 |
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
note_id | 整数。 | yes | スレッドノートのID。 |
body | 文字列です。 | いいえ | メモの内容 |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions/<discussion_id>/notes/1108?body=comment"
ノートの解決
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions/<discussion_id>/notes/1108?resolved=true"
コミットスレッドのノートの削除
コミットの既存のスレッドノートを削除します。
DELETE /projects/:id/repository/commits/:commit_id/discussions/:discussion_id/notes/:note_id
パラメータを指定します:
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 整数または文字列。 | yes | プロジェクトのIDまたはURLエンコードされたパス。 |
commit_id | 文字列です。 | yes | コミットのSHA。 |
discussion_id | 文字列です。 | yes | スレッドのID。 |
note_id | 整数。 | yes | スレッドノートのID。 |
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions/<discussion_id>/notes/636"