協力会社パートナー API v1

株式会社KIZUNA | サプライヤーシステム連携リファレンス | 2026-06-30 初版

バス会社等の協力会社さまの自社システムと KIZUNA プラットフォームを接続するための REST API です。事業者ポータルで行う操作(見積提出・配車の承諾/拒否・運行報告・精算確認)とマスターデータ同期を、機械同士で行えます。

本書はサプライヤー(供給側)連携のみを対象とします。販売パートナー向けの AI 見積・AI コンシェルジュ連携は、秘密保持契約締結後に個別提示する「技術条件書」で扱います。

0. 接続開始まで(オンボーディング)

手順内容
1. 登録事業者ポータルの新規登録から会社情報を送信(既存の協力会社さまは不要)
2. 審査KIZUNA が内容を確認し、事業者ポータルを有効化します
3. トークン交付API トークンは KIZUNA 担当者から安全な経路で交付します(ポータル画面には表示されません。失効・再発行はいつでも可能)
4. 疎通確認下記 GET /api/provider/v1/me で接続テスト
5. 連携開発本書のとおり実装。技術的なご相談は KIZUNA 担当者まで

1. 基本仕様

curl -H "Authorization: Bearer $TOKEN" \
     https://splendor-star.co.jp/api/provider/v1/me

{"data": {"id": 8, "name": "○○交通株式会社",
          "provider_type": "bus_company", "api_version": "v1"}}

エラー形式(共通)

{"error": {"code": "deadline_passed", "message": "Quote deadline has passed"}}

成功時は必ず {"data": ...} に包まれます。存在しない ID と他社の ID はどちらも 404 not_found です(他社データは見えない設計)。

2. 見積依頼(RFQ)

GET/api/provider/v1/rfqs

自社が招待されている見積依頼の一覧(回答期限の近い順・最大 200 件)。?state=open で回答期限内・未確定のものだけに絞れます。

{"data": [{
  "id": 31, "number": "RFQ-26-0031", "state": "sent",
  "route_description": "東京・箱根・京都・大阪 ゴールデンルート 24名",
  "date_start": "2026-10-01", "date_end": "2026-10-04",
  "start_time": 8.0, "end_time": 18.0,
  "pickup_location": "成田空港", "dropoff_location": "関西空港",
  "vehicle_type": "minibus", "pax_count": 24, "bus_count": 1,
  "estimated_km": 360.0, "deadline": "2026-09-05T12:00:00",
  "my_quote": null
}]}

GET/api/provider/v1/rfqs/{id}

単一の見積依頼。my_quote に自社の見積が入ります(未提出なら null)。

POST/api/provider/v1/rfqs/{id}/quote

見積の提出。確定前であれば同じエンドポイントで更新できます(送信したフィールドのみ更新される PATCH 方式。未送信フィールドは保持されます)。

フィールド必須説明
total_pricenumber総額(JPY)
price_breakdownstring内訳メモ(2000 字まで)
includes_tolls / includes_parking / includes_driver_mealsbool高速・駐車場・乗務員食事の込み/別(JSON の true/false のみ)
vehicle_id / driver_idint自社車両/乗務員 ID(§5 で取得。他社 ID は 422
vehicle_typestringsedan / van / minibus / large_bus
vehicle_seatsint座席数
vehicle_name / driver_namestringID を使わない場合の自由記載
valid_untildate見積有効期限
notesstring備考(2000 字まで)
curl -X POST -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"total_price": 312000, "vehicle_id": 99, "driver_id": 129,
          "includes_tolls": true, "notes": "高速・駐車場込み"}' \
     https://splendor-star.co.jp/api/provider/v1/rfqs/31/quote

成功: 201 + 見積 JSON(state: "submitted")。

エラー状態意味
rfq_closed409既に確定/キャンセル済み
deadline_passed409回答期限超過
invalid_price400total_price が正の数でない
foreign_vehicle_id / foreign_driver_id422自社に属さないリソース ID
quote_locked409採用/不採用が確定した見積は変更不可

POST/api/provider/v1/rfqs/{id}/withdraw

提出済み見積の取り下げ。

3. 配車(受注後の運行)

見積が採用されると運行日ごとに配車オーダーが作成されます。

GET/api/provider/v1/dispatches

自社の配車一覧。絞り込み: ?state=assigned|confirmed|in_progress|completed|cancelled?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD(最大 500 件)。

