跳到正文
MuoCeon 文档中心

总览

API 文档的组织方式(总览 → 版本 → 上下文 → 接口组)、版本一览,以及跨版本通用的请求与响应约定。

本板块给出对外 HTTP API 的说明。它按「总览 → 版本 → 上下文 → 接口组」四层组织,本页是第一层:先说明整体结构,再给出所有版本都适用的通用约定。

组织方式

层级内容位置
总览结构说明、版本一览、通用约定本页
版本一套独立的接口契约,路径里的 /v1、/v2v1、v2
上下文服务器上的限界上下文,同时也是令牌受众版本页内的上下文介绍
接口组同一路径前缀下的一组端点上下文页内的接口组表

四层不是文档分类习惯,而是实现结构:版本前缀挂在路由根上,上下文是下一段路径,接口组是再下一段。所以 URL 本身就是目录——/v1/oauth/grants 对应「v1 → oauth → grants」。

版本一览

版本状态说明
v1使用中当前唯一的可用版本,三个上下文:auth / oauth / account
v2未发布占位。破坏性变更才会引入新版本,v2 尚未定义任何接口

上下文与受众

上下文基础路径受众主要使用方
auth{origin}/v1/authauth账户页、同意页;第三方读取用户信息
oauth{issuer}(即 {origin}/v1/oauth)oauth第三方授权与令牌、同意页内部端点
account{origin}/v1/accountaccount账户资料

上下文之间不共享数据,令牌不能跨上下文使用:拿着 auth 受众的令牌读不了 account 的数据,即使 scope 看起来够用。

地址与版本

  • 版本号写在路径里(/v1/),不在请求头里;不存在用 Accept-Version 协商的写法。
  • 同一版本内只做兼容性变更:新增端点、新增可选字段、新增错误码取值。已有字段的语义与必填性不变。
  • 破坏性变更一定伴随新版本,旧版本并行一段时间后按公告下线,不会在同一路径上悄悄改变行为。
  • 实际地址一律以元数据发现的返回值为准,不要硬编码域名。

认证

场景方式
资源接口(UserInfo、账号管理)Authorization: Bearer <access_token>
令牌接口(token / revoke / introspect)客户端认证:client_secret_basic 或 client_secret_post;公开客户端仅传 client_id

不支持的认证方式一律返回 401,不会「尽量尝试」——降级尝试只会把认证失败伪装成参数错误。

请求格式

  • 令牌相关端点:Content-Type: application/x-www-form-urlencoded。
  • 同意页与内部端点:Content-Type: application/json,且只接受 POST。
  • 资源接口:GET 无请求体;写入类接口使用 JSON 请求体。

响应格式

两套并存,按端点区分,客户端必须都能解析:

端点类别成功响应错误响应
协议端点(token / revoke / introspect)扁平 JSON(access_token、expires_in 等)RFC 6749 §5.2:{ "error": "...", "error_description": "..." }
资源与管理端点扁平 JSON统一信封:{ success, code, message, details?, timestamp }

完整错误码见错误码。

限流

  • 按端点独立计数,同时存在全局限流。
  • 超限返回 429,响应带 Retry-After(秒)。
  • 客户端应遵守 Retry-After;批量场景使用随机退避,不要固定间隔重试。

缓存

响应缓存头
令牌相关端点Cache-Control: no-store,不得缓存
jwks可缓存 5 分钟,按 kid 匹配公钥
资源接口不缓存用户数据

时间与标识

  • 时间统一为 Unix 秒(auth_time、iat、exp)或 ISO 8601 UTC 字符串(timestamp)。
  • 用户标识使用 sub,全局稳定且不可预测;不要用邮箱、昵称做账号主键。
  • 分页接口使用游标或页码参数,具体以端点页为准。

第三方先读哪里

逐字段的接口文档正在按版本与上下文补齐;在补齐之前,上面四页已覆盖第三方接入所需的全部内容。

本页目录