获取凭证
预发布。本 API 仍在积极开发中,尚未对外部伙伴开放。标记为规划中的端点与事件仅供审阅,暂不可调用。目前所有内容均不计费、不限流。
合作伙伴 API · v1 · Jobs & Packages

Atasuai 运送每一件包裹。

面向哈萨克斯坦配送伙伴的一套接口,只有两个核心资源 —— Job(揽件任务)和 Package(任务里的每件包裹)。接任务、送货到家(同城 / 跨城)、把包裹交运给合作承运商。用你自己的系统对接,或直接用 delivery.atasuai.com 后台。

预发布 — 尚未对外提供服务 OAuth 2.0 REST · JSON 含沙箱环境
对接模型

人人共用一套运输接口,交运处理按需解锁。

每个伙伴做的事都一样:取件、运输、送达。运单记录、面单、以及承运单号都由 Atasuai 统一生成 —— 一个只有手机的骑手今天就能上手。能自己做承运交运处理的伙伴,可作为附加能力解锁。

接 Job、履约 Package

所有伙伴

接揽件任务、整批揽件、逐件更新 Package 状态、提交签收。Scope deliveries:read · deliveries:write

轨迹与面单(只读)

所有伙伴

每件 Package 自带单号与面单,只读。Scope tracking:read

自助交运 → 承运商

可选能力

预留条码、打印空白运单、生成承运交接单(如 QazPost 103 表)。Scope consolidation:write

一个 Job,多件 Package

Package 的两种去向

卖家把多个包裹打成一个 Job(揽件任务)、选取货时间发布;当前是开放市场 —— 所有在线 Agent 都能看到待接单的 Job,谁先 accept 归谁(独占派单与 10 分钟计时改派仍规划中)。揽件是 Job 级(骑手一次把整批取走),去向是 Package 级 —— 同一个 Job 可混装下面两种,取货后按每件的 destination 分流。

destination: door

送货到家(同城 / 跨城)

走 Atasuai 自己的配送网络。取货后直接送到买家家门 —— 同城或跨城均可(按 Agent 的服务范围),不经第三方承运商。

  • 送达买家家门(同城或其他城市)
  • 状态完全来自骑手的逐件上报
  • 使用内部单号 AD-…,不占用承运单号
  • 是否代收货款(COD)由卖家决定
AD-4471-02 内部单号
destination: carrier

交运给承运商

首公里取件。取货后交给我们对接的第三方承运商网点(carrier_code:qazpost / filp / …)—— 承运单号由 Atasuai 统一号池签发。

  • 送到承运商网点,你上报到交接为止
  • 交接后由承运商接管轨迹
  • 承运单号与面单按 carrier_code 签发
  • 交接单(如 QazPost 103 表)自动或自助生成
运单号 TRK-4471902 由承运商分配
你来对接的两个资源

Jobs 与 Packages

Delivery 域只有两个核心资源。Job 是卖家发布、派给一个 Agent 的揽件任务;Package 是任务里的每件包裹,各有去向与状态。学会这两个,你就掌握了整个配送对接。

Job · 揽件任务(Тапсырма)
// 卖家发布;任何在线 Agent 都可抢单(先到先得)
{
  "id": "job_4471",
  "batch_no": "PB-4471",
  "status": "pending",
  "accept_deadline": "2026-07-22T09:18:32Z",  // 仅展示,暂不强制
  "seller": { "name": "Oscar ЖК" },
  "pickup": {
    "address": "Алматы, Абай 150, оф.3",
    "window": { "from": "14:00", "to": "16:00" },
    "pickup_by": "2026-07-22T16:00:00Z"
  },
  "courier": null,              // 可选
  "totals": { "package_count": 6, "total_weight_kg": 6.5 },
  "packages": [ "pkg_88213", "…" ]
}
Package · 包裹(Посылка)
// Job 里的每件包裹,各有 destination 与 status
{
  "id": "pkg_88213",
  "job_id": "job_4471",
  "tracking_number": "AI556489715KZ",
  "destination": "carrier",      // door | carrier
  "carrier_code": "qazpost",     // carrier 时
  "status": "pending",
  "recipient": { "name": "Елена", "phone": "+7 7•• •••" },
  "weight_kg": 0.7,
  "cod": null
}
状态机

