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

Discussions API

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

ディスカッションは以下に添付されます:

  • スニペット
  • イシュー
  • エピック
  • マージリクエスト
  • コミット

これには、コメント、スレッド、システムノートが含まれます。システムノートは、オブジェクトへの変更に関するノートです(例: マイルストーンが変更された場合)。

ラベルノートはこのAPIの一部ではありませんが、リソースラベルイベントの個別のイベントとして記録されます。

APIのノートタイプについて

すべてのディスカッションタイプがAPIで同じように利用できるわけではありません:

  • 注: イシュー、マージリクエスト、コミット、またはスニペットの_root_に残されたコメント。
  • ディスカッション: イシュー、マージリクエスト、コミット、またはスニペット内のDiscussionNotesのコレクション(多くの場合、_スレッド_と呼ばれます)。
  • DiscussionNote: イシュー、マージリクエスト、コミット、またはスニペットのディスカッション内の個々のアイテム。タイプDiscussionNoteのアイテムは、ノートAPIの一部として返されません。Events APIでは利用できません。

ディスカッションのページネーション

APIの結果はページネーションされるため、デフォルトでは、GETリクエストは一度に20件の結果を返します。

詳細については、ページネーションを参照してください。

イシュー

プロジェクトイシューディスカッションアイテムの一覧表示

単一のイシューに対するすべてのディスカッションアイテムのリストを取得します。

GET /projects/:id/issues/:issue_iid/discussions

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
issue_iid整数はいイシューのIID

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

属性説明
id文字列ディスカッションのID。
individual_noteブール値trueの場合、個々のノートまたはディスカッションの一部。
notes配列ディスカッション内のノートオブジェクトの配列。
notes[].id整数ノートのID。
notes[].type文字列ノートのタイプ(DiscussionNoteまたはnull)。
notes[].body文字列ノートの内容。
notes[].authorオブジェクトノートの作成者。
notes[].created_at文字列ノートが作成された日時(ISO 8601形式)。
notes[].updated_at文字列ノートが最後に更新された日時(ISO 8601形式)。
notes[].systemブール値trueの場合、システムノート。
notes[].noteable_id整数ノート可能なオブジェクトのID。
notes[].noteable_type文字列ノート可能なオブジェクトのタイプ。
notes[].project_id整数プロジェクトのID。
notes[].resolvableブール値trueの場合、ノートは解決できます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/issues/11/discussions"

レスポンス例:

[
  {
    "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
      }
    ]
  }
]

単一のイシューディスカッションアイテムを取得

特定のプロジェクトイシューの単一のディスカッションアイテムを返します。

GET /projects/:id/issues/:issue_iid/discussions/:discussion_id

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

属性必須説明
discussion_id整数はいディスカッションアイテムのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
issue_iid整数はいイシューのIID

成功した場合、200 OKプロジェクトイシューディスカッションアイテムの一覧表示と同じレスポンス属性が返されます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/issues/11/discussions/<discussion_id>"

新規イシュースレッドの作成

単一のプロジェクトイシューに新しいスレッドを作成します。ノートの作成に似ていますが、他のコメント(返信)を後で追加できます。

POST /projects/:id/issues/:issue_iid/discussions

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

属性必須説明
body文字列はいスレッドのコンテンツ。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
issue_iid整数はいイシューのIID
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、201 Createdプロジェクトイシューディスカッションアイテムの一覧表示と同じレスポンス属性が返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/issues/11/discussions?body=comment"

既存のイシュースレッドへのノートの追加

新しいノートをスレッドに追加します。これは、単一のコメントからスレッドを作成することもできます。

ノートは、システムノートなど、コメント以外のアイテムにも追加でき、スレッドになります。

POST /projects/:id/issues/:issue_iid/discussions/:discussion_id/notes

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

属性必須説明
body文字列はいノートまたは返信のコンテンツ。
discussion_id整数はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
issue_iid整数はいイシューのIID
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、201 Createdと作成されたノートオブジェクトが返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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文字列はいノートまたは返信のコンテンツ。
discussion_id整数はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
issue_iid整数はいイシューのIID
note_id整数はいスレッドノートのID。

成功した場合、200 OKと更新されたノートオブジェクトが返されます。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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整数はいディスカッションのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
issue_iid整数はいイシューのIID
note_id整数はいディスカッションノートのID。

成功すると、204 No Contentを返します。

リクエスト例:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/issues/11/discussions/636"

スニペット

プロジェクトスニペットディスカッションアイテムの一覧表示

