Space/documents

ブロックハッシュとリビジョンによって保護された prose ops(insert、replace、delete、move、set、restore)を使用し、ブロック ID または引用された単語によって社内 Space ドキュメントを編集

Space ドキュメントを prose ops で編集します。最新バージョンに対して順序どおり、かつオールオアナッシングで適用されます(その間にユーザーが入力したテキストは保持されます)。Ops: insert {target, side, source} · replace {target, with} · delete {target} · move {target, to:{target, side}} · set {target, attrs:{kind|checked|background|rows|spec|caption}} · restore {rev}(その呼び出し内で唯一の op、payload.ifRev = 最新リビジョン)。Targets: {"kind":"find","text":"…","nth"?} 現状の単語 · {"kind":"blocks","ids":[…]} read または ack から取得した完全な ID · {"kind":"root"}(side: start/end) · {"kind":"cell","table","row","col"}。source/with = {"from":{"kind":"inline","content":…},"as":"text"|"markdown"|"blocks"}: text は書式を保持したままその場で文言を変更します。markdown はブロックを再作成します。blocks は JSON ノードツリーです(テーブルの行: [{"type":"row","content":[{"type":"cell",…}]}])。pending(保留中)のブロックは、その ID を "## Heading" + 本文 で置換することで入力されます(ガードなし)。その後の編集では、その ack 内の ID を使用します。ブロック全体の replace/delete には "ifHash"(最新の h)と "ifRev"(それを表示した読み取り時の rev)を含めます。複数の ID またはセルには "ifRev" を指定します。"force" は上書きを明示的に指示された場合のみ使用します。見出し ID に対する side "end" = そのセクションの末尾、リスト/テーブル/行 ID に対する side "end" = その内部への追加となります。set: リストの kind は bullet|ordered|check、チェックリスト項目の checked、セルの background は #f0efec #fbebeb #f9ece7 #f9eeda #e5f4e4 #e7f1fb #efedff のいずれか(null でクリア)です。列(Column): すべての行 ID において "each":true を指定して insert します。チャートとダイアグラム: チャートブロックは rows + spec から描画され、画像になることはありません。ダイアグラムブロックは boxes + connectors から描画されます。埋め込みチップ <?claude block chart?> + blocks {"chart":{"type":"chart","spec":{…},"rows":[…],"caption":"…"}}(または "type":"diagram")で配置し、その ID に対して set attrs {rows|spec|caption} を実行して変更します。チップ: Markdown 内に <?claude block key?> を配置し、"blocks" 内にチップを配置します。mention は {"user":"me"}(リクエスト元のユーザー)、既存メンバーのユーザー ID、またはユーザーが明示的に指定した場合のみメールアドレスを指定します(推測して指定しないでください)。mention {"ref":"project/<doc id>"} は別のドキュメントにリンクします。date {"value":"YYYY-MM-DD"} は実行可能な日付にのみ使用します。このワークスペースのメンバーおよびドキュメントのみが解決されます。画像とファイル: まず Blob を作成し(create_space_document_blob)、その Markdown(alt)を挿入します。別のワークスペースの blob/<id> は拒否されます。拒否された場合は何も書き込まれません。error.code(guard_mismatch: ブロックが変更されたため error.data に現状が表示されます。そこからやり直してください。force は決して使用しないでください。find_none: 再度読み取り、現在の記述を引用してください。block_gone: 誰かが削除したため、決して再作成しないでください。missing_guard、cell_none、last_block、same_anchor、place_arity、shape、bad_request)および error.param(op のパス)を含む 409 が返されます。

POST
/v1/space/documents/{document_id}/edit
curl -X POST "https://api.orchestor.io/v1/space/documents/%3Cdocument_id%3E/edit" \  -H "Authorization: Bearer $API_KEY" \  -H "X-Workspace-ID: wks_abc123" \  -H "Content-Type: application/json" \  -d '{  "answering": "string",  "ifRev": 1,  "ops": [    {      "each": true,      "op": "insert",      "side": "before",      "source": {        "as": "text",        "blocks": {},        "from": {          "content": "string",          "kind": "inline"        }      },      "target": {        "kind": "find",        "nth": 1,        "text": "string",        "within": {          "col": 1,          "kind": "cell",          "row": 1,          "table": "string"        }      }    }  ]}'
{  "data": {    "ops": [      {        "notices": [          "<string>"        ],        "op": "<string>",        "xml": "<string>"      }    ],    "rev": 0  }}

