Meshline
简体中文规范下载 Markdown 原文

中文为规范基准;英文为维护译本。

账户资料方法

客户端—中继协议 · 方法公共约定 · 账户资料与设备证书 · 账户与设备生命周期

profile.publish

profile.publish 要求当前归属中继保存一份由发布者本次所用设备签署的资料快照,供其他账户读取。

项目 约定
HTTP PUT /meshline/v1/profile/publish
会话要求 设备会话
WSS profile.publish
HTTP 成功状态 204 No Content

请求参数

请求参数直接使用完整 AccountProfile,资料必须属于调用账户。

响应对象

无。成功表示中继已经持久化该资料及验证其签名所用的设备证书。

处理规则

中继必须通过设备会话确认发布账户和签名设备,并按账户资料规则验证该文档。

中继必须检查完整资料是否满足 AccountProfile 的 8 KiB Canonical JSON 大小上限。超限时返回 request_too_large,不得保存本次资料或替换已保存资料。

中继接受发布前,必须以本地 Unix 秒检查 updated_at;超过本地时间加中继允许的未来偏差时返回 clock_skew,不得替换已保存资料。时间字段类型或表示非法返回 bad_request。

中继按 updated_at 比较同一账户资料的新旧:值较大的有效资料替换当前资料,值较小时返回 stale_state;值相同时,以中继实际接受更新的先后顺序为准,后接受的有效资料覆盖先前资料。

profile.resolve

profile.resolve 按完整账户 ID 读取目标账户资料。不要求目标账户授权或联系人关系。客户端调用仍要求有效设备会话,该会话只用于中继接入和资源控制。

项目 约定
HTTP GET /meshline/v1/profile/resolve
会话要求 设备会话
WSS profile.resolve
HTTP 成功状态 200 OK

请求参数

字段 类型 必需 语义与约束
account string 是 要读取资料的目标账户 ID

响应对象

响应对象返回资料及其签名设备证书:

字段 类型 必需 语义与约束
profile AccountProfile 是 目标账户当前选中的有效资料
signer_certificate DeviceCertificate 是 中继接受发布时验证资料签名所用的设备证书;资料在发布时已经确认签名设备有效,不要求其读取时仍在当前状态中

调用方必须按 DeviceCertificate 的签名与账户绑定规则独立验证 signer_certificate,使用其中的设备签名公钥验证资料中的设备签名,并确认 profile.account 与原请求的 account 相同。

处理与错误

缺少账户、显式 null、空字符串或格式非法的账户值返回 bad_request。

所有调用都要求有效设备会话。会话缺失、过期或失效时返回 unauthorized;会话模式不符时返回 forbidden。

源中继先验证设备会话,再按目标账户的当前路由处理本地目标,或把包含目标 account 的请求作为中继间 profile.resolve 的 params 转发。

目标中继必须确认自己仍是目标账户的当前归属中继:已知有效当前路由指向其他中继时返回 route_stale,无法确定当前归属中继时返回 target_not_local。自身与其他账户查询均遵循目标路由与刷新规则,不得以非归属中继的旧资料作为当前权威响应。

目标资料不存在时返回 not_found;存在时返回完整资料及其签名设备证书。读取不改变资料或账户状态,也不授予完整设备集合查询或消息投递权限。