状态怎么流转

揽件在 Job 级(整批一次取走),派送/交运在 Package 级(取货后逐件更新)。

Job 生命周期
pending ──accept──▶ accepted
   │              │
   │           pickup(整批)
   │              ▼
   │         picked_up ──▶ completed
   │
   ├─(超时未接自动改派 —— 规划中,暂未强制)─▶ expired
   └─(卖家取消)────▶ cancelled
Package · destination=door
pendingpicked_upin_transitout_for_deliveryverify // OTP 验码deliveredfailed / returned
Package · destination=carrier
pendingpicked_uphanded_off  // 103 表交接
  ── 承运商接管 ──in_transitdeliveredexception
送达验证

一次性验证码(OTP)签收 规划中

送货到家(destination=door)的每件 Package 单独送、单独确认 —— 设计上会凭平台下发的一次性验证码确认本人签收,杜绝冒领。以 AI0123423443KZ 为例。标记 规划中 的端点 / 事件 / 规则均尚未实现,仅作为路线图展示,暂不可调用;当前真正可用的送达确认流程见下方「API 一览」中的 out-for-delivery / deliver 等端点。

送达验证流程 规划中
// ① 骑手到门口,为这件包裹请求验证码
POST …/packages/pkg_88213/delivery-code
   → 平台向收件人发 SMS / 买家 App 推送
   → 验证码只发给收件人,绝不回传给伙伴

// ② 收件人口述验证码,骑手提交校验
POST …/packages/pkg_88213/verify
   { "code": "4821" }
   → 200 { "status": "delivered",
           "delivered_at": "2026-07-22T15:12Z" }
验证码规则 规划中
  • 验证码 4–6 位,有效期 5 分钟
  • 同一包裹重发验证码需间隔至少 60 秒,累计最多重发 5 次
  • 校验成功即 delivered,作为该件的签收凭证(POD)。
  • 连续输错超过 5 次 锁定,须重发新码。
  • 验证码只下发给收件人,API 绝不返回明文 —— 防冒领、防伙伴代填。
  • 收件人收不到码时,走备用签收(拍照 / 签名)/packages/{id}/proof
  • COD 包裹:先收款、再验码,一步确认。
  • door 适用;carrier 交运后最后一公里由承运商负责。
对接规则

规则(normative)

