{"openapi":"3.0.0","info":{"title":"b2cloud-api","version":"0.1.0","description":"ヤマト運輸「送り状発行システム B2クラウド」を REST API / MCP サーバーから操作するための TypeScript API。\n\n## 概要\n宛先と品名の **8 フィールドだけ** で、送り状 PDF と 12桁追跡番号が返る。\n依頼主（発送元）・請求先は環境変数でデフォルト設定済みのため、呼び出し側が意識する必要なし。\n\n## 主要フロー\n`POST /api/b2/print` 1回で以下を自動実行（約12秒）:\n1. B2クラウドにログイン（5段階認証）\n2. 送り状バリデーション（checkonly）\n3. 送り状保存\n4. 印刷ジョブ発行 + polling\n5. PDF 取得（約100KB）\n6. 12桁追跡番号取得\n\n## 認証\n- **API キー**: クエリパラメータ `?key=xxx` またはヘッダー `X-MCP-API-Key`\n- **B2 ログイン情報**: 環境変数に設定済み。ヘッダー `X-B2-Customer-Code` / `X-B2-Customer-Password` で上書き可能\n\n## 伝票種別（service_type）\n| 値 | 名称 |\n|---|---|\n| 0 | 発払い（元払い）← 最も一般的 |\n| 2 | コレクト（代金引換） |\n| 3 | DM便 |\n| 4 | タイムサービス |\n| 5 | 着払い |\n| 7 | クロネコゆうパケット |\n| 8 | 宅急便コンパクト |\n| A | ネコポス |\n\n## PDF ダウンロード\n送り状発行後、HMAC-SHA256 署名付きダウンロード URL（有効期限60秒）が返される。\n`GET /api/b2/download?tn={追跡番号}&exp={有効期限}&sig={署名}` で PDF を取得可能。\n\n## MCP サーバー\n`POST /api/mcp` で MCP プロトコル（StreamableHTTP）に対応。\nClaude / ChatGPT / Cursor 等から「送り状を出して」で即利用可能（12ツール）。\n\n## 詳細ドキュメント\n- [LP](https://daisukehori.github.io/b2cloud-api/)\n- [設計書（3,364行）](https://github.com/DaisukeHori/b2cloud-api/blob/main/docs/b2cloud-design.md)\n- [GitHub](https://github.com/DaisukeHori/b2cloud-api)","license":{"name":"Apache 2.0","url":"https://www.apache.org/licenses/LICENSE-2.0.html"}},"servers":[{"url":"/","description":"Current server"}],"components":{"securitySchemes":{"ApiKeyQuery":{"type":"apiKey","in":"query","name":"key","description":"API key via query parameter ?key=xxx"},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-MCP-API-Key","description":"API key via header"}}},"paths":{"/api/b2/login":{"post":{"summary":"接続テスト","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"responses":{"200":{"description":"認証成功"}}}},"/api/b2/check":{"post":{"summary":"バリデーションのみ（保存しない）","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"responses":{"200":{"description":"バリデーション結果"}}}},"/api/b2/save":{"post":{"summary":"伝票を保存のみ（印刷しない）","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"responses":{"200":{"description":"保存結果"}}}},"/api/b2/print":{"post":{"summary":"送り状発行（フル E2E）","description":"check→保存→印刷→PDF取得→追跡番号取得を一括実行（約12秒）","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"responses":{"200":{"description":"送り状発行結果（tracking_number + PDF）"}}}},"/api/b2/reprint":{"post":{"summary":"発行済み伝票を再印刷","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"responses":{"200":{"description":"再印刷結果（PDF）"}}}},"/api/b2/history":{"get":{"summary":"発行済み伝票を検索（AND 検索、最大100件）","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"tracking_number","in":"query","schema":{"type":"string"}},{"name":"search_key4","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"検索結果"}}}},"/api/b2/tracking":{"get":{"summary":"12桁追跡番号で伝票情報を取得","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"tracking_number","in":"query","schema":{"type":"string"}},{"name":"search_key4","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"伝票情報"},"404":{"description":"該当伝票なし"}}}},"/api/b2/saved":{"get":{"summary":"保存済み伝票一覧","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"service_type","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"保存済み伝票リスト"}}},"delete":{"summary":"保存済み伝票を削除","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"responses":{"200":{"description":"削除結果"}}}},"/api/b2/settings":{"get":{"summary":"プリンタ設定取得","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"responses":{"200":{"description":"プリンタ設定"}}},"put":{"summary":"プリンタ種別切替","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"responses":{"200":{"description":"切替結果"}}}},"/api/b2/pdf":{"get":{"summary":"issue_no で PDF 取得（旧方式）","tags":["B2"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"issue_no","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PDF バイナリ","content":{"application/pdf":{}}}}}},"/api/b2/date/search":{"post":{"summary":"ヤマト運輸 配達予定日検索","tags":["Date"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"description":"date.kuronekoyamato.co.jp をスクレイピングし、発地/着地/出荷日から\n4商品別の配達予定日と時間帯制約を構造化JSONで返す。B2クラウド認証は不要。\n"}},"/api/b2/date/shortest":{"post":{"summary":"最短配達スロット取得","tags":["Date"],"security":[{"ApiKeyQuery":[]},{"ApiKeyHeader":[]}],"description":"B2クラウド発行で使える形式(shipment_date, delivery_date, delivery_time_zone)で\n最短スロットを返す。\n"}},"/api/b2/download":{"get":{"summary":"署名付き PDF ダウンロード（60秒有効）","tags":["B2"],"parameters":[{"name":"tn","in":"query","required":true,"schema":{"type":"string"},"description":"追跡番号"},{"name":"exp","in":"query","required":true,"schema":{"type":"string"},"description":"有効期限（Unix timestamp）"},{"name":"sig","in":"query","required":true,"schema":{"type":"string"},"description":"HMAC-SHA256 署名"}],"responses":{"200":{"description":"PDF バイナリ","content":{"application/pdf":{}}},"403":{"description":"署名不正または期限切れ"}}}},"/api/health":{"get":{"summary":"ヘルスチェック","tags":["System"],"responses":{"200":{"description":"OK"}}}}},"tags":[]}