核心概念

产品、套餐、授权、激活、设备、token、权益与席位之间的关系。

先把这几个对象分清,后面看 API 会快很多。

对象含义
Product一个可授权的软件产品,拥有授权码前缀与发布源。
Plan授权的规则模板:模型、设备上限、宽限期、续验间隔与权益。
License发给一个客户的实例,绑定套餐、有效期与状态。
Activation某台设备使用某份授权的记录,占用一个设备名额。
Device identifier客户端计算并哈希后的机器标识,用于绑定激活。
Token服务端用 Ed25519 签名的离线凭证,内含 claims。
exptoken 的下次联网续验时间,不是授权到期。
vun授权本身的到期时间(买断可为空)。
ftr权益集合:布尔、数值与配额。客户端据此解锁功能。
Seat团队成员占用的名额;超限时最后加入者暂停。
Webhook支付、激活、吊销等事件的通知,带 HMAC 签名。

授权状态

trialing · active · expired · suspended · revoked

状态变化会反映在下一次 verify 或新签发的 token 中。离线期间无法感知吊销,最长延迟到一个 token 的 exp。

为什么 exp 和 vun 分开

exp 控制「多久必须联网一次」,vun 控制「授权买到什么时候」。把两者分开,可以在不缩短授权期限的前提下控制离线窗口,也可以在续费后立即签发更长的 vun 而不影响客户端节奏。

权益的三种形态

  • boolean:功能开关,例如 publish: true。
  • numeric:容量上限,例如导出次数或项目数。
  • quota:随时间滚动的原子配额,由服务端扣减。
客户端的判断顺序 验签 → 检查 did 与设备指纹 → 检查 exp → 读取 ftr 解锁功能。不要只判断「有没有 token」。