Transfer Dispatch — 発送確定・内容物リスト
バルクの発送確定です。open のバルクの内容物を確定して内容物リスト PDF(バルクID バーコード + 明細 + 受領チェック欄)を生成・保存し、所属する全単位を一括で return_in_transit(unit は source_change_in_transit)へ進めます。遷移は単発の POST /api/routing/change-source と同一実装を共用します。
Base URL
https://api.lmile.io· 認証 operator JWT(Authorization: Bearer)(詳細) ·shopはリクエストボディに含めます
キャリアの配送ラベルは生成しません(内容物リストのみ)。返送便のキャリアラベルが必要な運用は既存の返送ラベルのバッチ生成(
/api/routing/return-label/generate-batch)が担いますが、バルク所属の単位はそのバッチ対象から除外されます(二重手配防止)。
エンドポイント
POST
/api/operator/transfer/batches/dispatch
発送確定(内容物確定 + PDF + 一括遷移)
lm_transfer_batches / lm_fulfillment_source_changes / lm_fulfillment_units / lm_shelf_inventory
POST /api/operator/transfer/batches/dispatch
リクエスト
POST https://api.lmile.io/api/operator/transfer/batches/dispatch
Authorization: Bearer {OPERATOR_JWT}
Content-Type: application/json{
"shop": "demo-store.myshopify.com",
"batchId": "0d9c5a8e-1234-4abc-9def-0123456789ab"
}ボディパラメータ
shop
string
✓
店舗ドメイン(スタッフの束縛 shop 内)
batchId
string (uuid)
✓
発送確定するバルク
レスポンス
unitCount
内容物(中止以外の所属単位)数
transitioned
今回 return_in_transit へ進めた単位数
alreadyInTransit
既に返送中だった単位数(途中失敗からの再実行時)
cancelledExcluded
中止済みで内容物から除外した単位数
pdfUrl
内容物リスト PDF の public URL(iOS はこれを開いて印刷/表示)
挙動・冪等性
処理順は PDF 生成 → 単位の一括遷移 → バルク確定。PDF 生成に失敗した場合は何も変異させず失敗します。途中で失敗した場合はバルクが
openのまま残り、再実行がchange_requestedの残りから再開します(遷移済みは skip)。dispatched/received済みへの再実行は200+ 既存pdfUrlの no-op(alreadyDispatched: true)。内容物が 0 件(空、または全て中止)は
422 empty_batch。並行して単発 API で状態が進んでいた単位は
409 unit_not_dispatchableで中断します(黙認しません)。在庫: 現物が棚から箱へ移るため、旧拠点(自己在庫 MFC)の棚数量を単位ごとに 1 減らし、自己在庫の
availableを再計算して在庫変動 webhook を発火します。ピック済み(picked_atあり)の単位はピック時に減算済みのため二重減算しません。棚を持たない拠点(同期拠点)は no-op です。PDF は public bucket(picking-lists・Picking List と同じ)にパス
{shop}/transfer-manifest/{batchId}.pdfで保存され、再実行では上書きされます。
エラー
エンドポイント固有:
404
バルクが存在しない
{ "ok": false, "error_kind": "batch_not_found" }
422
内容物が 0 件(空 / 全て中止)
{ "ok": false, "error_kind": "empty_batch", "cancelledCount": 1 }
409
並行更新で単位が source_change_pending でない
{ "ok": false, "error_kind": "unit_not_dispatchable", "transitioned": 3 }
共通エラー(401 / 400 共通形 / 403 / 405 / 500 / 503)は Error Codes を参照。
データモデル
sot.lm_transfer_batches—status='dispatched'/dispatched_at/pdf_storage_path。操作者監査は単位側lm_fulfillment_source_changes.updated_by_staff_user_id(LM-850)。sot.lm_fulfillment_source_changes— 所属ケースがreturn_in_transit+in_transit_at。sot.lm_fulfillment_units— 所属単位がsource_change_in_transit。sot.lm_shelf_inventory— 旧拠点の棚数量 −1(reason=pick、Shelf Inventory のログに記録)。
Last updated
Was this helpful?