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

ディスカッションAPI

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

このAPIを使用してディスカッションを管理します。これには、コメント、スレッド、およびオブジェクトへの変更に関するシステムノート(たとえば、マイルストーンが変更されたとき)が含まれます。

ラベルノートを管理するには、リソースラベルイベントAPIを使用します。

APIにおけるノートタイプについて

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

  • 注: イシュー、マージリクエスト、コミット、またはスニペットの_root_に残されたコメントです。
  • ディスカッション: イシュー、マージリクエスト、コミット、またはスニペットにおける_スレッド_と呼ばれるDiscussionNotesのコレクション。
  • DiscussionNote: イシュー、マージリクエスト、コミット、またはスニペット上のディスカッションにおける個々のアイテム。DiscussionNoteタイプのアイテムは、Note 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文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、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"

イシュースレッドにノートを追加

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

システムノートにはノートを追加できません。これを行おうとすると、400 Bad Requestエラーが返されます。

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

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

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

成功した場合、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/<note_id>?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/<discussion_id>/notes/<note_id>"

スニペット

すべてのスニペットのディスカッションアイテムをリストアップ

プロジェクト内の指定されたスニペットのすべてのディスカッションアイテムをリストアップします。

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文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、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文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、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/<note_id>?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/<discussion_id>/notes/<note_id>"

エピック

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

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

代わりに作業アイテム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文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、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文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、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/<note_id>?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/<discussion_id>/notes/<note_id>"

マージリクエスト

すべてのマージリクエストのディスカッションアイテムをリストアップ

指定されたマージリクエストのすべてのディスカッションアイテムをリストアップします。

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>"

マージリクエストスレッドを作成

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

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

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

属性必須説明
body文字列はいスレッドのコンテンツ。
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
merge_request_iid整数はいマージリクエストのIID。
commit_id文字列いいえこのディスカッションを開始するコミットを参照するSHA。
created_at文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。
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文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、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/<note_id>?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/<note_id>?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/<discussion_id>/notes/<note_id>"

コミット

すべてのコミットディスカッションアイテムをリストアップ

指定されたコミットのすべてのディスカッションアイテムをリストアップします。

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
      }
    ]
  }
]

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

[
  {
    "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文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。
positionハッシュいいえ差分ノートを作成する際のポジション。
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]整数いいえimage差分ノートの場合、画像の高さ。
position[width]整数いいえ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/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文字列いいえ日付時刻文字列、ISO 8601形式(例: 2016-03-11T03:45:40Z)。管理者権限またはプロジェクト・グループオーナー権限が必要です。

成功した場合、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/<note_id>?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/<note_id>?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/<note_id>"