Orchestor API キーを取得

ワークスペースの設定から API キーを作成します。

認証

次のいずれかの条件を満たしてください。

  • Session cookie
  • API key

認証の詳細

cookie
wos-session

ウェブアプリにサインインすることで確立されるブラウザセッションです。サーバーは、ワークスペースのメンバーシップと権限を確認します。ワークスペーススコープの操作には X-Workspace-ID を指定してください。サーバー間リクエストの場合、操作がサポートしていれば API キーを使用します。

パスパラメータ

document_idstringpath必須
パターン
^doc_[a-f0-9]{24}$

ヘッダー

X-Workspace-IDstringheader

アクセスするワークスペースです。ワークスペーススコープの API キーを使用する場合、サーバーはキーからこの値を導出するため、ヘッダーは任意です。指定する場合、認証情報のワークスペースと一致する必要があり、一致しない場合リクエストは 403 workspace_mismatch を返します。インタラクティブなセッションリクエストの場合、メンバーになっているワークスペースを選択するためにこのヘッダーを指定します。プロジェクト ID をワークスペース ID として使用することはできません。

例"wks_abc123"

ボディapplication/json必須

answeringstringbody

コメントによって求められた場合に、この編集が応答するスレッド(その最初のコメント ID)です。

パターン
^dcm_[a-f0-9]{24}$
ifRevintegerbody
値の範囲
≥ 0
ops(object | object | object | object | object | object)[]body必須
要素数
≥ 1, ≤ 64
ops[]object | object | object | object | object | objectbody

以下のいずれかに一致

形式 1: object

ops[].eachbooleanbody
ops[].opstringenum<string>body必須
許可される値
insert
ops[].sidestringenum<string>body必須
許可される値
beforeafterstartend
ops[].sourceobjectbody必須
ops[].source.asstringenum<string>body必須
許可される値
textmarkdownblocks
ops[].source.blocksobjectbody

Markdown 内の <?claude block key?> トークン用のチップです。例: {"s1":{"type":"pending","intent":"Risks: …"}}、{"me":{"type":"mention","user":"me"},"due":{"type":"date","value":"2026-11-01"},"plan":{"type":"mention","ref":"project/doc_…"}}、または {"chart":{"type":"chart","spec":{…},"rows":[…],"caption":"<where the numbers come from>"}}。

ops[].source.blocks.*object | object | object | object | object | object | objectbody

以下のいずれかに一致

形式 1: object

ops[].source.blocks.*.intentstringbody必須
文字数
≤ 2000
ops[].source.blocks.*.typestringenum<string>body必須
許可される値
pending

形式 2: object

ops[].source.blocks.*.typestringenum<string>body必須
許可される値
paragraph

形式 3: object

ops[].source.blocks.*.captionstringbody
ops[].source.blocks.*.rowsobject[]body必須

チャートが描画する測定された行です(2000 行以下、256 KiB)。

要素数
≤ 2000
ops[].source.blocks.*.rows[]objectbody
ops[].source.blocks.*.rows[].*string | number | boolean | nullbody

以下のいずれかに一致

形式 1: string

ops[].source.blocks.*.rows[].*stringbody

形式 2: number

ops[].source.blocks.*.rows[].*numberbody

形式 3: boolean

ops[].source.blocks.*.rows[].*booleanbody

形式 4: null

ops[].source.blocks.*.rows[].*nullbody
ops[].source.blocks.*.specobjectbody必須
ops[].source.blocks.*.spec.kindstringenum<string>body必須
許可される値
linebarpie
ops[].source.blocks.*.spec.seriesstringbody

その値(VALUES)が系列名となるカラムです。系列および期間ごとに 1 行です。

ops[].source.blocks.*.spec.titlestringbody必須

トピックではなく、番号付きの調査結果です。