単一のスニペットに対するすべてのディスカッションアイテムのリストを取得します。

GET /projects/:id/snippets/:snippet_id/discussions

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
snippet_id整数はいスニペットのID。

成功した場合、200 OKプロジェクトイシューディスカッションアイテムの一覧表示と同じレスポンス属性が返され、noteable_typeSnippetに設定されます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions"

レスポンス例:

[
  {
    "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
      }
    ]
  }
]

単一のスニペットディスカッションアイテムを取得

特定のプロジェクトスニペットの単一のディスカッションアイテムを返します。

GET /projects/:id/snippets/:snippet_id/discussions/:discussion_id

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

属性必須説明
discussion_id整数はいディスカッションアイテムのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
snippet_id整数はいスニペットのID。

成功した場合、200 OKプロジェクトスニペットディスカッションアイテムの一覧表示と同じレスポンス属性が返されます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions/<discussion_id>"

新しいスニペットスレッドの作成

単一のプロジェクトスニペットに新しいスレッドを作成します。ノートの作成に似ていますが、他のコメント(返信)を後で追加できます。

POST /projects/:id/snippets/:snippet_id/discussions

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

属性必須説明
body文字列はいディスカッションのコンテンツ。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
snippet_id整数はいスニペットのID。
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、201 Createdと作成されたディスカッションオブジェクトが返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions?body=comment"

既存のスニペットスレッドへのノートの追加

新しいノートをスレッドに追加します。

POST /projects/:id/snippets/:snippet_id/discussions/:discussion_id/notes

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

属性必須説明
body文字列はいノートまたは返信のコンテンツ。
discussion_id整数はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
snippet_id整数はいスニペットのID。
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、201 Createdと作成されたノートオブジェクトが返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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文字列はいノートまたは返信のコンテンツ。
discussion_id整数はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
note_id整数はいスレッドノートのID。
snippet_id整数はいスニペットのID。

成功した場合、200 OKと更新されたノートオブジェクトが返されます。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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整数はいディスカッションのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
note_id整数はいディスカッションノートのID。
snippet_id整数はいスニペットのID。

成功すると、204 No Contentを返します。

リクエスト例:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/snippets/11/discussions/636"

エピック

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

エピックREST APIは、GitLab 17.0で非推奨となり、APIのv5で削除される予定です。これは破壊的な変更です。

代わりに、Work Items APIを使用してください:

  • GitLab 17.4から18.0: エピックの新しい外観が有効になっている場合に必要です。
  • GitLab 18.1以降: すべてのインストールで必須。

詳細については、API移行ガイドを参照してください。

グループエピックディスカッションアイテムの一覧表示

単一のエピックに対するすべてのディスカッションアイテムのリストを取得します。

GET /groups/:id/epics/:epic_id/discussions

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

属性必須説明
epic_id整数はいエピックのID。
id整数または文字列はいグループのIDまたはURLエンコードされたパス

成功した場合、200 OKプロジェクトイシューディスカッションアイテムの一覧表示と同じレスポンス属性が返され、noteable_typeEpicに設定されます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/5/epics/11/discussions"

レスポンス例:

[
  {
    "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
      }
    ]
  }
]

単一のエピックディスカッションアイテムを取得

特定のグループエピックの単一のディスカッションアイテムを返します。

GET /groups/:id/epics/:epic_id/discussions/:discussion_id

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

属性必須説明
discussion_id整数はいディスカッションアイテムのID。
epic_id整数はいエピックのID。
id整数または文字列はいグループのIDまたはURLエンコードされたパス

成功した場合、200 OKグループエピックディスカッションアイテムの一覧表示と同じレスポンス属性が返されます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/5/epics/11/discussions/<discussion_id>"

新しいエピックスレッドの作成

単一のグループエピックに新しいスレッドを作成します。ノートの作成に似ていますが、他のコメント(返信)を後で追加できます。

POST /groups/:id/epics/:epic_id/discussions

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

属性必須説明
body文字列はいスレッドのコンテンツ。
epic_id整数はいエピックのID。
id整数または文字列はいグループのIDまたはURLエンコードされたパス
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、201 Createdと作成されたディスカッションオブジェクトが返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/5/epics/11/discussions?body=comment"

既存のエピックスレッドへのノートの追加

新しいノートをスレッドに追加します。これは、単一のコメントからスレッドを作成することもできます。

POST /groups/:id/epics/:epic_id/discussions/:discussion_id/notes

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