{"data": [{
  "id": 120, "number": "DSP-26-0120", "state": "assigned",
  "provider_response": "pending",
  "date": "2026-10-01", "start_time": 8.0, "end_time": 18.0,
  "pickup_location": "成田空港", "dropoff_location": "ホテル",
  "rfq_id": 31, "rfq_number": "RFQ-26-0031",
  "vehicle_id": 99, "driver_id": 129
}]}

POST/api/provider/v1/dispatches/{id}/accept

配車の承諾。vehicle_id / driver_id を渡すと同時に割当できます。成功で state: "confirmed"

POST/api/provider/v1/dispatches/{id}/decline

配車の拒否。{"reason": "..."} を推奨(KIZUNA 側に理由が通知され、代替手配が始まります)。成功で state: "cancelled"

POST/api/provider/v1/dispatches/{id}/start ・ /complete

運行開始・運行完了の報告。confirmed → in_progress → completed の順にのみ遷移します。既に目的の状態にある場合は 200(冪等)、それ以外の順序違いは 409 invalid_state を返します。

4. 精算

GET/api/provider/v1/settlements

自社の精算台帳。?month=YYYY-MM で月次絞り込み。

{"data": {
  "entries": [{
    "id": 41, "number": "STL-26-0041", "state": "settled",
    "service_date": "2026-10-01", "service_month": "2026-10",
    "dispatch_number": "DSP-26-0120",
    "amount_payable": 78000.0,
    "payment_reference": "10月分振込", "settled_date": "2026-11-15"
  }],
  "total_payable": 78000.0
}}

state: pending(計上済)→ approved(承認済)→ settled(支払済)。disputed は金額協議中です。異議申立ては v1 では API 未対応のため、ポータルまたは担当者へご連絡ください。

5. 自社リソース

6. マスターデータ同期(既存 API)

車両・乗務員・運行予定・顧客マスターの一括アップロードは従来からの同期エンドポイントを使います。

同一内容の再送は content_hash により自動スキップされます。詳細なペイロード仕様は接続時に個別にご案内します。

7. Webhook(イベントのプッシュ通知)

受信用の https URL を KIZUNA 担当者にお伝えいただくと、イベント発生時に JSON を POST します(設定しない場合はこれまでどおりポーリング運用で問題ありません)。

イベントタイミング
rfq_invited見積依頼に招待されたとき
quote_selected見積が採用されたとき(作成された配車一覧つき)
quote_rejected見積が不採用になったとき
rfq_cancelled招待されていた見積依頼が取り消されたとき
settlement_settled精算が支払済になったとき
POST(ヘッダ)
X-Kizuna-Event: rfq_invited
X-Kizuna-Timestamp: 1751242200
X-Kizuna-Signature: hmac_sha256_hex( secret, "{timestamp}." + body )

POST(ボディ)
{"event": "rfq_invited", "created_at": "...", "data": { ...RFQ要約... }}

署名検証: 交付された秘密鍵で {タイムスタンプ}.{生ボディ} の HMAC-SHA256(16進)を計算し、ヘッダと一致するか確認してください。応答が 2xx 以外の場合は指数バックオフで最大 8 回再送します。受信処理は冪等に実装してください(同一イベントが複数回届く可能性があります)。

8. 運用上の注意

9. 代理店(販売パートナー)受注 API

旅行代理店さまの自社システムから、団体オーダーの発注・状況確認・搭乗者名簿の登録・精算状況の照会ができます。認証は代理店ごとの Bearer トークン(KIZUNA から交付)で、仕様の流儀は本書前半と共通です(エラー形式・レート制限・他社データは 404)。

エンドポイント内容
GET/api/agent/v1/me接続確認・自社情報
POST/api/agent/v1/orders団体オーダー発注(必須: contact_namedestinationsarrival_datedeparture_datepax_count 1〜500)
GET/api/agent/v1/orders?state=)//orders/{id}自社オーダー一覧・詳細(担当ツアー番号・搭乗者数つき)
POST/api/agent/v1/orders/{id}/cancelキャンセル(draft/confirmed のみ。入金後は担当者経由・409
POST/api/agent/v1/orders/{id}/passengers搭乗者名簿の一括登録(追記方式・1 回 200 名まで。氏名必須、性別/食事/生年月日/旅券は任意)
GET/api/agent/v1/orders/{id}/passengers登録済み名簿の取得
GET/api/agent/v1/statements自社ツアーの請求・入金・残高(JPY)
curl -X POST -H "Authorization: Bearer $AGENT_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"contact_name": "王偉", "destinations": "東京・大阪 6日",
          "arrival_date": "2026-11-10", "departure_date": "2026-11-15",
          "pax_count": 25}' \
     https://splendor-star.co.jp/api/agent/v1/orders

