# 查价系统 API 调用文档(第三方精简版) 本文档面向第三方开发,只保留**实际接入必需**内容。 > **完整对接规范(推荐阅读)**:同目录 [`api对接文档.md`](./api对接文档.md) > 覆盖 **两官网 × 免账号/登录后 = 四条互斥路线**、字段类型/约束/错误码/判定流程。 Base URL:`https://if.dev.51track.vip` 统一响应:`{ "code": 0, "message": "ok", "data": { } }` --- ## 1. 鉴权 每次请求都要带: ```http Authorization: Bearer X-Customer-Id: Content-Type: application/json ``` API Key 放服务端,不要写死在前端。 --- ## 2. 四条路线(一票只走一条) | 路线 | 条件 | 接口 | |------|------|------| | `MS_GUEST` | MotherShip + **无**账密 | `POST /api/host/quote/candidates` → `POST /api/host/quote/submit`(同步,超时 ≥420s) | | `MS_LOGGED_IN` | MotherShip + **有**账密 | 地址联想可选 → `POST /api/quotes` → `GET /api/quotes/{id}` | | `FLOCK_GUEST` | Flock + **无**账密 | `POST /api/flock/quotes` → 轮询 | | `FLOCK_LOGGED_IN` | Flock + **有**账密 | 同上,且 `flock_input.form_mode = "logged_in_quick"` | 判定要点: 1. 先按业务选官网,并用该官网硬限校验参数(**禁止混用 MotherShip / Flock 上限**)。 2. 再看该客户是否已绑定对应官网账密 → 有则登录后,无则免账号。 3. 账密在管理端绑定,**不要**放进询价请求体。 硬限速查: - MotherShip:托盘 1–25;单托约 ≤9999 lb;登录后 Weight each ≤5000 lb;尺寸 L≤999、W/H≤99 in。 - Flock 免账号:托盘 **4–20**;总重 ≤45000 lb;L≤636 / W≤102 / H≤108 in;仅邮编;须线性英尺。 - Flock 登录后:件数 1–999;须 `form_mode=logged_in_quick`。 --- ## 3. MS_GUEST(同步两步) ### 3.1 候选 `POST /api/host/quote/candidates` 保存 `host_session_id`;提货/派送各选 1 条 `selectable: true`;第二步回传**完整候选对象**。 ### 3.2 提交 `POST /api/host/quote/submit` → 直接看 `status` / `quotes[].final_total`。 --- ## 4. MS_LOGGED_IN(异步) 1. (推荐)`POST /api/addresses/mothership-suggest`(`customer_id` + `query`≥3 字) 2. `POST /api/quotes`:地址须含 `selected_from_mothership: true`、`mothership_option_id` 等确认字段;可带 `cargo_lines` / `ready_date` / `mothership_details` 3. 轮询 `GET /api/quotes/{quote_id}` → `quotes[]` --- ## 5. Flock(异步) `POST /api/flock/quotes`: ```json { "request_id": "", "customer_id": "CUST_001", "flock_input": { "pickup_date": "07/22/2026", "pickup_zip": "90001", "delivery_zip": "75201", "pallet_count": 6, "total_weight": { "value": 12000, "unit": "lb" }, "dimensions": { "length": 48, "width": 40, "height": 48, "unit": "in" } } } ``` 登录后追加:`"form_mode": "logged_in_quick"`,并建议传 packaging / freight_class / description / location_type。 轮询成功读 **`data.flock.lines[].final_total_usd`**(不是 MotherShip 的 `quotes`)。 --- ## 6. 轮询 `GET /api/quotes/{quote_id}` - `processing` → 继续;`done` / `failed` → 结束 - MotherShip 窗口 ≥420s;Flock 建议 ≥210s --- ## 7. cURL ```bash # MS_GUEST curl -X POST "https://if.dev.51track.vip/api/host/quote/candidates" \ -H "Authorization: Bearer " \ -H "X-Customer-Id: CUST_001" \ -H "Content-Type: application/json" \ --data-binary @ms-guest-candidates.json # Flock curl -X POST "https://if.dev.51track.vip/api/flock/quotes" \ -H "Authorization: Bearer " \ -H "X-Customer-Id: CUST_001" \ -H "Content-Type: application/json" \ --data-binary @flock-guest.json # 轮询 curl -X GET "https://if.dev.51track.vip/api/quotes/" \ -H "Authorization: Bearer " \ -H "X-Customer-Id: CUST_001" ``` 完整字段、错误码、判定细则见 [`api对接文档.md`](./api对接文档.md)。