コンテンツにスキップ
commentor API
Esc
↑↓移動↵開く⌘Jプレビュー

コメントを書く

run の中でコメントを 1 件書く。位置は Locator で指定する。 同じ run で同じ dedupeKey を送り直すと、新しく作らずに前のコメントを返す(応答に deduped: true)。通信が切れたときは同じキーで送り直せばよい。

POST/api/reviews/{reviewId}/ai-review-runs/{runId}/comments
Authorization
AuthorizationBearer token · headerrequired

エージェント用トークン。文書とコメントを読み、run の中でコメントを書くのに使う。ブラウザのログインと一緒に送らない。

or
AuthorizationBearer token · headerrequired

本人用の個人トークン。発行時に選んだ範囲の操作を、本人の名義で行う。読み取りと本人のトークン操作は、範囲を問わず使える。

Path parameters
reviewIdstringrequired

文書の ID。文書の URL /reviews/<reviewId> の末尾と同じ。

runIdstringrequired

run の ID。run を開始したときの応答の run.id。

Request body
requiredapplication/json
bodystringrequired

コメントの本文。

max length 3000
dedupeKeystringrequired

二重に書かないためのキー。run の中で指摘ごとに変える。

max length 200
locatorLocatorrequired

コメントを付ける位置。次の 6 通りのうち 1 つを送る。 引用がいちばん確実で、本文中の文字列をそのまま指定する(空白のゆれは 1 つにまとめて照合する)。

Show properties
One of:
object
quotestringrequired

本文中の文字列。文書の中で 1 か所だけに当たる長さにする。

max length 1000
sectionIdstring

探す範囲を見出しの区切りに絞る。区切りの ID は GET /dom-context で取る。

object
sectionIdstringrequired
object
elementIdstringrequired

HTML の要素の id 属性。

object
sectionIdstringrequired
xnumberrequired

区切りの左端からの位置(%)。

min 0 · max 100
ynumberrequired

区切りの上端からの位置(%)。

min 0 · max 100
object
sectionIdstringrequired
x1numberrequired
min 0 · max 100
y1numberrequired
min 0 · max 100
x2numberrequired
min 0 · max 100
y2numberrequired
min 0 · max 100
object
documentbooleanrequired
suggestionstring

書き換え案。

categorystring
default: "note"
Allowed:notereviseadddeleteneeds_reviewconsultnone
Responses
201

書けた。送り直しで前のコメントを返したときは deduped: true が付く。

reviewReview

文書とコメントの全体。ここに挙げた項目のほかにも、画面が使う項目が入る。

Show properties
reviewIdstring
titlestring
commentsRevisioninteger

コメントが書き換わるたびに 1 増える番号。書き込みで baseCommentsRevision として送る。

structureRevisioninteger
commentsComment[]
Show properties
Array of Comment
idstring
authorUser

書いた人。エージェント用トークンで書いたものは、トークンの持ち主の名義になる。

Show properties
idstring
providerstring
displayNamestring
categorystring

コメントの種類。note はメモ、revise は書き換えの提案、add は追記、delete は削除の提案、needs_review は確認、consult は相談。none は分類の無い旧いデータで、画面ではメモとして出す。

Allowed:notereviseadddeleteneeds_reviewconsultnone
statusstring

open は未解決、closed は解決済み。

Allowed:openclosed
bodystring
anchorobject

画面でコメントを表示する位置。書き込むときは anchor でなく Locator を送る。

threadThreadMessage[]
Show properties
Array of ThreadMessage
idstring
authorUser

書いた人。エージェント用トークンで書いたものは、トークンの持ち主の名義になる。

bodystring
createdTsstring<date-time>
statusEventsStatusEvent[]
Show properties
Array of StatusEvent
seqinteger
statusstring
Allowed:openclosed
byUser

書いた人。エージェント用トークンで書いたものは、トークンの持ち主の名義になる。

tsstring<date-time>
versionIdstring

コメントを付けた文書の版。

createdTsstring<date-time>
editedTsstring<date-time>
deletedTsstring<date-time>

削除されたコメントにだけ付く。画面には出ない。

aiReviewRunsRun[]
Show properties
Array of Run
idstring
kindstring
Allowed:ai_reviewvoice
statusstring
Allowed:runningcompletedfailedcancelled
titlestring
versionIdstring
commentIdsstring[]
summarystring
createdTsstring<date-time>
completedTsstring<date-time>
createdAtstring<date-time>
sourceobject