本 REST API 用于将巴士公司等协力会社的自有系统与 KIZUNA 平台对接。事业者门户中的人工操作(提交报价、接受/拒绝派车、运行报告、结算确认)以及主数据同步,都可以由系统间自动完成。

本文档仅覆盖供应商(供给侧)对接。销售伙伴对接中,代理店下单 API 见 §9;仅 AI 报价、AI 客服对接需在签署保密协议后以「技术条件书」形式逐家单独提供。

0. 接入流程(Onboarding)

步骤内容
1. 注册通过事业者门户的新规注册提交公司信息(已合作的协力会社可跳过)
2. 审核KIZUNA 确认信息后开通事业者门户
3. 交付令牌API 令牌由 KIZUNA 负责人通过安全渠道交付(门户界面不显示;可随时吊销、重发)
4. 连通测试调用下方 GET /api/provider/v1/me 测试连接
5. 对接开发按照本文档实现。技术问题请联系 KIZUNA 负责人

1. 基本规格

curl -H "Authorization: Bearer $TOKEN" \
     https://splendor-star.co.jp/api/provider/v1/me

{"data": {"id": 8, "name": "○○交通株式会社",
          "provider_type": "bus_company", "api_version": "v1"}}

错误格式(通用)

{"error": {"code": "deadline_passed", "message": "Quote deadline has passed"}}

成功响应一律包在 {"data": ...} 中。不存在的 ID 与他社的 ID 均返回 404 not_found(设计上无法看到他社数据)。

2. 询价单(RFQ)

GET/api/provider/v1/rfqs

本公司受邀的询价单列表(按回复期限由近到远、最多 200 条)。加 ?state=open 可只看期限内、未定标的询价。

{"data": [{
  "id": 31, "number": "RFQ-26-0031", "state": "sent",
  "route_description": "東京・箱根・京都・大阪 ゴールデンルート 24名",
  "date_start": "2026-10-01", "date_end": "2026-10-04",
  "start_time": 8.0, "end_time": 18.0,
  "pickup_location": "成田空港", "dropoff_location": "関西空港",
  "vehicle_type": "minibus", "pax_count": 24, "bus_count": 1,
  "estimated_km": 360.0, "deadline": "2026-09-05T12:00:00",
  "my_quote": null
}]}

GET/api/provider/v1/rfqs/{id}

单条询价。my_quote 为本公司的报价(未提交则为 null)。

POST/api/provider/v1/rfqs/{id}/quote

提交报价。定标前可用同一端点更新(PATCH 语义:只更新传入的字段,未传入的字段保持不变)。

字段类型必填说明
total_pricenumber总额(JPY)
price_breakdownstring明细备注(2000 字以内)
includes_tolls / includes_parking / includes_driver_mealsbool高速费、停车费、司机餐费是否包含(仅接受 JSON 的 true/false)
vehicle_id / driver_idint本公司车辆/司机 ID(见 §5;他社 ID 返回 422
vehicle_typestringsedan / van / minibus / large_bus
vehicle_seatsint座位数
vehicle_name / driver_namestring不使用 ID 时的自由填写
valid_untildate报价有效期
notesstring备注(2000 字以内)
curl -X POST -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"total_price": 312000, "vehicle_id": 99, "driver_id": 129,
          "includes_tolls": true, "notes": "含高速费、停车费"}' \
     https://splendor-star.co.jp/api/provider/v1/rfqs/31/quote

成功:201 + 报价 JSON(state: "submitted")。

错误状态含义
rfq_closed409已定标或已取消
deadline_passed409已过回复期限
invalid_price400total_price 不是正数
foreign_vehicle_id / foreign_driver_id422不属于本公司的资源 ID
quote_locked409已定标/落标的报价不可再修改

POST/api/provider/v1/rfqs/{id}/withdraw

撤回已提交的报价。