文字数
≥ 1
ops[].source.blocks.*.spec.unitstringbody
ops[].source.blocks.*.spec.xstringbody必須

軸に沿ったカラム(または円グラフのスライス)です。

文字数
≥ 1
ops[].source.blocks.*.spec.ystringbody必須

測定対象のカラム(数値)です。

文字数
≥ 1
ops[].source.blocks.*.typestringenum<string>body必須
許可される値
chart

形式 4: object

ops[].source.blocks.*.captionstringbody
ops[].source.blocks.*.specobjectbody必須
ops[].source.blocks.*.spec.directionstringenum<string>body必須
許可される値
rightdown
ops[].source.blocks.*.spec.edgesobject[]body必須
要素数
≤ 120
ops[].source.blocks.*.spec.edges[]objectbody
ops[].source.blocks.*.spec.edges[].fromstringbody必須
ops[].source.blocks.*.spec.edges[].labelstringbody
ops[].source.blocks.*.spec.edges[].tostringbody必須
ops[].source.blocks.*.spec.nodesobject[]body必須
要素数
≥ 1, ≤ 60
ops[].source.blocks.*.spec.nodes[]objectbody
ops[].source.blocks.*.spec.nodes[].detailstringbody
ops[].source.blocks.*.spec.nodes[].idstringbody必須
パターン
^[\w-]{1,64}$
ops[].source.blocks.*.spec.nodes[].labelstringbody必須
文字数
≥ 1
ops[].source.blocks.*.spec.titlestringbody必須
文字数
≥ 1
ops[].source.blocks.*.typestringenum<string>body必須
許可される値
diagram

形式 5: object

ops[].source.blocks.*.typestringenum<string>body必須
許可される値
mention
ops[].source.blocks.*.userstringbody必須
文字数
≥ 1, ≤ 320

形式 6: object

ops[].source.blocks.*.refstringbody必須
パターン
^project\/doc_[a-f0-9]{24}$
ops[].source.blocks.*.typestringenum<string>body必須
許可される値
mention

形式 7: object

ops[].source.blocks.*.typestringenum<string>body必須
許可される値
date
ops[].source.blocks.*.valuestringbody必須
パターン
^\d{4}-\d{2}-\d{2}$
ops[].source.fromobjectbody必須
ops[].source.from.contentstring | object[] | objectbody必須

以下のいずれかに一致

形式 1: string

ops[].source.from.contentstringbody

形式 2: object[]

ops[].source.from.content[]objectbody
ops[].source.from.content[].*anybody

形式 3: object

ops[].source.from.content.*anybody
ops[].source.from.kindstringenum<string>body必須
許可される値
inline
ops[].targetobject | object | object | objectbody必須

以下のいずれかに一致

形式 1: object

前回の read または ack に表示されたとおりの正確な単語です。重複する場合は "nth" を指定します(デフォルトは 1)。

ops[].target.kindstringenum<string>body必須
許可される値
find
ops[].target.nthintegerbody
値の範囲
≥ 1
ops[].target.textstringbody必須
文字数
≥ 1
ops[].target.withinobjectbody

位置によるテーブルセルです: 0 = 最初の行(ヘッダー行)/ 最初の列、-1 = 最後。

ops[].target.within.colintegerbody必須
ops[].target.within.kindstringenum<string>body必須
許可される値
cell
ops[].target.within.rowintegerbody必須
ops[].target.within.tablestringbody必須

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$

形式 2: object

ops[].target.idsstring[]body必須
要素数
≥ 1, ≤ 4096
ops[].target.ids[]stringbody

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$
ops[].target.kindstringenum<string>body必須
許可される値
blocks

形式 3: object

ops[].target.kindstringenum<string>body必須
許可される値
root

形式 4: object

位置によるテーブルセルです: 0 = 最初の行(ヘッダー行)/ 最初の列、-1 = 最後。

ops[].target.colintegerbody必須
ops[].target.kindstringenum<string>body必須
許可される値
cell
ops[].target.rowintegerbody必須
ops[].target.tablestringbody必須

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$

形式 2: object

