OpenAPI YAMLOpenAPI JSON问题 YAMLAPI 概览
此分组有 10 个操作,由 api/openapi.yaml 生成。可按路径、操作或认证筛选。每个端点都会列出其输入;展开后可查看请求模板和响应代码。模板需要您自己的值和符合架构的请求体。
用你的值替换大写占位符。对于JSON请求,请保存符合request.json模式的请求体。Cookie示例使用经过身份验证会话的本地Cookie存储。
OAuth 登录、令牌和撤销
Oauth 令牌
代理 JWT 的 OAuth 2.0 令牌端点(RFC 6749 §3.2)。grant_type refresh_token 轮换不透明刷新凭证(RFC 9700):每次使用返回一对新凭证;request_id(16 到 200 字符)使得在凭证和授权仍有效且后继仍是当前时,完全重试返回相同响应,无需超时重试。
任何对已废止刷新令牌的其他重用都会撤销整个系列(invalid_grant)。被移除的选定成员或项目返回invalid_scope,error_description以"project_selection_inactive:"开头;刷新凭证不被消耗。
通过 GET /api/projects 发现实时成员资格,将其与先前同意的选择交集,并使用 projects= 和新的 request_id 重试。永远不要因此选择错误结束刷新系列。
请求的权限范围缩小独立适用于每个项目和身份权限;明确指定范围但无身份则排除身份权限。grant_type urn:ietf:params:oauth:grant-type:token-exchange(RFC 8693)且 subject_token_type 为 urn:screenrig:token-type:identity-credential 或 urn:screenrig:token-type:project-token 时,返回 unsupported_token_type:旧凭证已废弃,安装程序需使用 screenrig login 重新登录。resource(RFC 8707)为 https://api.<domain>/api 或无;projects 选择最多 64 个已同意的项目 ID。
省略仅在集合适合时选择全部;否则客户端必须选择子集。project_id 在兼容性发布期间选择一个。连接应用的授权仅含单一资源 https://api.<domain>/mcp,刷新时可能省略。
客户端分为公开客户端(仅 client_id)或连接应用,其元数据声明 private_key_jwt 通过 client_assertion_type urn:ietf:params:oauth:client-assertion-type:jwt-bearer 和 client_assertion(iss 和 sub 为其 client_id,aud 为发行者或此端点的字符串,exp 在 iat 后 5 分钟内,jti 唯一使用,kid 指定其密钥之一;支持 EdDSA、ES256 或 RS256)进行认证。grant_type authorization_code 在 60 秒内使用精确 redirect_uri 和 PKCE code_verifier 兑换连接应用的代码;resource 必须为空或授权的那个;第二次兑换会撤销该代码创建的授权。grant_type client_credentials 是服务客户端:通过客户端断言(其注册密钥之一)或 HTTP Basic(client_secret_basic;请求体中的密钥被拒绝)认证,获得 15 分钟的服务令牌,适用于其项目、受众 api 或(资源 https://api.<domain>/mcp)mcp,权限在其能力和访问级别内,无刷新令牌;每客户端每小时限 600 次。
错误为 RFC 6749 JSON {error, error_description},带 Cache-Control no-store;服务器未发出时返回 temporarily_unavailable (503)。
速率限制返回 429 rate_limited,带 Retry-After:本端点及撤销端点每客户端地址每小时 1200 次,每授权每小时 60 次刷新,每旧凭证每小时 30 次交换。grant_type urn:ietf:params:oauth:grant-type:device_code(RFC 8628 §3.4)轮询设备登录:等待授权时返回 authorization_pending,轮询过快返回 slow_down(间隔增加 5 秒),拒绝时返回 access_denied,10 分钟后返回 expired_token,然后返回令牌响应。
新安装接收一对令牌;使用现有安装的访问令牌启动的登录将批准项目添加到该授权,并仅接收访问令牌,不旋转刷新令牌。再次轮询相同 device_code 返回相同响应,直到授权首次旋转或 10 分钟后返回 invalid_grant。
仅限 POST,表单编码,无查询字符串。
请求主体字段
| 字段 | 描述 |
|---|---|
| grant_type(必填,字符串) | 允许:“authorization_code”、“client_credentials”、“refresh_token”、“urn:ietf:params:oauth:grant-type:token-exchange”、“urn:ietf:params:oauth:grant-type:device_code” |
| client_id(可选,字符串) | |
| client_assertion_type(可选,字符串) | 允许值:“urn:ietf:params:oauth:client-assertion-type:jwt-bearer” |
| client_assertion(可选,字符串) | |
| code(可选,字符串) | |
| redirect_uri(可选,字符串) | |
| code_verifier(可选,字符串) | minLength:43 maxLength:128 |
| refresh_token(可选,字符串) | |
| device_code(可选,字符串) | |
| request_id(可选,字符串) | minLength:16 maxLength:200 |
| subject_token(可选,字符串) | |
| subject_token_type(可选,字符串) | 允许值:“urn:screenrig:token-type:identity-credential”、“urn:screenrig:token-type:project-token” |
| scope(可选,字符串) | |
| 资源(可选,字符串) | 格式:“uri” |
| projects(可选,字符串) | 以空格或逗号分隔的项目 ID;省略则表示所有已同意的项目,最多到配置上限(默认 64)。不能与 project_id 一起使用。 |
| project_id(可选,字符串) |
请求模板和响应
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/token'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 令牌响应(RFC 6749 §5.1)。 | OAuthTokenResponse(application/json) |
| 默认 | RFC 6749 §5.2 错误。 | OAuthError(application/json) |
Oauth 设备授权
RFC 8628 §3.1 设备授权针对 `screenrig login`。scope 为 access:manage(默认)、access:propose 或 access:read;project_id 建议用户批准的项目;name、agent_type、platform 和 version 描述安装,由设备报告并显示给审批者;install_source(可选)说明其安装来源,并保存在批准所创建的智能体上。
无 Authorization 时启动新安装。使用 Authorization: Bearer 和带有身份范围的智能体访问令牌请求将项目添加到该安装的授权,或将只读项目提升为管理权限。
该人员在 verification_uri(或访问 verification_uri_complete)输入 user_code 并在仪表板批准;设备每隔若干秒使用 device_code 轮询令牌端点。
速率限制返回 429 rate_limited,带 Retry-After:每客户端地址每小时 10 次,每小时全局 600 次,端点后为每地址每小时 1200 次。错误为 RFC 6749 JSON,带 Cache-Control no-store;服务器未发出时返回 temporarily_unavailable(503)。仅支持 POST,表单编码,无查询字符串。
请求主体字段
| 字段 | 描述 |
|---|---|
| client_id(必填,字符串) | |
| scope(可选,字符串) | 允许:“access:manage”、“access:propose”、“access:read” |
| project_id(可选,字符串) | maxLength:200 |
| 名称(可选,字符串) | maxLength:80 |
| agent_type(可选,字符串) | maxLength:32 |
| 平台(可选,字符串) | maxLength:80 |
| version(可选,字符串) | maxLength:40 |
| install_source(可选,字符串) | 可选,集成的安装来源:主机,以及斜杠之后的市场(claude/screenrig, codex/screenrig, grok/screenrig),或单独的主机,例如 npm。缺失或格式错误的值会被忽略,且绝不会导致请求失败。pattern: "^[a-z][a-z0-9-]{0,31}(/[a-z0-9][a-z0-9._-]{0,63})?$" |
请求模板和响应
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/device_authorization'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 设备授权响应(RFC 8628 §3.2)。 | 对象(application/json) |
| 默认 | RFC 6749 §5.2 错误。 | OAuthError(application/json) |
Oauth 授权
连接应用的 OAuth 2.0 授权端点(MCP 客户端)。client_id 是客户端 ID 元数据文档 URL(https,端口 443,无重定向,最大 64 KiB 和 5 秒,仅限公共地址)或注册的客户端 ID。
请求按以下顺序验证:客户端、精确的 redirect_uri(指向 127.0.0.1、[::1] 或 localhost 的 http 回环重定向在任意端口都匹配)、response_type code、带 code_challenge_method S256 的 code_challenge、resource(https://api.<domain>/mcp、受保护资源元数据指明此服务器的其他 MCP 资源,或省略),然后是 scope(access:read(默认)、access:propose、access:manage 和能力名称)。
未知客户端或redirect_uri返回HTML错误页面且不重定向;之后的错误会重定向到redirect_uri,带有error、error_description、state和iss(RFC 9207)。
成功响应 303 到仪表板同意页面,用户选择项目、访问级别(默认只读,提议或管理)和权限;批准后重定向带有代码、状态和发行者。每个客户端地址每分钟限 30 次请求。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| client_id | 查询 | 必填 | |
| redirect_uri | 查询 | 必填 | |
| response_type | 查询 | 必填 | |
| code_challenge | 查询 | 必填 | |
| code_challenge_method | 查询 | 必填 | |
| 状态 | 查询 | 可选 | |
| 资源 | 查询 | 可选 | |
| scope | 查询 | 可选 |
请求模板和响应
curl --request GET 'https://api.screenrig.ai/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&response_type=RESPONSE_TYPE&code_challenge=CODE_CHALLENGE&code_challenge_method=CODE_CHALLENGE_METHOD'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 303 | 到同意页面,或带错误、状态和 iss 返回客户端的 redirect_uri。 | 无正文 |
| 400 | 未知客户端或 redirect_uri 的 HTML 错误页;绝不重定向。 | 字符串(text/html) |
| 429 | 该地址授权请求过多。 | 无正文 |
Oauth 撤销
RFC 7009 撤销。向客户端发放的不透明刷新凭证(或先前版本的刷新 JWT)或代理访问 JWT,撤销其授权;授权的访问令牌将在数秒内被拒绝。未知、过期或外来令牌也返回 200。仅支持 POST,表单编码。
请求主体字段
| 字段 | 描述 |
|---|---|
| client_id(可选,字符串) | |
| client_assertion_type(可选,字符串) | 允许值:“urn:ietf:params:oauth:client-assertion-type:jwt-bearer” |
| client_assertion(可选,字符串) | |
| 令牌(必填,字符串) | |
| token_type_hint(可选,字符串) |
请求模板和响应
curl --request POST --header 'Content-Type: application/x-www-form-urlencoded' --data-binary '@request.bin' 'https://api.screenrig.ai/oauth/revoke'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 已撤销,或无可撤销内容。 | 无正文 |
| 默认 | RFC 6749 §5.2 错误。 | OAuthError(application/json) |
Oauth 授权服务器元数据
RFC 8414 代理授权服务器的授权服务器元数据。
请求模板和响应
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-authorization-server'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 元数据文档。 | 对象(application/json) |
Oauth 受保护资源 MCP
RFC 9728 /mcp 的受保护资源元数据,由每个 /mcp 401 的 resource_metadata 命名。
请求模板和响应
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-protected-resource/mcp'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 元数据文档。 | 对象(application/json) |
Oauth 受保护资源 API
RFC 9728 /api 的受保护资源元数据。
请求模板和响应
curl --request GET 'https://api.screenrig.ai/.well-known/oauth-protected-resource/api'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 元数据文档。 | 对象(application/json) |
获取仪表板 OAuth 授权
待处理的连接应用授权,用于同意页面:客户端名称和域名按其元数据声明(不获取徽标),是否为注册客户端,重定向主机,以及请求的访问级别和功能。未知、过期或已处理的授权返回 not_found。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| id | 路径 | 必填 |
请求模板和响应
curl --request GET --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 授权。 | OAuthAuthorization(application/json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
批准仪表板 OAuth 授权
在新证明(类型 oauth_authorization_approval,主题为授权 ID)后批准某人项目的已连接应用:创建应用的智能体身份(类型 mcp_client,负责人为该人)、其成员身份及所选访问权限(读或管理;省略则保持请求级别,默认读)和能力(请求的子集),并响应 redirect_uri,携带 code、state 和 iss,页面据此导航。
该代码有效期为 60 秒。限定屏幕范围的成员不能连接智能体、签发凭据或管理项目的人员:outside_screen_scope(请询问项目所有者)。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| id | 路径 | 必填 |
请求主体字段
| 字段 | 描述 |
|---|---|
| project_id(必填,字符串) | minLength:1 |
| proof(可选,DashboardProof) | |
| 功能(可选,数组) | 仅在代理连接和已连接应用批准时可选。省略表示批准完整请求集;连接能力的非空子集缩小授予的凭证;其他均为 invalid_request。 |
| user_code(可选,字符串) | 批准设备登录(流程设备)时必需:人员确认与终端匹配的代码。不匹配为agent_connection_code_mismatch;第五次使登录过期(agent_connection_expired)。否则忽略。maxLength:32 |
| access(可选,字符串) | 设备登录或连接应用批准的访问级别(只读、提议或管理);省略则保持请求级别。忽略其他连接。无法批准审核的人员不得批准管理权限(403 approver_required)。允许值:“read”、“propose”、“manage”。 |
请求模板和响应
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID/approve'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 重定向回应用程序。 | OAuthAuthorizationRedirect(application/json) |
| 403 | outside_screen_scope - 调用方限定于屏幕,且请求所指明或涉及的屏幕、屏幕文件夹、选择器或受众超出了这些屏幕(docs/screen-scope.md)。范围之外的 ID 和不存在的 ID 得到相同的答复;errors[0].screen_scope 携带调用方的范围,写入会被整体拒绝,绝不会被缩小范围。 | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
拒绝 Dashboard OAuth 授权
在新的证明后拒绝已连接的应用(kind oauth_authorization_denial),并返回页面要跳转的 redirect_uri,其中携带 error=access_denied、state 和 iss。限定屏幕范围的成员不能连接智能体、签发凭据或管理项目的人员:outside_screen_scope(请询问项目所有者)。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| id | 路径 | 必填 |
请求主体字段
| 字段 | 描述 |
|---|---|
| project_id(必填,字符串) | minLength:1 |
| proof(可选,DashboardProof) | |
| 功能(可选,数组) | 仅在代理连接和已连接应用批准时可选。省略表示批准完整请求集;连接能力的非空子集缩小授予的凭证;其他均为 invalid_request。 |
| user_code(可选,字符串) | 批准设备登录(流程设备)时必需:人员确认与终端匹配的代码。不匹配为agent_connection_code_mismatch;第五次使登录过期(agent_connection_expired)。否则忽略。maxLength:32 |
| access(可选,字符串) | 设备登录或连接应用批准的访问级别(只读、提议或管理);省略则保持请求级别。忽略其他连接。无法批准审核的人员不得批准管理权限(403 approver_required)。允许值:“read”、“propose”、“manage”。 |
请求模板和响应
curl --request POST --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/oauth/authorizations/RESOURCE_ID/deny'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 重定向回应用程序。 | OAuthAuthorizationRedirect(application/json) |
| 403 | outside_screen_scope - 调用方限定于屏幕,且请求所指明或涉及的屏幕、屏幕文件夹、选择器或受众超出了这些屏幕(docs/screen-scope.md)。范围之外的 ID 和不存在的 ID 得到相同的答复;errors[0].screen_scope 携带调用方的范围,写入会被整体拒绝,绝不会被缩小范围。 | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |