Skip to content

权限范围(scope)

类型化目录中恰好有 23 个 scope:俱乐部 14 个、联盟 9 个。路由声明的 scope 必须全部满足。缺少 scope 元数据会作为服务端接线错误失败关闭;/v1/me/v1/club/profile 明确要求有效签名但不要求业务 scope。只有 /health 完全公开。

俱乐部 scope

Scope能力
club.contacts.read脱敏人员列表、时间线和家庭
club.contacts.read_pii未脱敏人员资料;每次审计
club.contacts.write人员和家庭写操作
club.compliance.read合规、签署状态、模板、同意和限制
club.compliance.read_files短时签名文件 URL;每次审计
club.compliance.write创建/预览/操作签署请求及续签
club.safety.read事故摘要、参赛限制和证书
club.safety.read_sensitive完整事故详情;每次审计
club.safety.write事故、证人和员工证书写操作
club.billing.read发票、收款单和产品;只读
club.messages.read消息、收件人和模板;只读
club.coaches.read教练准入卡和证书
club.coaches.write邀请/暂停/恢复/吊销教练准入
club.federations.read俱乐部联盟会籍和共享状态

联盟 scope

Scope能力
federation.members.read成员俱乐部和治理视图
federation.aggregate.read合规/报名/总览聚合
federation.people.read联盟人员名册
federation.people.write登记/更正/启用/停用人员
federation.audit.read联盟审计流
federation.safety.read联盟层事故/移除;敏感详情审计
federation.compliance.read联盟证书/合规视图
federation.memberships.read会籍申请和会籍
federation.rules.read数据共享规则和同意状态

授权结果是 workspace scope 目录与发放者已有 Academy 人工权限的交集。订阅限制已明确延期;套餐、状态、模块、费率和自由 JSON 值都不是权益证据。五个俱乐部 scope 仅可由当前俱乐部的真实 OWNER 授予:club.compliance.read_filesclub.safety.read_sensitiveclub.coaches.readclub.coaches.writeclub.federations.read。OWNER 证据独立解析自发放者与精确目标俱乐部 tenant 之间有效、未删除的 Role(type=STAFF, subtype=OWNER) 行。ADMIN、自定义 wildcard 持有者和其他俱乐部的 OWNER 均不能授予;* 永远不会被当作角色。匹配的 OWNER 最多可授予全部 14 个俱乐部 scope,非 OWNER wildcard 仍最多只有 9 个普通俱乐部 scope。宽泛的安全 scope 同时要求事故/移除模块与可独立配置的凭据登记模块。联盟人员、安全和合规访问仍必须有明确的员工矩阵证据;联盟管理员和 * 都不能替代该证据。

目录展示、创建和更新使用同一个服务端可授予列表。API key 只获得持久化的明确 scope 和精确 workspace 绑定,不继承 OWNER。失去 OWNER 不会静默撤销既有 key:非 OWNER 管理者可以严格缩小 scope 作清理,但不能重新提交相同的不可授予集合、把一个 OWNER 专属 scope 替换成另一个或新增它。轮换只保留既有 scope,不会扩大 scope。

Academy 控制面的 .../partner/credentials/scopes 响应保留顶层 scopes 作为可授权列表,并新增 groups,按稳定顺序返回该 workspace 的完整目录。分组只含本地化 key,不含通配符或逐项 grantable 标记。分组标签使用 partner.scopeGroup.<group-id>.label;每个 scope 使用 partner.scope.<scope>.labelpartner.scope.<scope>.description。UI 描述必须明确说明 PII、文件、敏感安全数据和审计访问。未来仅服务端使用的订阅上限一旦启用,在缺少证据时必须传入 [];请求 DTO 不接受该上限。