这些是硬约定。用你自己的系统对接就按此执行;不想自建,直接用 delivery.atasuai.com 后台,能力完全一致。

  1. 当前是开放市场:所有 pendingJob 对全部 Agent 公开可见(GET /jobs?status=pending),谁先 accept 归谁 —— 慢了返回 409accept_deadline 会返回但暂不强制;独占派单、10 分钟计时与 job.expired 自动改派均规划中
  2. 一个 Job 含 1..N 个 Package;每件有独立的 destinationdoor / carrier)与独立状态。一个 Job 可混装两种去向。
  3. 揽件是 Job 级POST /jobs/{id}/pickup 整批取走);派送/交运是 Package 级,按包裹逐件推进:POST /packages/{id}/out-for-delivery/deliver(失败走 /delivery-failed,退回走 /return);carrier 类交接见 POST /jobs/{id}/handoff。通用的 POST /packages/{id}/status 尚未实现,规划中
  4. 规划中 送达验证:设计上 door 包裹将凭一次性验证码签收 —— /packages/{id}/delivery-code 发码、/packages/{id}/verify 验码即 delivered;这两个端点尚未实现。当前的等价流程:POST /packages/{id}/out-for-delivery 会为 door 包裹签发验证码,POST /packages/{id}/deliver 需要该码(door)才能确认签收,可附带照片与收件人姓名。
  5. Courier 可选POST /jobs/{id}/courier 非必需,可不指定配送员直接推进(与后台一致)。
  6. carrier 类需交接单:POST /jobs/{id}/handoff 生成(如 QazPost 103 表),POST /jobs/{id}/form103 可重新生成;consolidation:write 可自助操作。
  7. 单号:door 用内部单号 AD-…carrier 由统一号池按 carrier_code 签发承运单号。
  8. 最小授权:凭证只带被授予的 scope,且只能访问本租户数据;越权(如碰订单/库存)一律 403
  9. 写操作请带 Idempotency-Key(Header 已接受);但 Delivery API 暂未做去重 / 幂等回放规划中,请勿依赖它防止重复提交。错误用 RFC 7807 problem+json;列表游标分页;per-tenant 限流。
  10. 两类接入方:卖家集成建 Job(jobs:write)+ 查轨迹(tracking:read);Agent 集成接单履约(deliveries:*consolidation:write)。Agent 凭证目前暂停颁发/oauth/token 对 agent 密钥返回 503),卖家凭证不受影响。
  11. 环境隔离:open.atasuai.com(生产);sandbox.open.atasuai.com 规划中(证书尚未就绪,暂未对外提供服务)。密钥前缀编码环境(atk_test_ / atk_live_)。
快速开始

从拿凭证到第一次调用

三步搞定。机器对机器 —— 无需用户登录,没有跳转流程。

STEP 01

获取你的凭证

在伙伴后台,或入驻时由 Atasuai 提供,拿到 client_idclient_secret。密钥只显示一次。Agent(配送伙伴)凭证目前暂停颁发/oauth/token 对 agent 密钥返回 503);卖家凭证可正常使用。

STEP 02

换取访问令牌

用凭证换一枚带 scope 的 bearer 令牌,有效期 15 分钟(900 秒)。

# POST /oauth/token
curl -u $ID:$SECRET \
  https://open.atasuai.com/oauth/token \
  -d grant_type=client_credentials \
  -d scope="deliveries:write"
STEP 03

接一个 Job(揽件任务)

带上令牌调用接口。写操作需要 Idempotency-Key

# 接受一个待接单的 Job(先到先得,谁先 accept 归谁)
curl -X POST \
  …/delivery/v1/jobs/{id}/accept \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
建立在可预期的基础之上

核心概念

每个资源都遵循同一套约定 —— 学会一个端点,你就会用所有端点。

OAuth 2.0 与 scope

客户端凭证令牌携带租户与一组 scope。你只能看到被授予的部分 —— deliveries:*tracking:read 等。

幂等 规划中

写操作请带 Idempotency-Key —— Header 已接受,但 Delivery API 暂未做去重 / 回放,重试可能产生重复记录,请自行防抖。

签名 Webhook

状态变更主动推送并以 HMAC 签名(sha256={ts}.{body}),带防重放;重试节奏为 5s/30s/2m/10m/30m/2h/6h/12h/24h/48h,共 10 次、约 4 天

标准化错误

RFC 7807 problem+json,带稳定的 error_code 与用于排障的 request_id —— 解析一次,处处适用。

限流

规划中。目前网关不做限流,也不返回 Retry-After / X-RateLimit-* 头。上线前将按租户令牌桶实现。

沙箱 规划中

完全隔离的环境 sandbox.open.atasuai.com 即将上线(证书尚未就绪,暂未对外提供服务)。契约一致,测试条码,零真实包裹与资金。

事件,主动送到你手上

Webhook 事件

订阅一次即可;也可轮询 GET /delivery/v1/jobs?status=pending 获取当前待接单列表。标记 规划中 的事件尚未真正推送。

Job 生命周期  ·  Atasuai → 伙伴