3. 派车(中标后的运行)

报价被采用后,将按运行日逐日生成派车单。

GET/api/provider/v1/dispatches

本公司的派车单列表。筛选:?state=assigned|confirmed|in_progress|completed|cancelled?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD(最多 500 条)。

{"data": [{
  "id": 120, "number": "DSP-26-0120", "state": "assigned",
  "provider_response": "pending",
  "date": "2026-10-01", "start_time": 8.0, "end_time": 18.0,
  "pickup_location": "成田空港", "dropoff_location": "ホテル",
  "rfq_id": 31, "rfq_number": "RFQ-26-0031",
  "vehicle_id": 99, "driver_id": 129
}]}

POST/api/provider/v1/dispatches/{id}/accept

接受派车。可同时传 vehicle_id / driver_id 完成指派。成功后 state: "confirmed"

POST/api/provider/v1/dispatches/{id}/decline

拒绝派车。建议附 {"reason": "..."}(KIZUNA 会收到理由通知并启动替代手配)。成功后 state: "cancelled"

POST/api/provider/v1/dispatches/{id}/start ・ /complete

运行开始、运行完成上报。只能按 confirmed → in_progress → completed 顺序流转。已处于目标状态时返回 200(幂等),其他顺序错误返回 409 invalid_state

4. 结算

GET/api/provider/v1/settlements

本公司的结算台账。?month=YYYY-MM 按月筛选。

{"data": {
  "entries": [{
    "id": 41, "number": "STL-26-0041", "state": "settled",
    "service_date": "2026-10-01", "service_month": "2026-10",
    "dispatch_number": "DSP-26-0120",
    "amount_payable": 78000.0,
    "payment_reference": "10月分振込", "settled_date": "2026-11-15"
  }],
  "total_payable": 78000.0
}}

statepending(已计入)→ approved(已核准)→ settled(已支付)。disputed 表示金额协商中。v1 暂不支持通过 API 提出异议,请经门户或联系负责人。

5. 本公司资源

6. 主数据同步(既有 API)

车辆、司机、运行计划、客户主数据的批量上传使用既有的同步端点。

内容相同的重复上传会被 content_hash 自动跳过。详细的报文规格在对接时单独提供。

7. Webhook(事件推送)

把接收用的 https URL 告知 KIZUNA 负责人后,事件发生时我们会向该地址 POST JSON(不配置则继续按轮询方式使用,完全没有问题)。

事件触发时机
rfq_invited受邀参加询价时
quote_selected报价被采用时(附生成的派车单列表)
quote_rejected报价落选时
rfq_cancelled受邀的询价被取消时
settlement_settled结算完成支付时
POST(请求头)
X-Kizuna-Event: rfq_invited
X-Kizuna-Timestamp: 1751242200
X-Kizuna-Signature: hmac_sha256_hex( secret, "{timestamp}." + body )

POST(请求体)
{"event": "rfq_invited", "created_at": "...", "data": { ...询价摘要... }}

签名校验:用交付的密钥对 {时间戳}.{原始请求体} 计算 HMAC-SHA256(十六进制),与请求头比对。响应非 2xx 时按指数退避最多重发 8 次。请把接收端实现为幂等(同一事件可能送达多次)。

8. 运维注意事项

9. 代理店(销售伙伴)下单 API

旅行代理店可以从自己的系统完成团体订单提交、状态跟踪、乘客名单登记、结算状况查询。认证为每家代理店一把 Bearer 令牌(由 KIZUNA 交付),规格约定与本文档前半部分一致(错误格式、限流、他社数据一律 404)。

端点内容
GET/api/agent/v1/me连通确认与本社信息
POST/api/agent/v1/orders提交团体订单(必填:contact_namedestinationsarrival_datedeparture_datepax_count 1〜500)
GET/api/agent/v1/orders?state=)//orders/{id}本社订单列表与详情(含对应团号、已登记乘客数)
POST/api/agent/v1/orders/{id}/cancel取消(仅 draft/confirmed;付款后需经负责人,返回 409
POST/api/agent/v1/orders/{id}/passengers乘客名单批量登记(追加方式,每次最多 200 人;姓名必填,性别/饮食/生日/护照可选)
GET/api/agent/v1/orders/{id}/passengers查询已登记名单
GET/api/agent/v1/statements本社各团的应收、已收与余额(JPY)
curl -X POST -H "Authorization: Bearer $AGENT_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"contact_name": "王伟", "destinations": "东京・大阪 6日",
          "arrival_date": "2026-11-10", "departure_date": "2026-11-15",
          "pax_count": 25}' \
     https://splendor-star.co.jp/api/agent/v1/orders