ops[].forcebooleanbody
ops[].ifHashstringbody
パターン
^[0-9a-f]{8}$
ops[].ifRevintegerbody
値の範囲
≥ 0
ops[].opstringenum<string>body必須
許可される値
replace
ops[].targetobject | object | object | objectbody必須

以下のいずれかに一致

形式 1: object

前回の read または ack に表示されたとおりの正確な単語です。重複する場合は "nth" を指定します(デフォルトは 1)。

ops[].target.kindstringenum<string>body必須
許可される値
find
ops[].target.nthintegerbody
値の範囲
≥ 1
ops[].target.textstringbody必須
文字数
≥ 1
ops[].target.withinobjectbody

位置によるテーブルセルです: 0 = 最初の行(ヘッダー行)/ 最初の列、-1 = 最後。

ops[].target.within.colintegerbody必須
ops[].target.within.kindstringenum<string>body必須
許可される値
cell
ops[].target.within.rowintegerbody必須
ops[].target.within.tablestringbody必須

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$

形式 2: object

ops[].target.idsstring[]body必須
要素数
≥ 1, ≤ 4096
ops[].target.ids[]stringbody

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$
ops[].target.kindstringenum<string>body必須
許可される値
blocks

形式 3: object

ops[].target.kindstringenum<string>body必須
許可される値
root

形式 4: object

位置によるテーブルセルです: 0 = 最初の行(ヘッダー行)/ 最初の列、-1 = 最後。

ops[].target.colintegerbody必須
ops[].target.kindstringenum<string>body必須
許可される値
cell
ops[].target.rowintegerbody必須
ops[].target.tablestringbody必須

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$
ops[].withobjectbody必須
ops[].with.asstringenum<string>body必須
許可される値
textmarkdownblocks
ops[].with.blocksobjectbody

Markdown 内の <?claude block key?> トークン用のチップです(例: {"s1":{"type":"pending","intent":"Risks: …"}}、{"me":{"type":"mention","user":"me"},"due":{"type":"date","value":"2026-11-01"},"plan":{"type":"mention","ref":"project/doc_…"}}、または {"chart":{"type":"chart","spec":{…},"rows":[…],"caption":"<where the numbers come from>"}})。

ops[].with.blocks.*object | object | object | object | object | object | objectbody

以下のいずれかに一致

形式 1: object

ops[].with.blocks.*.intentstringbody必須
文字数
≤ 2000
ops[].with.blocks.*.typestringenum<string>body必須
許可される値
pending

形式 2: object

ops[].with.blocks.*.typestringenum<string>body必須
許可される値
paragraph

形式 3: object

ops[].with.blocks.*.captionstringbody
ops[].with.blocks.*.rowsobject[]body必須

チャートが描画する測定値の行です(≤ 2000行、256 KiB)。

要素数
≤ 2000
ops[].with.blocks.*.rows[]objectbody
ops[].with.blocks.*.rows[].*string | number | boolean | nullbody

以下のいずれかに一致

形式 1: string

ops[].with.blocks.*.rows[].*stringbody

形式 2: number

ops[].with.blocks.*.rows[].*numberbody

形式 3: boolean

ops[].with.blocks.*.rows[].*booleanbody

形式 4: null

ops[].with.blocks.*.rows[].*nullbody
ops[].with.blocks.*.specobjectbody必須
ops[].with.blocks.*.spec.kindstringenum<string>body必須
許可される値
linebarpie
ops[].with.blocks.*.spec.seriesstringbody

値(VALUES)が系列名となる列です。系列および期間ごとに1行となります。

ops[].with.blocks.*.spec.titlestringbody必須

トピックではなく、番号を含めた調査結果です。

文字数
≥ 1
ops[].with.blocks.*.spec.unitstringbody
ops[].with.blocks.*.spec.xstringbody必須

軸に沿った列(または円グラフのスライス)です。

文字数
≥ 1
ops[].with.blocks.*.spec.ystringbody必須

測定された列(数値)です。

文字数
≥ 1
ops[].with.blocks.*.typestringenum<string>body必須
許可される値
chart

形式 4: object

