HTTP 请求、幂等与任务轮询

business-documents HTTP-REQUESTS.md

HTTP 请求、幂等与任务轮询

BASE=${AI_SKILLS_API_URL:-https://ai-skills.open-idea.net/api/v1}。每个不同业务动作生成一个 UUID 作为 Idempotency-Key;网络结果不确定时只重放完全相同的操作、请求体与键。冲突或 errors.idempotency_key 表示请求形状或键不合法,不要改请求体后复用旧键。

四个 POST 入口及对应任务入口:

  • /api/v1/business-documents/document.create/api/v1/business-documents/document.create/tasks/{task_id}
  • /api/v1/business-documents/document.read/api/v1/business-documents/document.read/tasks/{task_id}
  • /api/v1/business-documents/document.update/api/v1/business-documents/document.update/tasks/{task_id}
  • /api/v1/business-documents/document.export/api/v1/business-documents/document.export/tasks/{task_id}

请求示意:

curl -sS -X POST "$BASE/business-documents/document.read" \
  -H "Authorization: Bearer $BUSINESS_DOCUMENTS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $REQUEST_UUID" \
  --data '{"document_id":"实际 UUID"}'

200 表示已完成,202 表示已接收。收到 202 后按响应中的任务 ID 轮询对应 /tasks/{task_id},采用 1、2、4、8 秒有上限退避,最长约 60 秒;持续运行时告知用户稍后重试,不能重复创建。终态为 succeeded(成功)、partial(部分成功)或 failed(失败)。读取结构化结果及 artifacts 字段;下载链接只交给当前用户。

保留并解析 X-AI-Skills-Billing-CurrencyX-AI-Skills-Billing-ChargedX-AI-Skills-Billing-Balance。错误优先读取 errors.code,兼容读取 error.code