本文の出どころと版。

Show properties
versionsobject[]

版の一覧。古い順で、最後が最新の版。

Show properties
Array of object
versionIdstring
labelstring
createdAtinteger

版を作った時刻(UNIX 時間のミリ秒)。

sourceHashstring
_projectProjectLink

この文書に案件の結び付けがあるときだけ付く。

Show properties
codestringrequired
namestring | nullrequired
companystring | nullrequired
statusstringrequired
Allowed:activeinactive
inSnapshotbooleanrequired
rolestring | nullrequired

要求した本人の案件の役割。

Allowed:managereditorviewernull
commentComment
Show properties
idstring
authorUser

書いた人。エージェント用トークンで書いたものは、トークンの持ち主の名義になる。

Show properties
idstring
providerstring
displayNamestring
categorystring

コメントの種類。note はメモ、revise は書き換えの提案、add は追記、delete は削除の提案、needs_review は確認、consult は相談。none は分類の無い旧いデータで、画面ではメモとして出す。

Allowed:notereviseadddeleteneeds_reviewconsultnone
statusstring

open は未解決、closed は解決済み。

Allowed:openclosed
bodystring
anchorobject

画面でコメントを表示する位置。書き込むときは anchor でなく Locator を送る。

threadThreadMessage[]
Show properties
Array of ThreadMessage
idstring
authorUser

書いた人。エージェント用トークンで書いたものは、トークンの持ち主の名義になる。

Show properties
idstring
providerstring
displayNamestring
bodystring
createdTsstring<date-time>
statusEventsStatusEvent[]
Show properties
Array of StatusEvent
seqinteger
statusstring
Allowed:openclosed
byUser

書いた人。エージェント用トークンで書いたものは、トークンの持ち主の名義になる。

Show properties
idstring
providerstring
displayNamestring
tsstring<date-time>
versionIdstring

コメントを付けた文書の版。

createdTsstring<date-time>
editedTsstring<date-time>
deletedTsstring<date-time>

削除されたコメントにだけ付く。画面には出ない。

dedupedboolean

送り直しで前のコメントを返したときだけ付く。

400

本文が空・長すぎる(body_too_long)、dedupeKey が無い、Locator の形が違う(locator_invalid)、送れない項目がある(field_not_allowed)。

errorstringrequired

エラーの種類を表す短いコード。対処を分けるときはこの値を見る。

statusintegerrequired

HTTP ステータスと同じ値。

currentRevisioninteger

409 comments revision conflict のとき、文書の今の commentsRevision。

latestVersionIdstring

409 stale_target_version のとき、文書の最新版の ID。

401

トークンが無いか、この文書を読む権限が無い。

errorstringrequired

エラーの種類を表す短いコード。対処を分けるときはこの値を見る。

statusintegerrequired

HTTP ステータスと同じ値。

currentRevisioninteger

409 comments revision conflict のとき、文書の今の commentsRevision。

latestVersionIdstring

409 stale_target_version のとき、文書の最新版の ID。

403

このトークンでは使えない操作か、対象に対する権限が無い。使えるトークンは各操作の Authorization の欄を見る。

errorstringrequired

エラーの種類を表す短いコード。対処を分けるときはこの値を見る。

statusintegerrequired

HTTP ステータスと同じ値。

currentRevisioninteger

409 comments revision conflict のとき、文書の今の commentsRevision。

latestVersionIdstring

409 stale_target_version のとき、文書の最新版の ID。

404

文書・run・コメントのいずれかが無い。

errorstringrequired

エラーの種類を表す短いコード。対処を分けるときはこの値を見る。

statusintegerrequired

HTTP ステータスと同じ値。

currentRevisioninteger

409 comments revision conflict のとき、文書の今の commentsRevision。

latestVersionIdstring

409 stale_target_version のとき、文書の最新版の ID。

409

ai review run is terminal: run がもう終わっている。新しい run を開始する。 source_changed・version_changed: run を開始した後に文書の本文か版が変わった。文書を読み直し、新しい run で書き直す。

errorstringrequired

エラーの種類を表す短いコード。対処を分けるときはこの値を見る。

statusintegerrequired

HTTP ステータスと同じ値。