ops[].with.blocks.*.captionstringbody
ops[].with.blocks.*.specobjectbody必須
ops[].with.blocks.*.spec.directionstringenum<string>body必須
許可される値
rightdown
ops[].with.blocks.*.spec.edgesobject[]body必須
要素数
≤ 120
ops[].with.blocks.*.spec.edges[]objectbody
ops[].with.blocks.*.spec.edges[].fromstringbody必須
ops[].with.blocks.*.spec.edges[].labelstringbody
ops[].with.blocks.*.spec.edges[].tostringbody必須
ops[].with.blocks.*.spec.nodesobject[]body必須
要素数
≥ 1, ≤ 60
ops[].with.blocks.*.spec.nodes[]objectbody
ops[].with.blocks.*.spec.nodes[].detailstringbody
ops[].with.blocks.*.spec.nodes[].idstringbody必須
パターン
^[\w-]{1,64}$
ops[].with.blocks.*.spec.nodes[].labelstringbody必須
文字数
≥ 1
ops[].with.blocks.*.spec.titlestringbody必須
文字数
≥ 1
ops[].with.blocks.*.typestringenum<string>body必須
許可される値
diagram

形式 5: object

ops[].with.blocks.*.typestringenum<string>body必須
許可される値
mention
ops[].with.blocks.*.userstringbody必須
文字数
≥ 1, ≤ 320

形式 6: object

ops[].with.blocks.*.refstringbody必須
パターン
^project\/doc_[a-f0-9]{24}$
ops[].with.blocks.*.typestringenum<string>body必須
許可される値
mention

形式 7: object

ops[].with.blocks.*.typestringenum<string>body必須
許可される値
date
ops[].with.blocks.*.valuestringbody必須
パターン
^\d{4}-\d{2}-\d{2}$
ops[].with.fromobjectbody必須
ops[].with.from.contentstring | object[] | objectbody必須

以下のいずれかに一致

形式 1: string

ops[].with.from.contentstringbody

形式 2: object[]

ops[].with.from.content[]objectbody
ops[].with.from.content[].*anybody

形式 3: object

ops[].with.from.content.*anybody
ops[].with.from.kindstringenum<string>body必須
許可される値
inline

形式 3: object

ops[].forcebooleanbody
ops[].ifHashstringbody
パターン
^[0-9a-f]{8}$
ops[].ifRevintegerbody
値の範囲
≥ 0
ops[].opstringenum<string>body必須
許可される値
delete
ops[].targetobject | object | object | objectbody必須

以下のいずれかに一致

形式 1: object

直前の read または ack にあるとおりの正確な単語です。重複する場合は "nth" を指定します(デフォルトは 1)。

ops[].target.kindstringenum<string>body必須
許可される値
find
ops[].target.nthintegerbody
値の範囲
≥ 1
ops[].target.textstringbody必須
文字数
≥ 1
ops[].target.withinobjectbody

位置によるテーブルセルです。0 = 最初の行(ヘッダー行)/ 最初の列、-1 = 最後。

ops[].target.within.colintegerbody必須
ops[].target.within.kindstringenum<string>body必須
許可される値
cell
ops[].target.within.rowintegerbody必須
ops[].target.within.tablestringbody必須

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$

形式 2: object

ops[].target.idsstring[]body必須
要素数
≥ 1, ≤ 4096
ops[].target.ids[]stringbody

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$
ops[].target.kindstringenum<string>body必須
許可される値
blocks

形式 3: object

ops[].target.kindstringenum<string>body必須
許可される値
root

形式 4: object

位置によるテーブルセルです。0 = 最初の行(ヘッダー行)/ 最初の列、-1 = 最後。

ops[].target.colintegerbody必須
ops[].target.kindstringenum<string>body必須
許可される値
cell
ops[].target.rowintegerbody必須
ops[].target.tablestringbody必須

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$

形式 4: object

ops[].opstringenum<string>body必須
許可される値
move
ops[].targetobjectbody必須
ops[].target.idsstring[]body必須
要素数
≥ 1, ≤ 4096
ops[].target.ids[]stringbody

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$
ops[].target.kindstringenum<string>body必須
許可される値
blocks
ops[].toobjectbody必須
ops[].to.sidestringenum<string>body必須
許可される値
beforeafterstartend
ops[].to.targetobject | objectbody必須

