Skip to content

Driver 开发者平台 API

供官方 Driver「开发者中心」调用的 OAuth 管理通道。它把当前 OAuth 用户映射到既有 Team、Project 和 OAuth Product/Client 服务,不创建第二套账号、团队或插件模型。

认证与上线条件

所有接口使用 Authorization: Bearer <OAuth access token>,并同时满足:

  • token 具有 developer:platform;该 Scope 只能通过 authorization code + PKCE + consent 获得;
  • token 所属 App 为 is_official=trueapp_type=standard
  • Client ID 位于当前节点的 OAUTH_DEVELOPER_PLATFORM_HOST_CLIENT_IDS 白名单;
  • 当前用户已通过平台准入检查。

developer:platformoauth:delegate 相互独立。旧 token 不会自动获得新 Scope;后台完成 migration、 受控授予和环境变量配置后,Driver 必须重新登录并 consent。未就绪区域保持拒绝,不应降级为网站 JWT 或 API Key。

所有成功或失败响应均带 Cache-Control: no-storePragma: no-cache。错误体只返回稳定 { "error": "code" },不回显 token、允许 Scope、Client 白名单或请求路径。

接口

GET /oauth/developer-platform/context

返回当前用户可访问的 Team。

json
{
  "success": true,
  "teams": [{ "id": "team-uuid", "name": "示例团队", "slug": "example" }]
}

GET /oauth/developer-platform/teams/:teamId/projects

返回当前用户在目标 Team 中至少可读的 Project。

json
{
  "success": true,
  "projects": [{
    "id": "project-uuid",
    "teamId": "team-uuid",
    "name": "示例项目",
    "description": null,
    "systemPurpose": null
  }]
}

GET /oauth/developer-platform/teams/:teamId/projects/:projectId/scopes

返回当前用户、Team、Project 与开发模式实时资格的 Scope 交集。创建表单只能提交该集合中的 code。

json
{
  "success": true,
  "scopes": [{
    "code": "chat:completions",
    "name": "AI 对话",
    "description": "调用 AI 对话能力",
    "selfServiceEligibility": { "kind": "project_permission", "minimum": "execute" },
    "definitionVersion": 2
  }]
}

GET /oauth/developer-platform/teams/:teamId/products

列出目标 Team 中当前用户可见的插件 Product,并内嵌 Client、审核单和 release 摘要。

json
{
  "success": true,
  "products": [{
    "id": "product-uuid",
    "primaryManagementClientId": "management-client-uuid",
    "ownerUserId": "user-uuid",
    "teamId": "team-uuid",
    "projectId": "project-uuid",
    "listingKind": "plugin",
    "packageAppId": null,
    "firstApprovedAt": null,
    "clients": [],
    "submissions": [],
    "releases": []
  }]
}

POST /oauth/developer-platform/teams/:teamId/products

创建 plugin Product 和单一 primary OAuth Client。请求头必须包含长度不超过 128 的非空 Idempotency-Key

json
{
  "projectId": "project-uuid",
  "name": "示例插件",
  "purpose": "本地开发测试",
  "scopeCodes": ["chat:completions"]
}

请求只接受上述四个字段,额外字段会被拒绝。服务端固定 listing_kind=pluginplatform=Primary、 空回调地址和空授权配置。相同 key 与相同内容重放返回 200;相同 key 改变内容返回 409。

首次创建返回 201:

json
{
  "success": true,
  "product": {
    "productId": "product-uuid",
    "managementClientId": "management-client-uuid",
    "oauthClientId": "public-oauth-client-id",
    "draftRevisionId": "revision-uuid",
    "idempotent": false
  }
}

GET /oauth/developer-platform/teams/:teamId/clients/:managementClientId

读取属于目标 Team 且当前用户可管理的 Client。

json
{
  "success": true,
  "detail": {
    "client": {
      "id": "management-client-uuid",
      "productId": "product-uuid",
      "clientId": "public-oauth-client-id",
      "clientLabel": "Primary",
      "name": "示例插件",
      "projectId": "project-uuid",
      "appType": "plugin",
      "currentPublicRevisionId": null,
      "disabledAt": null,
      "createdAt": "2026-09-01T00:00:00Z",
      "updatedAt": "2026-09-01T00:00:00Z"
    },
    "revisions": []
  }
}

常见错误

HTTPerror含义
400invalid_team_idTeam ID 格式无效
400invalid_developer_platform_contextScope 查询缺少 context=development 或包含额外查询参数
400oauth_product_project_binding_invalidTeam/Project ID 格式或绑定无效
400invalid_team_oauth_product_create创建请求 body、字段或幂等键格式无效
400oauth_self_service_scope_not_allowed请求的 Scope 不在当前用户、Team、Project 的开发模式资格交集中
400invalid_developer_platform_requestClient 详情请求参数格式无效
401invalid_tokentoken 无效、过期、撤销,或所属 App 已禁用/删除
403insufficient_scopetoken 缺少 developer:platform 或路由不在 Scope 定义中
403unauthorized_clientHost 非官方、非 standard 或不在当前节点白名单
403invite_activation_required当前账号未通过平台准入
404oauth_app_not_found目标 Product/Client 不存在或不可见
409oauth_team_product_create_idempotency_conflict相同幂等键对应不同创建内容

体验者管理、审核、批准、发布和下架继续使用 Team OAuth 应用 API

AI Workflow Editor