currentRevisioninteger

409 comments revision conflict のとき、文書の今の commentsRevision。

latestVersionIdstring

409 stale_target_version のとき、文書の最新版の ID。

422

位置が決まらない。quote_not_found(引用が本文に無い)、quote_not_unique(引用が 2 か所以上に当たる。長くするか sectionId で絞る)、 section_not_found、element_not_found、coordinate_out_of_range。 run_limit_exceeded: run の上限(コメントと返信で 100 件、文書全体への指摘は 5 件)を超えた。

errorstringrequired

エラーの種類を表す短いコード。対処を分けるときはこの値を見る。

statusintegerrequired

HTTP ステータスと同じ値。

currentRevisioninteger

409 comments revision conflict のとき、文書の今の commentsRevision。

latestVersionIdstring

409 stale_target_version のとき、文書の最新版の ID。

503

本文を一時的に読めない(source_unavailable)。少し待って送り直す。

errorstringrequired

エラーの種類を表す短いコード。対処を分けるときはこの値を見る。

statusintegerrequired

HTTP ステータスと同じ値。

currentRevisioninteger

409 comments revision conflict のとき、文書の今の commentsRevision。

latestVersionIdstring

409 stale_target_version のとき、文書の最新版の ID。

Request
curl -X POST 'https://comment-review.fsmarketing.workers.dev/api/reviews/review_example01/ai-review-runs/airun_example01/comments' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "body": "税込か税抜かを書いてください。",
  "dedupeKey": "price-tax",
  "locator": {
    "quote": "月額 980 円"
  }
}'
Response
{
  "review": {
    "reviewId": "string",
    "title": "string",
    "commentsRevision": 0,
    "structureRevision": 0,
    "comments": [
      {
        "id": "string",
        "author": {
          "id": "string",
          "provider": "string",
          "displayName": "string"
        },
        "category": "note",
        "status": "open",
        "body": "string",
        "anchor": {},
        "thread": [
          {
            "id": "string",
            "author": {
              "id": "string",
              "provider": "string",
              "displayName": "string"
            },
            "body": "string",
            "createdTs": "2019-08-24T14:15:22Z"
          }
        ],
        "statusEvents": [
          {
            "seq": 0,
            "status": "open",
            "by": {
              "id": "string",
              "provider": "string",
              "displayName": "string"
            },
            "ts": "2019-08-24T14:15:22Z"
          }
        ],
        "versionId": "string",
        "createdTs": "2019-08-24T14:15:22Z",
        "editedTs": "2019-08-24T14:15:22Z",
        "deletedTs": "2019-08-24T14:15:22Z"
      }
    ],
    "aiReviewRuns": [
      {
        "id": "string",
        "kind": "ai_review",
        "status": "running",
        "title": "string",
        "versionId": "string",
        "commentIds": [
          "string"
        ],
        "summary": "string",
        "createdTs": "2019-08-24T14:15:22Z",
        "completedTs": "2019-08-24T14:15:22Z"
      }
    ],
    "createdAt": "2019-08-24T14:15:22Z",
    "source": {
      "versions": [
        {
          "versionId": "string",
          "label": "string",
          "createdAt": 0,
          "sourceHash": "string"
        }
      ]
    },
    "_project": {
      "code": "EX-AA",
      "name": "string",
      "company": "string",
      "status": "active",
      "inSnapshot": true,
      "role": "manager"
    }
  },
  "comment": {
    "id": "string",
    "author": {
      "id": "string",
      "provider": "string",
      "displayName": "string"
    },
    "category": "note",
    "status": "open",
    "body": "string",
    "anchor": {},
    "thread": [
      {
        "id": "string",
        "author": {
          "id": "string",
          "provider": "string",
          "displayName": "string"
        },
        "body": "string",
        "createdTs": "2019-08-24T14:15:22Z"
      }
    ],
    "statusEvents": [
      {
        "seq": 0,
        "status": "open",
        "by": {
          "id": "string",
          "provider": "string",
          "displayName": "string"
        },
        "ts": "2019-08-24T14:15:22Z"
      }
    ],
    "versionId": "string",
    "createdTs": "2019-08-24T14:15:22Z",
    "editedTs": "2019-08-24T14:15:22Z",
    "deletedTs": "2019-08-24T14:15:22Z"
  },
  "deduped": true
}