2869 lines
84 KiB
YAML
2869 lines
84 KiB
YAML
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: 关联OIDC登录
|
||
tags:
|
||
- Onboarding
|
||
description: HTTPS,同源浏览器,Cookie不可读,CSRF仅保存在当前标签页。
|
||
security:
|
||
- SetupCookie: []
|
||
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/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/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
|
||
enum:
|
||
- LOGIN
|
||
required:
|
||
- phone_e164
|
||
- purpose
|
||
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:
|
||
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: 冻结的物理设备名
|
||
product_secret:
|
||
type: string
|
||
description: 供应商产品注册密钥,只在设备认证后的HTTPS激活配置中下发
|
||
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
|
||
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'
|