以下のいずれかに一致

形式 1: object

ops[].to.target.idsstring[]body必須
要素数
≥ 1, ≤ 4096
ops[].to.target.ids[]stringbody

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$
ops[].to.target.kindstringenum<string>body必須
許可される値
blocks

形式 2: object

ops[].to.target.kindstringenum<string>body必須
許可される値
root

形式 5: object

ops[].attrsobjectbody必須
ops[].attrs.backgroundstring | nullbody
ops[].attrs.captionstringbody
ops[].attrs.checkedbooleanbody
ops[].attrs.kindstringenum<string>body
許可される値
bulletorderedcheck
ops[].attrs.rowsobject[]body

チャートが描画する測定値の行です(≤ 2000行、256 KiB)。

要素数
≤ 2000
ops[].attrs.rows[]objectbody
ops[].attrs.rows[].*string | number | boolean | nullbody

以下のいずれかに一致

形式 1: string

ops[].attrs.rows[].*stringbody

形式 2: number

ops[].attrs.rows[].*numberbody

形式 3: boolean

ops[].attrs.rows[].*booleanbody

形式 4: null

ops[].attrs.rows[].*nullbody
ops[].attrs.specobject | objectbody

以下のいずれかに一致

形式 1: object

ops[].attrs.spec.kindstringenum<string>body必須
許可される値
linebarpie
ops[].attrs.spec.seriesstringbody

値(VALUES)が系列名となる列です。系列および期間ごとに1行となります。

ops[].attrs.spec.titlestringbody必須

トピックではなく、番号を含めた調査結果です。

文字数
≥ 1
ops[].attrs.spec.unitstringbody
ops[].attrs.spec.xstringbody必須

軸に沿った列(または円グラフのスライス)です。

文字数
≥ 1
ops[].attrs.spec.ystringbody必須

測定された列(数値)です。

文字数
≥ 1

形式 2: object

ops[].attrs.spec.directionstringenum<string>body必須
許可される値
rightdown
ops[].attrs.spec.edgesobject[]body必須
要素数
≤ 120
ops[].attrs.spec.edges[]objectbody
ops[].attrs.spec.edges[].fromstringbody必須
ops[].attrs.spec.edges[].labelstringbody
ops[].attrs.spec.edges[].tostringbody必須
ops[].attrs.spec.nodesobject[]body必須
要素数
≥ 1, ≤ 60
ops[].attrs.spec.nodes[]objectbody
ops[].attrs.spec.nodes[].detailstringbody
ops[].attrs.spec.nodes[].idstringbody必須
パターン
^[\w-]{1,64}$
ops[].attrs.spec.nodes[].labelstringbody必須
文字数
≥ 1
ops[].attrs.spec.titlestringbody必須
文字数
≥ 1
ops[].opstringenum<string>body必須
許可される値
set
ops[].targetobject | objectbody必須

以下のいずれかに一致

形式 1: object

ops[].target.idsstring[]body必須
要素数
≥ 1, ≤ 4096
ops[].target.ids[]stringbody

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$
ops[].target.kindstringenum<string>body必須
許可される値
blocks

形式 2: object

位置による表のセルです: 0 = 最初の行(ヘッダー行)/ 最初の列、-1 = 最後。

ops[].target.colintegerbody必須
ops[].target.kindstringenum<string>body必須
許可される値
cell
ops[].target.rowintegerbody必須
ops[].target.tablestringbody必須

read または ack が出力する完全なブロック ID です(例: "1938274.12")。

パターン
^\d+\.\d+$

形式 6: object

ops[].opstringenum<string>body必須
許可される値
restore
ops[].revintegerbody必須
値の範囲
≥ 1

レスポンス

application/json

各 op が書き込んだ内容(読み取り時の出力形式)と新しいリビジョンです。

dataSpaceDocumentEditAck必須
data.opsobject[]必須
data.ops[]object
data.ops[].noticesstring[]
data.ops[].notices[]string
data.ops[].opstring必須
data.ops[].xmlstring必須
data.revinteger必須