This REST API connects a partner company's own system (bus operators and other suppliers) to the KIZUNA platform. Everything done by hand in the provider portal — submitting quotes, accepting or declining dispatches, reporting service progress, checking settlements — plus master-data sync, can be done machine to machine.

This document covers supplier-side integration only. For sales partners, the agent ordering API is covered in §9; only the AI quoting / AI concierge integrations are provided individually as a Technical Conditions Document after an NDA.

0. Onboarding

StepDetails
1. RegisterSubmit your company details via the provider portal registration (existing partners skip this)
2. ReviewKIZUNA reviews and activates your provider portal
3. Token deliveryYour API token is handed over by your KIZUNA contact through a secure channel (never shown in the portal; revocable and reissuable at any time)
4. Connectivity checkCall GET /api/provider/v1/me below
5. BuildImplement per this document. Technical questions go to your KIZUNA contact

1. Basics

curl -H "Authorization: Bearer $TOKEN" \
     https://splendor-star.co.jp/api/provider/v1/me

{"data": {"id": 8, "name": "Example Bus Co.",
          "provider_type": "bus_company", "api_version": "v1"}}

Error format (all endpoints)

{"error": {"code": "deadline_passed", "message": "Quote deadline has passed"}}

Success responses are always wrapped in {"data": ...}. A missing ID and another supplier's ID both read as 404 not_found — other suppliers' data is invisible by design.

2. Quote requests (RFQ)

GET/api/provider/v1/rfqs

RFQs your company is invited to (nearest deadline first, max 200). Add ?state=open for undecided RFQs still within their deadline.

{"data": [{
  "id": 31, "number": "RFQ-26-0031", "state": "sent",
  "route_description": "Tokyo–Hakone–Kyoto–Osaka golden route, 24 pax",
  "date_start": "2026-10-01", "date_end": "2026-10-04",
  "start_time": 8.0, "end_time": 18.0,
  "pickup_location": "Narita Airport", "dropoff_location": "Kansai Airport",
  "vehicle_type": "minibus", "pax_count": 24, "bus_count": 1,
  "estimated_km": 360.0, "deadline": "2026-09-05T12:00:00",
  "my_quote": null
}]}

GET/api/provider/v1/rfqs/{id}

A single RFQ. my_quote holds your quote (null if none submitted).

POST/api/provider/v1/rfqs/{id}/quote

Submit a quote. Until the RFQ is decided, the same endpoint updates it (PATCH semantics: only fields present in the request are written; everything else is kept).

FieldTypeRequiredDescription
total_pricenumberTotal (JPY)
price_breakdownstringBreakdown memo (up to 2000 chars)
includes_tolls / includes_parking / includes_driver_mealsboolTolls / parking / driver meals included or not (JSON true/false only)
vehicle_id / driver_idintYour own vehicle/driver IDs (see §5; foreign IDs are a 422)
vehicle_typestringsedan / van / minibus / large_bus
vehicle_seatsintSeat count
vehicle_name / driver_namestringFree text when not using IDs
valid_untildateQuote validity
notesstringNotes (up to 2000 chars)
curl -X POST -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"total_price": 312000, "vehicle_id": 99, "driver_id": 129,
          "includes_tolls": true, "notes": "tolls and parking included"}' \
     https://splendor-star.co.jp/api/provider/v1/rfqs/31/quote

Success: 201 + quote JSON (state: "submitted").

ErrorStatusMeaning
rfq_closed409Already awarded or cancelled
deadline_passed409Quote deadline is over
invalid_price400total_price is not a positive number
foreign_vehicle_id / foreign_driver_id422Resource ID not in your fleet
quote_locked409A decided quote can no longer change

POST/api/provider/v1/rfqs/{id}/withdraw

Withdraw a submitted quote.

3. Dispatches (after winning)

When your quote is selected, one dispatch order is created per service day.

GET/api/provider/v1/dispatches

Your dispatch orders. Filters: ?state=assigned|confirmed|in_progress|completed|cancelled, ?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD (max 500).