属性必須説明
body文字列はいノートまたは返信のコンテンツ。
discussion_id整数はいスレッドのID。
epic_id整数はいエピックのID。
id整数または文字列はいグループのIDまたはURLエンコードされたパス
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、201 Createdと作成されたノートオブジェクトが返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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文字列はいノートまたは返信のコンテンツ。
discussion_id整数はいスレッドのID。
epic_id整数はいエピックのID。
id整数または文字列はいグループのIDまたはURLエンコードされたパス
note_id整数はいスレッドノートのID。

成功した場合、200 OKと更新されたノートオブジェクトが返されます。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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整数はいスレッドのID。
epic_id整数はいエピックのID。
id整数または文字列はいグループのIDまたはURLエンコードされたパス
note_id整数はいスレッドノートのID。

成功すると、204 No Contentを返します。

リクエスト例:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/groups/5/epics/11/discussions/636"

マージリクエスト

プロジェクトマージリクエストディスカッションアイテムの一覧表示

単一のマージリクエストに対するすべてのディスカッションアイテムのリストを取得します。

GET /projects/:id/merge_requests/:merge_request_iid/discussions

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

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

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

属性説明
id文字列ディスカッションのID。
individual_noteブール値trueの場合、個々のノートまたはディスカッションの一部。
notes配列ディスカッション内のノートオブジェクトの配列。
notes[].id整数ノートのID。
notes[].type文字列ノートのタイプ(DiscussionNoteDiffNote、またはnull)。
notes[].body文字列ノートの内容。
notes[].authorオブジェクトノートの作成者。
notes[].created_at文字列ノートが作成された日時(ISO 8601形式)。
notes[].updated_at文字列ノートが最後に更新された日時(ISO 8601形式)。
notes[].systemブール値trueの場合、システムノート。
notes[].noteable_id整数ノート可能なオブジェクトのID。
notes[].noteable_type文字列ノート可能なオブジェクトのタイプ。
notes[].project_id整数プロジェクトのID。
notes[].resolvedブール値trueの場合、ノートは解決されます(マージリクエストのみ)。
notes[].resolvableブール値trueの場合、ノートは解決できます。
notes[].resolved_byオブジェクトノートを解決したユーザー。
notes[].resolved_at文字列ノートが解決された日時(ISO 8601形式)。
notes[].positionオブジェクト差分ノートの位置情報。
notes[].suggestions配列ノートのサジェスチョンオブジェクトの配列。

差分コメントにも位置情報が含まれています:

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions"

レスポンス例:

[
  {
    "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": "MergeRequest",
        "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": "MergeRequest",
        "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": "MergeRequest",
        "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": "MergeRequest",
        "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",
              "old_line": null,
              "new_line": 10
            },
            "end": {
              "line_code": "588440f66559714280628a4f9799f0c4eb880a4a_11_11",
              "type": "old",
              "old_line": 11,
              "new_line": 11
            }
          }
        },
        "resolved": false,
        "resolvable": true,
        "resolved_by": null,
        "suggestions": [
          {
            "id": 1,
            "from_line": 27,
            "to_line": 27,
            "appliable": true,
            "applied": false,
            "from_content": "x",
            "to_content": "b"
          }
        ]
      }
    ]
  }
]

単一のマージリクエストディスカッションアイテムを取得

特定のプロジェクトマージリクエストの単一のディスカッションアイテムを返します。

GET /projects/:id/merge_requests/:merge_request_iid/discussions/:discussion_id

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

属性必須説明
discussion_id文字列はいディスカッションアイテムのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数はいマージリクエストのIID。

成功した場合、200 OKプロジェクトマージリクエストディスカッションアイテムの一覧表示と同じレスポンス属性が返されます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions/<discussion_id>"

新しいマージリクエストスレッドを作成する

単一のプロジェクトマージリクエストに新しいスレッドを作成します。ノートの作成に似ていますが、他のコメント(返信)を後で追加できます。他の方法については、コミットAPIのコミットへのコメントの投稿 、およびノートAPIの新しいマージリクエストノートの作成を参照してください。

POST /projects/:id/merge_requests/:merge_request_iid/discussions

すべてのコメントでサポートされている属性:

