Files

2980 lines
90 KiB
YAML
Raw Permalink Normal View History

openapi: 3.1.0
info:
title: SaaS 首次认证、绑定和激活接口
version: 0.78.0
description: ONBOARDING-1.1。仅用于生产登记为physical_confirm的设备;旧设备维持原协议。详细规则见docs/onboarding-implementation.md。
paths:
/api/v1/device/time-challenges:
post:
operationId: onboardingC01POSTapiv1devicetimechallenges
summary: C01 校时挑战
tags:
- Onboarding
description: 专用HTTP或HTTPS校时;无需时间戳及请求签名;成功直接返回payload_b64和mac_hex,设备必须核验TIME1。
security: []
parameters:
- in: header
name: X-Request-ID
required: false
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/TimeChallengeResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TimeChallengeInput'
/api/v1/device/register:
post:
operationId: onboardingC02POSTapiv1deviceregister
summary: C02 首次认证和启动注册
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterInput'
/api/v1/device/setup-sessions:
post:
operationId: onboardingC03POSTapiv1devicesetupsessions
summary: C03 创建临时设置会话
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/SetupResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetupInput'
/api/v1/device/handoffs:
post:
operationId: onboardingC04POSTapiv1devicehandoffs
summary: C04 获取一次性手机入口
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/HandoffResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/HandoffInput'
/api/v1/device/poll:
post:
operationId: onboardingC05POSTapiv1devicepoll
summary: C05 查询状态和命令
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/PollResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PollInput'
/api/v1/device/claim-confirmations:
post:
operationId: onboardingC06POSTapiv1deviceclaimconfirmations
summary: C06 物理按键确认绑定
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/ConfirmationResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConfirmationInput'
/api/v1/device/state-acks:
post:
operationId: onboardingC07POSTapiv1devicestateacks
summary: C07 绑定状态持久化回执
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/StateAckResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StateAckInput'
/api/v1/device/activation-attempts:
post:
operationId: onboardingC08POSTapiv1deviceactivationattempts
summary: C08 申请设备执行许可
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/AttemptResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttemptInput'
/api/v1/device/activation-results:
post:
operationId: onboardingC09POSTapiv1deviceactivationresults
summary: C09 回报设备执行结果
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/ResultResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ResultInput'
/api/v1/device/activation-acks:
post:
operationId: onboardingC10POSTapiv1deviceactivationacks
summary: C10 激活结果保存回执
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/ActivationAckResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ActivationAckInput'
/api/v1/device/setup-close:
post:
operationId: onboardingC11POSTapiv1devicesetupclose
summary: C11 关闭临时设置入口
tags:
- Onboarding
description: HTTPS,无query参数;正文不超过8KiB。随机nonce每次发送更新,X-Request-ID在重试时保持。
security:
- DeviceRequest: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Device-ID
required: true
schema:
type: string
description: X-Device-ID
- in: header
name: X-Key-Version
required: true
schema:
type: string
description: X-Key-Version
- in: header
name: X-Timestamp-Ms
required: true
schema:
type: string
description: X-Timestamp-Ms
- in: header
name: X-Nonce
required: true
schema:
type: string
description: X-Nonce
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/CloseResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CloseInput'
/api/v1/web/handoffs/exchange:
post:
operationId: onboardingPOSTapiv1webhandoffsexchange
summary: 手机兑换一次性入口
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/BrowserResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExchangeInput'
/api/v1/web/setup/session:
get:
operationId: onboardingGETapiv1websetupsession
summary: 恢复手机设置会话
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: false
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/BrowserResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
/api/v1/web/setup/auth-link:
post:
operationId: onboardingOIDCPOSTapiv1websetupauthlink
summary: 关联已登录账号
tags:
- Onboarding
description: HTTPS,同源浏览器,必须提供设置会话 Cookie 和对应 CSRF;身份可来自 OIDC Bearer 或已登录账号 Cookie。
security:
- SetupCookie: []
Bearer: []
- SetupCookie: []
AccountCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/BrowserResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Empty'
/api/v1/web/auth/captcha:
post:
operationId: onboardingSetupCaptcha
summary: 获取或刷新设备绑定登录的图片验证码
description: HTTPS、同源和 CSRF 校验;绑定当前设备设置会话,2 分钟有效,刷新和验证均使旧图失效。
security: [{ SetupCookie: [] }]
parameters:
- { in: header, name: X-Request-ID, required: true, schema: { type: string, format: uuid } }
- { in: header, name: X-CSRF-Token, required: true, schema: { type: string } }
- { in: header, name: Origin, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema: { type: object, additionalProperties: false }
responses:
'200':
description: PNG 图片、captcha_id 和 expires_at_ms,不返回答案
content:
application/json:
schema:
type: object
required: [ok, data]
properties:
ok: { type: boolean }
data:
type: object
required: [captcha_id, mode, expires_at_ms]
properties:
captcha_id: { type: string, format: uuid }
mode: { type: string, enum: [image, tencent, slide] }
captcha_app_id: { type: string, description: 腾讯云 Web 验证码公开 ID }
image: { type: string }
thumb_image: { type: string, pattern: '^data:image/png;base64,' }
image_width: { type: integer, minimum: 1 }
image_height: { type: integer, minimum: 1 }
thumb_width: { type: integer, minimum: 1 }
thumb_height: { type: integer, minimum: 1 }
thumb_x: { type: integer, minimum: 0, description: 拼图块的初始展示横坐标 }
thumb_y: { type: integer, minimum: 0, description: 拼图块所在水平轨道 }
expires_at_ms: { type: integer, format: int64 }
default: { description: 校验失败或会话过期 }
/api/v1/web/auth/captcha/verify:
post:
operationId: onboardingVerifyLocalSlideCaptcha
summary: 校验设备设置会话的本地滑块位置
description: HTTPS、同源、CSRF 和设备设置会话校验;每次提交即消费挑战。成功票据只对当前设置会话、客户端和策略版本有效,不能超过原 2 分钟期限。
security: [{ SetupCookie: [] }]
parameters:
- { in: header, name: X-Request-ID, required: true, schema: { type: string, format: uuid } }
- { in: header, name: X-CSRF-Token, required: true, schema: { type: string } }
- { in: header, name: Origin, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema: { $ref: './login-captcha.yaml#/components/schemas/SlideCaptchaVerifyInput' }
responses:
'200':
description: 一次性位置校验票据
content:
application/json:
schema: { $ref: './login-captcha.yaml#/components/schemas/SlideCaptchaVerifyResponse' }
default: { description: 校验失败或会话过期 }
/api/v1/web/auth/sms/send:
post:
operationId: onboardingPOSTapiv1webauthsmssend
summary: 发送登录短信
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/SMSResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SMSSendInput'
/api/v1/web/auth/sms/verify:
post:
operationId: onboardingPOSTapiv1webauthsmsverify
summary: 验证短信并登录
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/BrowserResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SMSVerifyInput'
/api/v1/web/profiles:
post:
operationId: onboardingPOSTapiv1webprofiles
summary: 查询可选择的家庭使用者
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/ProfilesResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Empty'
/api/v1/web/profiles/create:
post:
operationId: onboardingPOSTapiv1webprofilescreate
summary: 创建家庭或使用者
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileInput'
/api/v1/web/claims:
post:
operationId: onboardingPOSTapiv1webclaims
summary: 提交绑定申请
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/ClaimResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ClaimInput'
/api/v1/web/claims/cancel:
post:
operationId: onboardingPOSTapiv1webclaimscancel
summary: 取消自己的绑定申请
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/StateOnlyResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CancelInput'
/api/v1/web/setup/status:
post:
operationId: onboardingPOSTapiv1websetupstatus
summary: 查询手机绑定进度
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/WebStatusResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Empty'
/api/v1/web/setup/ack:
post:
operationId: onboardingPOSTapiv1websetupack
summary: 网页确认收到绑定结果
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- SetupCookie: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/AckResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebAckInput'
/api/v1/web/onboarding/devices:
get:
operationId: onboardingGETapiv1webonboardingdevices
summary: 设置结束后查询我的设备
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- AccountCookie: []
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: false
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/DevicesResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
/api/v1/web/account/session:
get:
operationId: onboardingCSRFGETapiv1webaccountsession
summary: 恢复账号会话及CSRF
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- AccountCookie: []
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: false
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
/api/v1/web/auth/logout:
post:
operationId: onboardingPOSTapiv1webauthlogout
summary: 退出本浏览器登录
tags:
- Onboarding
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
security:
- AccountCookie: []
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-CSRF-Token
required: true
schema:
type: string
description: X-CSRF-Token
- in: header
name: Origin
required: true
schema:
type: string
description: 必须与ONBOARDING_ENTRY_URL同源
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/LogoutResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Empty'
/api/v1/ops/device-inventory:
get:
operationId: onboardingGETapiv1opsdeviceinventory
summary: 查询生产设备和激活状态
tags:
- Onboarding
description: 必须使用运维OIDC身份。对账仅ops_admin;其它写操作ops_admin或ops_operator。
security:
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: false
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Tenant-ID
required: true
schema:
type: string
description: 租户公开UUID;服务端核验运维角色
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/DevicesResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
post:
operationId: onboardingPOSTapiv1opsdeviceinventory
summary: 创建设备并直接进入等待绑定
tags:
- Onboarding
description: 必须使用运维OIDC身份。对账仅ops_admin;其它写操作ops_admin或ops_operator。
security:
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: header
name: X-Tenant-ID
required: true
schema:
type: string
description: 租户公开UUID;服务端核验运维角色
- in: header
name: Idempotency-Key
required: true
schema:
type: string
description: 16至160字符,重试保持相同值
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryInput'
/api/v1/ops/device-inventory/{id}/credential-deliveries:
post:
operationId: onboardingPOSTapiv1opsdeviceinventoryidcredentialdeliveries
summary: 向工装交付加密密钥
tags:
- Onboarding
description: 必须使用运维OIDC身份。对账仅ops_admin;其它写操作ops_admin或ops_operator。
security:
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: 平台设备公开UUID
- in: header
name: X-Tenant-ID
required: true
schema:
type: string
description: 租户公开UUID;服务端核验运维角色
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryInput'
/api/v1/ops/device-inventory/{id}/release:
post:
operationId: onboardingPOSTapiv1opsdeviceinventoryidrelease
summary: 确认烧录读回并放行
tags:
- Onboarding
description: 必须使用运维OIDC身份。对账仅ops_admin;其它写操作ops_admin或ops_operator。
security:
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: 平台设备公开UUID
- in: header
name: X-Tenant-ID
required: true
schema:
type: string
description: 租户公开UUID;服务端核验运维角色
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReleaseInput'
/api/v1/ops/device-inventory/{id}/credential-rotations:
post:
operationId: onboardingPOSTapiv1opsdeviceinventoryidcredentialrotations
summary: 准备轮换凭据
tags:
- Onboarding
description: 必须使用运维OIDC身份。对账仅ops_admin;其它写操作ops_admin或ops_operator。
security:
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: 平台设备公开UUID
- in: header
name: X-Tenant-ID
required: true
schema:
type: string
description: 租户公开UUID;服务端核验运维角色
- in: header
name: Idempotency-Key
required: true
schema:
type: string
description: 16至160字符,重试保持相同值
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/InventoryResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RotationInput'
/api/v1/ops/onboarding-activations/{id}/reconcile:
post:
operationId: onboardingPOSTapiv1opsonboardingactivationsidreconcile
summary: 人工记录激活对账结论
tags:
- Onboarding
description: 必须使用运维OIDC身份。对账仅ops_admin;其它写操作ops_admin或ops_operator。
security:
- Bearer: []
parameters:
- in: header
name: X-Request-ID
required: true
schema:
type: string
description: UUID v4;业务重试保持相同值和原始正文
- in: path
name: id
required: true
schema:
type: string
format: uuid
description: 激活任务UUID
- in: header
name: X-Tenant-ID
required: true
schema:
type: string
description: 租户公开UUID;服务端核验运维角色
responses:
'200':
description: 成功;业务状态请读取data
content:
application/json:
schema:
$ref: '#/components/schemas/StateOnlyResponse'
default:
description: 失败;400/401/403/409/410/413/415/429/500/503,见code恢复;禁止根据超时推断供应商没有执行
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReconcileInput'
components:
securitySchemes:
DeviceRequest:
type: apiKey
in: header
name: Authorization
description: Device-HMAC-SHA256小写十六进制签名;DEVREQ1九行规范;其余必填签名头见操作参数
Bearer:
type: http
scheme: bearer
SetupCookie:
type: apiKey
in: cookie
name: __Host-onboarding
AccountCookie:
type: apiKey
in: cookie
name: __Host-platform-onboarding
schemas:
TimeChallengeInput:
type: object
additionalProperties: false
properties:
device_id:
type: string
description: 生产编号,KP01-加12位大写MAC;不是平台UUID
pattern: ^KP01-[0-9A-F]{12}$
key_version:
type: integer
format: int64
description: 设备认证密钥版本
boot_id:
type: string
description: 每次启动生成并保持的UUID v4
client_nonce:
type: string
description: 设备生成的16字节随机数,Base64URL无填充
required:
- device_id
- key_version
- boot_id
- client_nonce
ActivationAckInput:
type: object
additionalProperties: false
properties:
activation_id:
type: string
description: 该物理设备唯一的激活任务UUID
local_generation:
type: integer
format: int64
description: 本次启动的本地持久化序号,不能倒退
config_version:
type: integer
format: int64
description: 配置版本,必须与当前云端版本一致
required:
- activation_id
- local_generation
- config_version
AttemptInput:
type: object
additionalProperties: false
properties:
activation_id:
type: string
description: 该物理设备唯一的激活任务UUID
config_version:
type: integer
format: int64
description: 配置版本,必须与当前云端版本一致
attempt_id:
type: string
description: 设备生成的UUID v4,表示一次引擎初始化或首通执行
required:
- activation_id
- config_version
- attempt_id
ResultInput:
type: object
additionalProperties: false
properties:
activation_id:
type: string
description: 该物理设备唯一的激活任务UUID
attempt_id:
type: string
description: 设备生成的UUID v4,表示一次引擎初始化或首通执行
stage:
type: string
description: SDK_REGISTER或CONVERSATION_TEST;与C08平台当前阶段一致
enum:
- SDK_REGISTER
- CONVERSATION_TEST
sdk_result:
type: integer
format: int64
description: SDK执行返回码;SUCCESS_OBSERVED时必须为0
outcome:
type: string
description: SUCCESS_OBSERVED、DEFINITE_FAILURE或UNKNOWN;未知结果不得盲目重试
enum:
- SUCCESS_OBSERVED
- DEFINITE_FAILURE
- UNKNOWN
required:
- activation_id
- attempt_id
- stage
- sdk_result
- outcome
InventoryInput:
type: object
additionalProperties: false
properties:
factory_mac:
type: string
description: 12位大写十六进制MAC;相同MAC不能创建第二台物理设备
pattern: ^[0-9A-F]{12}$
hardware_model:
type: string
description: 生产登记型号,当前为KP01
hardware_revision:
type: string
description: 硬件修订号,注册必须与库存一致
batch_no:
type: string
description: 生产批次,方便追溯
required:
- factory_mac
- hardware_model
- hardware_revision
- batch_no
DeliveryInput:
type: object
additionalProperties: false
properties:
enrollment_job_id:
type: string
description: 生产登记或密钥轮换任务UUID
receiver_public_key_pem:
type: string
description: 工装RSA公钥,PKIX PEM,2048至4096位,指数65537
required:
- enrollment_job_id
- receiver_public_key_pem
ReleaseInput:
type: object
additionalProperties: false
properties:
enrollment_job_id:
type: string
description: 生产登记或密钥轮换任务UUID
evidence_ref:
type: string
description: 烧录读回或人工对账的证据引用,不放密钥
expected_key_version:
type: integer
format: int64
description: 交付放行目标版本;轮换时为当前生效版本
required:
- enrollment_job_id
- evidence_ref
- expected_key_version
RotationInput:
type: object
additionalProperties: false
properties:
reason:
type: string
description: 关闭、轮换或人工处理原因,见对应枚举
expected_key_version:
type: integer
format: int64
description: 交付放行目标版本;轮换时为当前生效版本
required:
- reason
- expected_key_version
ReconcileInput:
type: object
additionalProperties: false
properties:
expected_version:
type: integer
format: int64
description: 运维列表中的激活任务版本,防止覆盖并发处理
conclusion:
type: string
description: OBSERVED_REGISTERED、CONFIRMED_NOT_REGISTERED或DEVICE_ATTEMPT_STOPPED
enum:
- OBSERVED_REGISTERED
- CONFIRMED_NOT_REGISTERED
- DEVICE_ATTEMPT_STOPPED
evidence_ref:
type: string
description: 烧录读回或人工对账的证据引用,不放密钥
reason:
type: string
description: 关闭、轮换或人工处理原因,见对应枚举
attempt_id:
type: string
description: 设备生成的UUID v4,表示一次引擎初始化或首通执行
device_secret:
type: string
description: 已核实的供应商单设备密钥,仅人工对账写入,加密保存
rtc_app_id:
type: string
description: 供应商RTC应用ID;不填则使用已保存值
required:
- expected_version
- conclusion
- evidence_ref
- reason
RegisterInput:
type: object
additionalProperties: false
properties:
challenge_id:
type: string
description: C01签名校时返回的一次性挑战
boot_id:
type: string
description: 每次启动生成并保持的UUID v4
hardware_model:
type: string
description: 生产登记型号,当前为KP01
hardware_revision:
type: string
description: 硬件修订号,注册必须与库存一致
firmware_version:
type: string
description: 固件版本,用于兼容诊断
sdk_version:
type: string
description: SDK版本,用于兼容诊断
required:
- challenge_id
- boot_id
- hardware_model
- hardware_revision
- firmware_version
- sdk_version
SetupInput:
type: object
additionalProperties: false
properties:
boot_id:
type: string
description: 每次启动生成并保持的UUID v4
local_setup_id:
type: string
description: 设备本次设置入口UUID v4;重试保持不变
transport_profile:
type: string
description: 固定LOCAL_WEB,表示设备提供本地网页入口
enum:
- LOCAL_WEB
required:
- boot_id
- local_setup_id
- transport_profile
HandoffInput:
type: object
additionalProperties: false
properties:
setup_id:
type: string
description: 云端15分钟临时设置会话UUID
local_setup_id:
type: string
description: 设备本次设置入口UUID v4;重试保持不变
code_challenge:
type: string
description: SHA256(ASCII verifier)的Base64URL无填充值
required:
- setup_id
- local_setup_id
- code_challenge
PollInput:
type: object
additionalProperties: false
properties:
setup_id:
type: string
description: 云端15分钟临时设置会话UUID
boot_id:
type: string
description: 每次启动生成并保持的UUID v4
known_revision:
type: integer
format: int64
description: 设备已知状态版本;允许0
required:
- setup_id
- boot_id
- known_revision
ConfirmationInput:
type: object
additionalProperties: false
properties:
claim_id:
type: string
description: 待物理确认的绑定申请UUID
challenge:
type: string
description: C05给设备的短时按键挑战,手机不能获取
binding_digest:
type: string
description: 云端生成的绑定摘要,按键回报原值
expected_binding_generation:
type: integer
format: int64
description: 提交时预期绑定代数,防止跨解绑或重新绑定重放
press_event_id:
type: string
description: 该次真实物理按键事件UUID v4,重试保持不变
required:
- claim_id
- challenge
- binding_digest
- expected_binding_generation
- press_event_id
StateAckInput:
type: object
additionalProperties: false
properties:
device_revision:
type: integer
format: int64
description: 云端设备状态版本号
binding_generation:
type: integer
format: int64
description: 绑定代数;解绑、重新绑定后旧代数无效
local_generation:
type: integer
format: int64
description: 本次启动的本地持久化序号,不能倒退
state_hash:
type: string
description: STATE1规范字符串的SHA256小写十六进制摘要
required:
- device_revision
- binding_generation
- local_generation
- state_hash
CloseInput:
type: object
additionalProperties: false
properties:
setup_id:
type: string
description: 云端15分钟临时设置会话UUID
reason:
type: string
description: 关闭、轮换或人工处理原因,见对应枚举
enum:
- SUCCESS
- TIMEOUT
- CANCELLED
- NETWORK_SWITCH
final_revision:
type: integer
format: int64
description: 设备关闭设置入口前看到的最新状态版本
required:
- setup_id
- reason
- final_revision
SMSSendInput:
type: object
additionalProperties: false
properties:
phone_e164:
type: string
description: 含国家区号的手机号,例如+8613800000000
pattern: ^\+[1-9][0-9]{7,14}$
purpose:
type: string
description: LOGIN 由服务端按手机号是否已有凭据选择注册或登录模板;CHANGE_PASSWORD 用于现有的短信登录后重置密码流程。更换手机号不可使用本接口。
enum:
- LOGIN
- CHANGE_PASSWORD
captcha_id:
type: string
format: uuid
description: 当前登录或设备设置会话的人机验证挑战 ID
captcha_code:
type: string
pattern: '^[0-9]{6}$'
description: 图片中的 6 位数字;每次新的发送都须使用未消费的图片验证码
captcha_ticket:
type: string
maxLength: 4096
writeOnly: true
description: 腾讯云模式使用对应端 SDK/插件票据;本地滑块模式使用 captcha/verify 返回的票据。绑定当前会话并一次性消费。
captcha_randstr:
type: string
maxLength: 256
writeOnly: true
description: 腾讯云 Web 模式必填;微信小程序插件不需要
anyOf:
- required: [captcha_code]
- required: [captcha_ticket]
required:
- phone_e164
- purpose
- captcha_id
SMSVerifyInput:
type: object
additionalProperties: false
properties:
sms_challenge_id:
type: string
description: 发送短信得到的挑战UUID
code:
type: string
description: 6位短信验证码;5分钟有效,最多验证5次
pattern: ^[0-9]{6}$
required:
- sms_challenge_id
- code
ExchangeInput:
type: object
additionalProperties: false
properties:
token:
type: string
description: 90秒内只能兑换一次的handoff令牌
verifier:
type: string
description: 设备交给手机的PKCE校验值;32字节随机数的Base64URL无填充字符串
required:
- token
- verifier
ClaimInput:
type: object
additionalProperties: false
properties:
elder_id:
type: string
description: 使用者公开UUID,复用subject_profile
expected_binding_generation:
type: integer
format: int64
description: 提交时预期绑定代数,防止跨解绑或重新绑定重放
required:
- elder_id
- expected_binding_generation
CancelInput:
type: object
additionalProperties: false
properties:
claim_id:
type: string
description: 待物理确认的绑定申请UUID
expected_binding_generation:
type: integer
format: int64
description: 提交时预期绑定代数,防止跨解绑或重新绑定重放
required:
- claim_id
- expected_binding_generation
WebAckInput:
type: object
additionalProperties: false
properties:
binding_id:
type: string
description: 当前已生效的绑定公开UUID
binding_generation:
type: integer
format: int64
description: 绑定代数;解绑、重新绑定后旧代数无效
received_revision:
type: integer
format: int64
description: 网页已收到的设备状态版本
required:
- binding_id
- binding_generation
- received_revision
ProfileInput:
type: object
additionalProperties: false
properties:
initial_consents:
type: object
additionalProperties: false
required: [types, confirmed]
properties:
types:
type: array
maxItems: 5
uniqueItems: true
items:
type: string
enum: [transcript_storage, raw_audio_storage, story_extraction, personalized_memory, family_sharing]
confirmed:
type: boolean
description: 用户明确确认所选授权;不选任何项目时仍可创建资料
household_id:
type: string
description: 家庭公开UUID;省略时须提供新家庭名称
household_name:
type: string
description: 新建家庭的名称
preferred_name:
type: string
description: 使用者称呼,用于设备人设和家庭展示
required:
- preferred_name
Empty:
type: object
additionalProperties: false
State:
type: object
properties:
device_id:
type: string
description: 生产编号,KP01-加12位大写MAC;不是平台UUID
device_revision:
type: integer
format: int64
description: 云端设备状态版本号
binding_generation:
type: integer
format: int64
description: 绑定代数;解绑、重新绑定后旧代数无效
binding_state:
type: string
enum:
- UNBOUND
- CLAIM_PENDING
- BOUND
- TRANSFER_PENDING
activation_state:
type: string
enum:
- NOT_STARTED
- RESERVED
- CONTACT_POSSIBLE
- REGISTERED_OBSERVED
- READY
- RECONCILE_REQUIRED
- BLOCKED
state_hash:
type: string
description: STATE1规范字符串的SHA256小写十六进制摘要
Command:
type: object
properties:
command_id:
type: string
description: 命令标识
type:
type: string
enum:
- CONFIRM_CLAIM
- APPLY_ACTIVATION
expires_at_ms:
type: integer
format: int64
description: 命令到期UTC毫秒
payload:
oneOf:
- type: object
properties:
claim_id:
type: string
description: 申请编号
challenge:
type: string
description: C05给设备的短时按键挑战,手机不能获取
binding_digest:
type: string
description: 云端生成的绑定摘要,按键回报原值
expected_binding_generation:
type: integer
format: int64
description: 提交时预期绑定代数,防止跨解绑或重新绑定重放
masked_account:
type: string
description: 脱敏的申请账号
- type: object
properties:
config_b64:
type: string
description: 原始配置JSON的Base64URL无填充编码
config_mac:
type: string
description: HMAC-SHA256(raw设备密钥, CFG1换行config_b64)
ActivationConfig:
type: object
properties:
contract_version:
type: string
description: ONBOARDING-1.1
device_id:
type: string
description: 生产编号,KP01-加12位大写MAC;不是平台UUID
activation_id:
type: string
description: 任务编号
config_version:
type: integer
format: int64
description: 版本
binding_generation:
type: integer
format: int64
description: 当前绑定代数
expires_at_ms:
type: integer
format: int64
description: 24小时配置有效期
iot:
type: object
properties:
instance_id:
type: string
description: 供应商实例
product_key:
type: string
description: 产品编号
device_name:
type: string
description: 冻结的物理设备名
device_secret:
type: string
description: 平台代注册取得的本设备火山密钥;不再下发product_secret
RTCAppID:
type: string
description: 平台代注册取得的RTC应用ID
bot_id:
type: string
description: 智能体ID
WebStatus:
type: object
properties:
setup_id:
type: string
description: 临时会话UUID
state:
$ref: '#/components/schemas/State'
binding_id:
type: string
description: 当前已生效的绑定公开UUID
claim_id:
type: string
description: 待物理确认的绑定申请UUID
device_saved:
type: boolean
authenticated:
type: boolean
closed:
type: boolean
sms_enabled:
type: boolean
expires_at_ms:
type: integer
format: int64
description: 设置入口到期时间
Browser:
type: object
properties:
csrf_token:
type: string
description: 保存在当前标签页sessionStorage;写请求放X-CSRF-Token
data:
$ref: '#/components/schemas/WebStatus'
Failure:
type: object
properties:
ok:
type: boolean
const: false
code:
type: string
description: 稳定业务错误码
message:
type: string
description: 用户可读说明
request_id:
type: string
description: 请求追踪UUID
DevicesItem:
type: object
properties:
platform_device_id:
type: string
description: 平台设备UUID
device_id:
type: string
description: 物理设备编号
model:
type: string
description: 型号
binding_generation:
type: integer
format: int64
description: 当前绑定代数
device_revision:
type: integer
format: int64
description: 状态版本
released:
type: boolean
description: 设备已完成内部初始化,可以开始绑定
bound:
type: boolean
description: 当前是否存在有效绑定
activation_id:
type: string
description: 激活任务UUID
activation_state:
type: string
description: 激活状态
activation_version:
type: integer
format: int64
description: 对账使用的预期任务版本
key_version:
type: integer
format: int64
description: 当前生效设备认证密钥版本
pending_key_version:
type: integer
format: int64
description: 待交付或放行的版本,没有则0
current_attempt_id:
type: string
description: 当前供应商注册尝试UUID
enrollment_job_id:
type: string
description: 最新生产或轮换任务UUID
last_error_code:
type: string
description: 故障原因码
provider_device_name:
type: string
description: 冻结的供应商物理名
household_name:
type: string
description: 家庭名,仅我的设备
preferred_name:
type: string
description: 使用者称呼,仅我的设备
TimeChallengeResponse:
type: object
properties:
payload_b64:
type: string
description: TIME1校时JSON的Base64URL无填充
mac_hex:
type: string
description: HMAC-SHA256(raw32设备密钥, TIME1换行payload_b64)
RegisterResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
state:
$ref: '#/components/schemas/State'
contract_version:
type: string
description: ONBOARDING-1.1
SetupResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
setup_id:
type: string
description: 设置UUID
expires_at_ms:
type: integer
format: int64
description: 15分钟到期
poll_after_ms:
type: integer
format: int64
description: 首次2000
state:
$ref: '#/components/schemas/State'
HandoffResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
handoff_token:
type: string
description: 90秒一次性令牌
expires_at_ms:
type: integer
format: int64
description: 到期毫秒
entry_url:
type: string
description: 固定HTTPS入口;设备将token和verifier放fragment
PollResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
state:
$ref: '#/components/schemas/State'
command:
oneOf:
- $ref: '#/components/schemas/Command'
- type: 'null'
poll_after_ms:
type: integer
format: int64
description: 下一次轮询间隔
ConfirmationResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
claim_id:
type: string
description: 申请UUID
state:
$ref: '#/components/schemas/State'
already_applied:
type: boolean
StateAckResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
accepted_revision:
type: integer
format: int64
description: 已接受版本
setup_can_close:
type: boolean
AttemptResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
allowed:
type: boolean
attempt_id:
type: string
description: 执行UUID
permit_expires_at_ms:
type: integer
format: int64
description: 30秒有效期
state:
$ref: '#/components/schemas/State'
ResultResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
activation_id:
type: string
description: 任务UUID
state:
$ref: '#/components/schemas/State'
reconcile_required:
type: boolean
ActivationAckResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
accepted:
type: boolean
state:
$ref: '#/components/schemas/State'
CloseResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
close_allowed:
type: boolean
state:
$ref: '#/components/schemas/State'
ClaimResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
claim_id:
type: string
description: 申请UUID
expires_at_ms:
type: integer
format: int64
description: 120秒有效期
state:
$ref: '#/components/schemas/State'
StateOnlyResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
state:
$ref: '#/components/schemas/State'
AckResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
accepted:
type: boolean
SMSResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
sms_challenge_id:
type: string
description: 验证码挑战UUID
expires_at_ms:
type: integer
format: int64
description: 5分钟
resend_after_ms:
type: integer
format: int64
description: '60000'
ProfileResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
elder_id:
type: string
description: 使用者公开UUID
household_id:
type: string
description: 家庭公开UUID
ProfilesResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
items:
type: array
items:
type: object
properties:
household_id:
type: string
description: 家庭公开UUID
household_name:
type: string
description: 家庭名
elder_id:
type: string
description: 使用者UUID,空值表示家庭无使用者
preferred_name:
type: string
description: 称呼
DevicesResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/DevicesItem'
limit:
type: integer
format: int64
description: 运维列表最多200条;按设备创建时间倒序
InventoryResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
device_id:
type: string
description: 生产编号,KP01-加12位大写MAC;不是平台UUID
platform_device_id:
type: string
description: 平台公开UUID,沿用现有设备管理接口
enrollment_job_id:
type: string
description: 生产或轮换任务UUID
key_version:
type: integer
format: int64
description: 目标凭据版本
contract_version:
type: string
description: ONBOARDING-1.1
released:
type: boolean
DeliveryResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
algorithm:
type: string
description: RSA-OAEP-SHA256+A256GCM
enrollment_job_id:
type: string
description: 任务UUID
wrapped_key_b64:
type: string
description: RSA包装的AES数据密钥
ciphertext_b64:
type: string
description: 前12字节为nonce,后接AES-GCM密文和16字节认证标签;AAD为任务UUID
expires_at_ms:
type: integer
format: int64
description: 交付包到期时间
ReleaseResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
device_id:
type: string
description: 生产编号,KP01-加12位大写MAC;不是平台UUID
platform_device_id:
type: string
description: 平台公开UUID,沿用现有设备管理接口
enrollment_job_id:
type: string
description: 生产或轮换任务UUID
key_version:
type: integer
format: int64
description: 目标凭据版本
contract_version:
type: string
description: ONBOARDING-1.1
released:
type: boolean
LogoutResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
signed_out:
type: boolean
AccountResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
type: object
properties:
csrf_token:
type: string
description: 账号会话写请求CSRF
authenticated:
type: boolean
BrowserResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
$ref: '#/components/schemas/Browser'
WebStatusResponse:
type: object
properties:
ok:
type: boolean
const: true
code:
type: string
const: OK
request_id:
type: string
format: uuid
server_time_ms:
type: integer
format: int64
description: UTC毫秒
data:
$ref: '#/components/schemas/WebStatus'