OpenAPI YAMLOpenAPI JSON问题 YAMLAPI 概览
此分组有 9 个操作,由 api/openapi.yaml 生成。可按路径、操作或认证筛选。每个端点都会列出其输入;展开后可查看请求模板和响应代码。模板需要您自己的值和符合架构的请求体。
用你的值替换大写占位符。对于JSON请求,请保存符合request.json模式的请求体。Cookie示例使用经过身份验证会话的本地Cookie存储。
连接:项目可重复使用的 Microsoft 和 Google 访问权限
列出连接
按最新优先列出项目的连接,每页最多 200 个;把 next_cursor 作为 after 传回即可获取下一页。
连接是项目可重复使用的 Microsoft 或 Google 访问权限,供无人值守运行的数据源使用:microsoft365 或 google_calendar 数据源、Power BI 连接和 SharePoint 媒体同步账号,在 config.connection_id 中指明一个连接,而不是自带凭据(docs/connections.md)。
密钥、密钥文件或刷新令牌绝不会返回:secret 显示是否已保存,以及一条不属于机密的提示。读取绝不会带有授权链接。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| ScreenRig-Project | header | 可选 | 已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。 |
| after | 查询 | 可选 | 同一列表上一页的 next_cursor,使用相同过滤条件。省略时从最新行开始。非此类游标值为 invalid_request。 |
请求模板和响应
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 一页连接。 | ConnectionList(application/json);头信息:Cache-Control |
| 400 | invalid_request,包括格式错误的游标。 | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
创建连接
创建到 Microsoft(provider microsoft)或 Google(provider google)的连接。own_app 模式是客户自己的应用:Microsoft 需要 config.tenant_id(目录 ID 或主域名;common、organizations 和 consumers 会被拒绝)、config.client_id 和 secret(应用某个客户端密钥的值);Google 的 secret 是服务账号的 JSON 密钥文件。
密钥加密封存,绝不会返回。screenrig_app 模式使用 screenRIG 自己的应用,不接受 config 和 secret:连接以 pending_consent 创建,响应带有 consent_url,这是供完成授权的人使用的一次性链接(有效期至 consent_expires_at)。
对于 Microsoft,这是 Microsoft 365 管理员,他为租户同意 screenRIG 的应用;随后浏览器登录 Microsoft 指明的租户,因此连接记录的是已确认的租户,绝不会是回调仅仅声称的租户。
对于 Google,这是账号持有者,他授予对该账号可见日历的只读访问权限;screenRIG 加密封存刷新令牌,并保存账号的地址。该链接是一次授权的凭据:只发送给那个人。
没有该提供商 screenRIG 应用的服务器会返回 409 connection_app_not_configured,own_app 连接仍可正常工作。一个组织在其所有项目中最多有 50 个连接(connection_limit_reached)。追加 connection.created。
使用相同 Idempotency-Key 的完全相同的重试会返回同一个连接(screenrig_app 的重试会得到新的授权链接,它会取代第一个)。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| ScreenRig-Project | header | 可选 | 已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。 |
| Idempotency-Key | header | 可选 | 省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。 |
请求主体字段
| 字段 | 描述 |
|---|---|
| provider(必填,字符串) | 允许:“microsoft”、“google” |
| mode(必填,字符串) | 允许:“own_app”、“screenrig_app” |
| 名称(必填,字符串) | minLength:1 maxLength:80 |
| config(可选,ConnectionConfigWrite) | Microsoft,own_app 模式:两个成员都要提供。Google 连接和 screenrig_app 模式不接受。 |
| secret(可选,字符串) | own_app 模式。Microsoft:应用某个客户端密钥的值(不是其 ID,最多 1024 个字符),并带上 config.tenant_id 和 config.client_id。Google:服务账号的完整 JSON 密钥文件(最多 16384 字节)。到达时即加密封存,绝不会返回;CLI 从文件或标准输入读取,绝不从参数读取。 screenrig_app 模式下不接受。minLength: 1 maxLength: 16384 |
请求模板和响应
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/connections'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 201 | 已创建。screenrig_app 模式的连接带有 consent_url 和 consent_expires_at。 | ConnectionConsent(application/json);头信息:ETag, Location, Cache-Control |
| 400 | invalid_request,会指出无效的字段。 | 问题 (application/problem+json) |
| 409 | connection_app_not_configured(此服务器没有该提供商的 screenRIG 应用)、connection_limit_reached 或 idempotency_mismatch。 | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
获取连接
一个连接,附带其状态、最后一次错误和最后一次测试。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| ScreenRig-Project | header | 可选 | 已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。 |
| id | 路径 | 必填 |
请求模板和响应
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 一个连接。 | Connection(application/json);头信息:ETag, Cache-Control |
| 404 | not_found. | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
更新连接
更改连接的名称,在 own_app 模式下还可更改其凭据:config.tenant_id 和 config.client_id(Microsoft)或 secret(发送的密钥会替换已封存的密钥;省略则保留原密钥)。screenrig_app 模式的连接只能重命名:要更改授权的人,请重新连接它(POST /api/connections/{id}/connect)。
更改凭据会使连接回到 ready,清除 last_error 和 last_test,并作废为旧凭据签发的所有令牌。追加 connection.updated。If-Match 保护修订版本。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| ScreenRig-Project | header | 可选 | 已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。 |
| id | 路径 | 必填 | |
| If-Match | header | 可选 | 可选正资源修订。省略则写入当前资源;提供的过期修订为 revision_conflict。 |
| Idempotency-Key | header | 可选 | 省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。 |
请求主体字段
| 字段 | 描述 |
|---|---|
| 名称(可选,字符串) | minLength:1 maxLength:80 |
| config(可选,ConnectionConfigWrite) | Microsoft,own_app 模式:两个成员都要提供。Google 连接和 screenrig_app 模式不接受。 |
| secret(可选,字符串) | 替换已存储的密钥或密钥文件;省略则保留已存储的。仅限 own_app 模式。minLength: 1 maxLength: 16384 |
请求模板和响应
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt --header 'Content-Type: application/json' --data '@request.json' 'https://screenrig.ai/api/connections/RESOURCE_ID'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 更新后的连接。 | Connection(application/json);头信息:ETag, Cache-Control |
| 400 | invalid_request,会指出无效的字段;config 和 secret 不适用于 screenrig_app 模式的连接。 | 问题 (application/problem+json) |
| 404 | not_found. | 问题 (application/problem+json) |
| 412 | revision_conflict。 | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
删除连接
删除没有任何内容通过它读取的连接。只要有数据源、Power BI 连接或媒体同步账号还在使用它,响应就是指明它们的 resource_conflict(used_by 列出它们的类型和 ID)。
删除并不会终止服务商那一侧:Microsoft 365 租户会一直保留 screenRIG 的应用,直到其管理员将其移除;Google 账号会一直保留其授权,直到其持有者撤销。追加 connection.deleted。If-Match 保护修订版本。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| ScreenRig-Project | header | 可选 | 已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。 |
| id | 路径 | 必填 | |
| If-Match | header | 可选 | 可选正资源修订。省略则写入当前资源;提供的过期修订为 revision_conflict。 |
| Idempotency-Key | header | 可选 | 省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。 |
请求模板和响应
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 204 | 已删除。 | 无正文 |
| 404 | not_found. | 问题 (application/problem+json) |
| 409 | resource_conflict,仍有内容通过该连接读取。 | 问题 (application/problem+json) |
| 412 | revision_conflict。 | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
测试连接
用该连接登录,并把结果存为 last_test。
对于 Microsoft,检查项是 credentials(Microsoft 为租户签发了应用令牌)和 permissions(应用令牌带有 Calendars.Read、Sites.Selected、Files.Read.All、Sites.Read.All 和 Place.Read.All 中的哪些;一个都没有的应用检查失败,仅有 Sites.Selected 则是警告,因为每个 SharePoint 站点都需要授予)。
对于 Google,检查项是 credentials:Google 接受了服务账号,或授权账号的刷新令牌,响应会指明日历必须对哪个账号可见。被拒绝即检查失败,连接会转为 error 并带有 last_error;成功则回到 ready。
它不判断日历的共享设置、邮箱访问策略或站点授予,这些由数据源或同步在运行时证明。每个组织每分钟最多 30 次。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| ScreenRig-Project | header | 可选 | 已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。 |
| id | 路径 | 必填 | |
| Idempotency-Key | header | 可选 | 省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。 |
请求模板和响应
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID/test'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 检查项。 | ConnectionTest(application/json);头信息:Cache-Control |
| 404 | not_found. | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
建立连接
为 screenrig_app 模式的连接生成新的一次性授权链接(consent_url,有效期至 consent_expires_at),发送给完成授权的人:Microsoft 365 管理员或 Google 账号持有者。它会取代之前的所有链接。
正常工作的连接在新的授权完成之前保持不变,因此这也可用于续期已转为 error 的连接(授权被撤回、访问被撤销),或把它改到另一个租户或账号。该链接是授权的凭据:只发送给那个人。
当那个人完成后,浏览器会回到 GET /oauth/connections/{provider}/callback,并被转到控制台中该连接的页面,该页面读取 status 和 last_error。own_app 模式的连接没有授权步骤(409 resource_conflict);没有该提供商 screenRIG 应用的服务器会返回 409 connection_app_not_configured。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| ScreenRig-Project | header | 可选 | 已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。 |
| id | 路径 | 必填 | |
| Idempotency-Key | header | 可选 | 省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。 |
请求模板和响应
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID/connect'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 200 | 带有新 consent_url 的连接。 | ConnectionConsent(application/json);头信息:ETag, Cache-Control |
| 404 | not_found. | 问题 (application/problem+json) |
| 409 | resource_conflict(连接处于 own_app 模式)或 connection_app_not_configured。 | 问题 (application/problem+json) |
| 默认 | 稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。 | 问题 (application/problem+json) |
完成 Microsoft 连接授权
对于 screenrig_app 模式的连接,Microsoft 在 Microsoft 365 管理员完成管理员同意页面之后(以及随后的登录步骤之后再次)把其浏览器送到的地址。
它不携带任何凭据:查询中已签名的 state 是唯一的依据,在读取它所指向的任何内容之前先验证,并且只在它是该连接待处理的授权时才被采信。
第一次返回指明了一个租户,但该租户尚未经过身份验证:响应是重定向到该租户的登录,其代码用应用的密钥和只有本服务器能推导出的 PKCE 验证码来兑换;连接记录的是 ID 令牌所携带的租户,且是在客户端凭据令牌证明应用在那里持有其权限之后才记录。
已验证 state 之后的每种结果,都会重定向到控制台中该连接的页面(/dashboard/connections/{id}?consent=connected 或 ?consent=failed),该页面读取 status 和 last_error;错误文本由固定的句子和 Microsoft 自己的错误响应(其 AADSTS 代码)构成,绝不取自回调查询所携带的内容。
未知、已过期、已使用、已被取代或属于已删除连接的 state,会显示一个不指明任何内容的页面。仅在登记回调的 API 主机上响应。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| 状态 | 查询 | 可选 | |
| admin_consent | 查询 | 可选 | |
| tenant | 查询 | 可选 | |
| code | 查询 | 可选 | |
| 错误 | 查询 | 可选 | |
| error_description | 查询 | 可选 |
请求模板和响应
curl --request GET 'https://api.screenrig.ai/oauth/connections/microsoft/callback'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 302 | 到已授权租户的 Microsoft 登录页,或到控制台中该连接的页面。 | 无正文 |
| 200 | 未配置控制台时,显示连接已完成的页面。 | 字符串(text/html) |
| 400 | 说明该链接已被使用或已过期的页面;未配置控制台时,则说明为什么没有连接任何内容的页面。 | 字符串(text/html) |
| 429 | 来自此地址的回调过多。 | 无正文 |
完成 Google 连接授权
对于 screenrig_app 模式的连接,Google 在账号持有者完成授权页面之后把其浏览器送到的地址。
它不携带任何凭据:查询中已签名的 state 是唯一的依据,在读取它所指向的任何内容之前先验证,并且只在它是该连接待处理的授权时才被采信。screenRIG 用应用的密钥和只有本服务器能推导出的 PKCE 验证码兑换代码,要求已授予日历范围(人可以在授权页面取消勾选)以及一个刷新令牌,从 Google 在该调用中返回的 ID 令牌读取授权账号,加密封存刷新令牌,并追加 connection.connected。
已验证 state 之后的每种结果,都会重定向到控制台中该连接的页面(/dashboard/connections/{id}?consent=connected 或 ?consent=failed),该页面读取 status 和 last_error。未知、已过期、已使用、已被取代或属于已删除连接的 state,会显示一个不指明任何内容的页面。
仅在登记回调的 API 主机上响应。
参数
| 名称 | 发送 | 必需? | 描述 |
|---|---|---|---|
| 状态 | 查询 | 可选 | |
| code | 查询 | 可选 | |
| 错误 | 查询 | 可选 |
请求模板和响应
curl --request GET 'https://api.screenrig.ai/oauth/connections/google/callback'响应
| 状态 | 含义 | 正文和头部 |
|---|---|---|
| 302 | 到控制台中该连接的页面。 | 无正文 |
| 200 | 未配置控制台时,显示连接已完成的页面。 | 字符串(text/html) |
| 400 | 说明该链接已被使用或已过期的页面;未配置控制台时,则说明为什么没有连接任何内容的页面。 | 字符串(text/html) |
| 429 | 来自此地址的回调过多。 | 无正文 |