属性必須説明
body文字列はいスレッドのコンテンツ。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数はいマージリクエストのIID。
commit_id文字列いいえこのディスカッションを開始するコミットを参照するSHA。
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。
positionハッシュいいえ差分ノートを作成する際の位置。
position[base_sha]文字列はい(position*が指定されている場合)ソースブランチのベースコミットSHA。
position[head_sha]文字列はい(position*が指定されている場合)このマージリクエストのHEADを参照するSHA。
position[start_sha]文字列はい(position*が指定されている場合)ターゲットブランチ内のコミットを参照するSHA。
position[position_type]文字列はい(position*が指定されている場合)ポジション参照のタイプ。使用できる値: textimage、またはfilefileはGitLab 16.4で導入されました。
position[new_path]文字列はい(ポジションタイプがtextの場合)変更後のファイルパス。
position[old_path]文字列はい(ポジションタイプがtextの場合)変更前のファイルパス。
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座標。

成功した場合、201 Createdと作成されたディスカッションオブジェクトが返されます。

概要ページに新しいスレッドを作成する

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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]を含めないでください。
  • 削除された行(マージリクエスト差分で赤色で強調表示)にスレッドを作成するには、position[old_line]を使用し、position[new_line]を含めないでください。
  • 変更されていない行にスレッドを作成するには、その行のposition[new_line]position[old_line]の両方を含めます。ファイル内の以前の変更で行番号が変更された場合、これらのポジションが同じではない可能性があります。修正に関するディスカッションについては、イシュー32516を参照してください。
  • 正しくないbaseheadstart、またはSHAパラメータを指定すると、イシュー#296829で説明されているバグが発生する可能性があります。

新しいスレッドを作成するには:

  1. 最新のマージリクエストバージョンを取得:

    curl --header "PRIVATE-TOKEN: <your_access_token>" \
      --url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/versions"
  2. レスポンス配列に最初にリストされている最新バージョンの詳細をメモしておきます。

    [
      {
        "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"
    ]
  3. 新しい差分スレッドを作成します。この例では、追加された行にスレッドを作成します:

    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' \
      --url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions"

複数行のコメントのパラメータ

複数行のコメントでサポートされている属性のみ:

属性必須説明
position[line_range][end][line_code]文字列はい終了行の行コード
position[line_range][end][type]文字列はいこのコミットによって追加された行にはnewを使用し、それ以外の場合はoldを使用します。
position[line_range][end][old_line]整数いいえ終了行の古い行番号。
position[line_range][end][new_line]整数いいえ終了行の新しい行番号。
position[line_range][start][line_code]文字列はい開始行の行コード
position[line_range][start][type]文字列はいこのコミットによって追加された行にはnewを使用し、それ以外の場合はoldを使用します。
position[line_range][start][old_line]整数いいえ開始行の古い行番号。
position[line_range][start][new_line]整数いいえ開始行の新しい行番号。
position[line_range][end]ハッシュいいえ複数行の注釈の終了行。
position[line_range][start]ハッシュいいえ複数行の注釈の開始行。

line_range属性内のold_lineおよびnew_lineパラメータは、複数行のコメントの範囲を表示します。たとえば、「+296~+297行のコメント」などです。

行コード

行コードは<SHA>_<old>_<new>の形式です。例: adc83b19e793491b1c6ea0fd8b46cd9f32e292fc_5_5

  • <SHA>は、ファイル名のSHA1ハッシュです。
  • <old>は、変更前の行番号です。
  • <new>は、変更後の行番号です。

たとえば、コミット(<COMMIT_ID>)がReadmeの463行目を削除する場合、古いファイルの463行目を参照して削除についてコメントできます:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --form "note=Very clever to remove this unnecessary line!" \
  --form "path=README" \
  --form "line=463" \
  --form "line_type=old" \
  --url "https://gitlab.com/api/v4/projects/47/repository/commits/<COMMIT_ID>/comments"

たとえば、コミット(<COMMIT_ID>)がhello.rbに157行目を追加する場合、新しいファイルの157行目を参照して追加についてコメントできます:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --form "note=This is brilliant!" \
  --form "path=hello.rb" \
  --form "line=157" \
  --form "line_type=new" \
  --url "https://gitlab.com/api/v4/projects/47/repository/commits/<COMMIT_ID>/comments"

マージリクエストスレッドを解決する

マージリクエストでディスカッションのスレッドを解決または再度開きます。

前提要件:

  • 少なくともデベロッパーロールを持っているか、レビュー対象の変更の作成者である必要があります。
PUT /projects/:id/merge_requests/:merge_request_iid/discussions/:discussion_id

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

属性必須説明
discussion_id文字列はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数はいマージリクエストのIID。
resolvedブール値はいtrueの場合、ディスカッションを解決または再度開きます。

成功した場合、200 OKと更新されたディスカッションオブジェクトが返されます。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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文字列はい注記または返信のコンテンツ。
discussion_id文字列はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数はいマージリクエストのIID。
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、201 Createdと作成された注記オブジェクトが返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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文字列はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数はいマージリクエストのIID。
note_id整数はいスレッドの注記のID。
body文字列いいえ注記または返信のコンテンツ。bodyまたはresolvedのいずれか1つを設定する必要があります。
resolvedブール値いいえ注記を解決または再度開きます。bodyまたはresolvedのいずれか1つを設定する必要があります。

成功した場合、200 OKと更新された注記オブジェクトが返されます。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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>" \
  --url "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文字列はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数はいマージリクエストのIID。
note_id整数はいスレッドの注記のID。

成功すると、204 No Contentを返します。

リクエスト例:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/discussions/636"

コミット

プロジェクトコミットのディスカッションアイテムを一覧表示する

単一のコミットに対するすべてのディスカッションアイテムのリストを取得します。

GET /projects/:id/repository/commits/:commit_id/discussions

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

属性必須説明
commit_id文字列はいコミットのSHA。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス

成功した場合、200 OKと、noteable_typeCommitに設定されたプロジェクトイシューのディスカッションアイテムのリストと同じレスポンス属性が返されます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions"

レスポンス例:

[
  {
    "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
      }
    ]
  }
]