PUSHjob.acceptedAgent 已接单
PUSHjob.courier_assigned已指定配送员
PUSHjob.picked_up整批已揽件
PUSHjob.completedJob 已完成
PUSHjob.cancelled卖家取消
PUSHjob.dispatched新任务派给你 规划中
PUSHjob.updated接单前任务变更 规划中
PUSHjob.expired超时未接,已改派 规划中

Package 生命周期  ·  逐件 / 承运商回传  规划中

PKGpackage.picked_up已揽件
PKGpackage.handed_off已交运承运商
PKGpackage.in_transit运输中
PKGpackage.out_for_delivery最后一公里
PKGpackage.delivered已送达收件人
PKGpackage.exception滞留或退回
# 校验每一次推送
X-Atasuai-Signature: sha256=<hex>  X-Atasuai-Timestamp: <unix>
HMAC_SHA256(secret, "{timestamp}.{raw_body}")  ·  超过 5 分钟则拒绝  ·  按 X-Atasuai-Event-Id 去重
接口速览

API 一览

按域分路径、带版本。标记 规划中 的端点尚未实现,仅供路线图参考。完整的交互式参考文档见文档站。

方法端点Scope
Jobs 揽件任务 · /delivery/v1
GET/delivery/v1/jobs?status=pending (全部待接单,公开可见)deliveries:read
GET/delivery/v1/jobs/{id} (含 packages)deliveries:read
POST/delivery/v1/jobs/{id}/accept (先到先得,慢了返回 409)deliveries:write
POST/delivery/v1/jobs/{id}/declinedeliveries:write
POST/delivery/v1/jobs/{id}/courier (可选)deliveries:write
POST/delivery/v1/jobs/{id}/pickup (整批揽件)deliveries:write
POST/delivery/v1/jobs/{id}/complete (picked_up → completed)deliveries:write
POST/delivery/v1/jobs/{id}/handoff (103 表 / 交接单)consolidation:write
POST/delivery/v1/jobs/{id}/form103 (重建 QazPost 103 表)consolidation:write
POST/delivery/v1/jobs (卖家建任务) 规划中jobs:write
POST/delivery/v1/jobs/{id}/cancel (卖家取消) 规划中jobs:write
Packages 包裹 · /delivery/v1
GET/delivery/v1/jobs/{id}/packagesdeliveries:read
GET/delivery/v1/packages/{id}deliveries:read
GET/delivery/v1/packages/{id}/delivery (最后一公里状态,不含验证码)deliveries:read
POST/delivery/v1/packages/{id}/out-for-delivery (开始/重试派送;door 在此签发验证码)deliveries:write
POST/delivery/v1/packages/{id}/deliver (确认签收;door 需验证码,可附照片/收件人姓名)deliveries:write
POST/delivery/v1/packages/{id}/delivery-failed (记录失败,可重试)deliveries:write
POST/delivery/v1/packages/{id}/return (标记退回)deliveries:write
POST/delivery/v1/packages/{id}/status (逐件状态) 规划中deliveries:write
POST/delivery/v1/packages/{id}/delivery-code (发送验证码) 规划中deliveries:write
POST/delivery/v1/packages/{id}/verify (验码签收) 规划中deliveries:write
POST/delivery/v1/packages/{id}/proof (备用签收 / COD) 规划中deliveries:write
GET/delivery/v1/packages/{id}/label 规划中tracking:read
GET/delivery/v1/tracking/{tracking_number} 规划中tracking:read
POST/delivery/v1/packages/{id}/location (暂未启用) 规划中deliveries:write
Webhook · /delivery/v1
POST/delivery/v1/webhook-subscriptionswebhooks:manage

预发布:可在生产环境试接,沙箱即将上线。

在你的伙伴后台创建 API 凭证,或让 Atasuai 的客户经理在入驻时为你开通(Agent 凭证目前暂停颁发,卖家凭证可正常使用)。没有自己的系统?完全用 Atasuai 托管后台运营你的车队 —— 能力一致,无需自建。