{"data": [{
  "id": 120, "number": "DSP-26-0120", "state": "assigned",
  "provider_response": "pending",
  "date": "2026-10-01", "start_time": 8.0, "end_time": 18.0,
  "pickup_location": "Narita Airport", "dropoff_location": "Hotel",
  "rfq_id": 31, "rfq_number": "RFQ-26-0031",
  "vehicle_id": 99, "driver_id": 129
}]}

POST/api/provider/v1/dispatches/{id}/accept

Accept a dispatch. Pass vehicle_id / driver_id to assign at the same time. Success → state: "confirmed".

POST/api/provider/v1/dispatches/{id}/decline

Decline a dispatch. {"reason": "..."} is recommended — KIZUNA is notified and starts arranging a replacement. Success → state: "cancelled".

POST/api/provider/v1/dispatches/{id}/start ・ /complete

Report service start / completion. Transitions strictly follow confirmed → in_progress → completed. Re-sending when already in the target state returns 200 (idempotent); any other out-of-order call returns 409 invalid_state.

4. Settlements

GET/api/provider/v1/settlements

Your settlement ledger. Filter by month with ?month=YYYY-MM.

{"data": {
  "entries": [{
    "id": 41, "number": "STL-26-0041", "state": "settled",
    "service_date": "2026-10-01", "service_month": "2026-10",
    "dispatch_number": "DSP-26-0120",
    "amount_payable": 78000.0,
    "payment_reference": "October transfer", "settled_date": "2026-11-15"
  }],
  "total_payable": 78000.0
}}

state: pending (booked) → approvedsettled (paid). disputed means the amount is under discussion. Disputes cannot be raised through the API in v1 — use the portal or your KIZUNA contact.

5. Your resources

6. Master-data sync (existing API)

Bulk upload of vehicles, drivers, schedules and customer masters uses the existing sync endpoints.

Identical re-uploads are skipped automatically via content_hash. Detailed payload specs are provided individually during onboarding.

7. Webhooks (event push)

Give your KIZUNA contact an https receiving URL and events are POSTed to it as JSON (without one, polling keeps working exactly as before).

EventWhen
rfq_invitedYou are invited to quote on an RFQ
quote_selectedYour quote won (with the created dispatch list)
quote_rejectedYour quote lost
rfq_cancelledAn RFQ you were invited to was cancelled
settlement_settledA settlement entry was paid
POST (headers)
X-Kizuna-Event: rfq_invited
X-Kizuna-Timestamp: 1751242200
X-Kizuna-Signature: hmac_sha256_hex( secret, "{timestamp}." + body )

POST (body)
{"event": "rfq_invited", "created_at": "...", "data": { ...RFQ summary... }}

Verify by computing HMAC-SHA256 (hex) of {timestamp}.{raw body} with your delivered secret and comparing to the header. Non-2xx responses are retried with exponential backoff, up to 8 times — implement your receiver idempotently (the same event may arrive more than once).

8. Operational notes

9. Agent (sales partner) ordering API

Travel agents can place group orders, track them, register passenger rosters and check their statements from their own systems. Auth is a per-agency Bearer token (handed over by KIZUNA); the conventions match the first half of this document (error format, rate limit, other agencies' data reads as 404).

EndpointPurpose
GET/api/agent/v1/meConnectivity check and identity
POST/api/agent/v1/ordersPlace a group order (required: contact_name, destinations, arrival_date, departure_date, pax_count 1–500)
GET/api/agent/v1/orders (?state=) / /orders/{id}Your orders, with linked tour code and roster count
POST/api/agent/v1/orders/{id}/cancelCancel (draft/confirmed only; after payment it takes your KIZUNA contact — 409)
POST/api/agent/v1/orders/{id}/passengersBatch roster upload (append-only, up to 200 per request; a name is required, gender/diet/DOB/passport optional)
GET/api/agent/v1/orders/{id}/passengersRead the registered roster
GET/api/agent/v1/statementsBilled / paid / balance per your tours (JPY)
curl -X POST -H "Authorization: Bearer $AGENT_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"contact_name": "Wang Wei", "destinations": "Tokyo-Osaka 6 days",
          "arrival_date": "2026-11-10", "departure_date": "2026-11-15",
          "pax_count": 25}' \
     https://splendor-star.co.jp/api/agent/v1/orders