単一のコミットのディスカッションアイテムを取得する

特定のプロジェクトコミットに対する単一のディスカッションアイテムを返します

GET /projects/:id/repository/commits/:commit_id/discussions/:discussion_id

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

属性必須説明
commit_id文字列はいコミットのSHA。
discussion_id文字列はいディスカッションアイテムのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス

成功した場合、200 OKと、プロジェクトコミットのディスカッションアイテムのリストと同じレスポンス属性が返されます。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions/<discussion_id>"

新しいコミットスレッドを作成する

単一のプロジェクトコミットに新しいスレッドを作成します。注記の作成と同様ですが、後で他のコメント(返信)を追加できます。

POST /projects/:id/repository/commits/:commit_id/discussions

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

属性必須説明
body文字列はいスレッドのコンテンツ。
commit_id文字列はいコミットのSHA。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。
positionハッシュいいえDiff注記を作成するときのポジション。
position[base_sha]文字列はい(position*が指定されている場合)親コミットのSHA。
position[head_sha]文字列はい(position*が指定されている場合)このコミットのSHA。commit_idと同じです。
position[start_sha]文字列はい(position*が指定されている場合)親コミットのSHA。
position[position_type]文字列はい(position*が指定されている場合)ポジション参照のタイプ。使用できる値: textimage、またはfilefileはGitLab 16.4で導入されました。
position[new_path]文字列いいえ変更後のファイルパス。
position[new_line]整数いいえ変更後の行番号。
position[old_path]文字列いいえ変更前のファイルパス。
position[old_line]整数いいえ変更前の行番号。
position[height]整数いいえimageDiff注記の場合、画像の高さ。
position[width]整数いいえimageDiff注記の場合、画像の幅。
position[x]整数いいえimageDiff注記の場合、X座標。
position[y]整数いいえimageDiff注記の場合、Y座標。

成功した場合、201 Createdと作成されたディスカッションオブジェクトが返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions?body=comment"

APIリクエストを作成するためのルールは、マージリクエストの差分に新しいスレッドを作成する場合と同じです。例外:

  • base_sha
  • head_sha
  • start_sha

既存のコミットスレッドに注記を追加する

新しい注記をスレッドに追加します。

POST /projects/:id/repository/commits/:commit_id/discussions/:discussion_id/notes

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

属性必須説明
body文字列はい注記または返信のコンテンツ。
commit_id文字列はいコミットのSHA。
discussion_id文字列はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
created_at文字列いいえ日時文字列。2016-03-11T03:45:40Zのように、ISO 8601形式で記述します。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、201 Createdと作成された注記オブジェクトが返されます。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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

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

属性必須説明
body文字列いいえノートのコンテンツ。
commit_id文字列はいコミットのSHA。
discussion_id文字列はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
note_id整数はいスレッドの注記のID。

成功した場合、200 OKと更新された注記オブジェクトが返されます。

リクエスト例:

curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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>" \
  --url "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

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

属性必須説明
commit_id文字列はいコミットのSHA。
discussion_id文字列はいスレッドのID。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
note_id整数はいスレッドの注記のID。

成功すると、204 No Contentを返します。

リクエスト例:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/repository/commits/<commit_id>/discussions/<discussion_id>/notes/636"