API 参考

连接 API

连接:项目可重复使用的 Microsoft 和 Google 访问权限

HTTP 参考。 由后端契约生成。浏览以下端点或下载 OpenAPI。

此分组有 9 个操作,由 api/openapi.yaml 生成。可按路径、操作或认证筛选。每个端点都会列出其输入;展开后可查看请求模板和响应代码。模板需要您自己的值和符合架构的请求体。

用你的值替换大写占位符。对于JSON请求,请保存符合request.json模式的请求体。Cookie示例使用经过身份验证会话的本地Cookie存储。

连接:项目可重复使用的 Microsoft 和 Google 访问权限

GET/api/connections

列出连接

按最新优先列出项目的连接,每页最多 200 个;把 next_cursor 作为 after 传回即可获取下一页。

连接是项目可重复使用的 Microsoft 或 Google 访问权限,供无人值守运行的数据源使用:microsoft365 或 google_calendar 数据源、Power BI 连接和 SharePoint 媒体同步账号,在 config.connection_id 中指明一个连接,而不是自带凭据(docs/connections.md)。

密钥、密钥文件或刷新令牌绝不会返回:secret 显示是否已保存,以及一条不属于机密的提示。读取绝不会带有授权链接。

身份验证
projectBearer 或 dashboardSession
请求主体
无
操作 ID
listConnections

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
after查询可选同一列表上一页的 next_cursor,使用相同过滤条件。省略时从最新行开始。非此类游标值为 invalid_request。
请求模板和响应
shell · 请求模板
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
400invalid_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)
POST/api/connections

创建连接

创建到 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 的重试会得到新的授权链接,它会取代第一个)。

身份验证
projectBearer 或 dashboardSession
请求主体
ConnectionWrite
操作 ID
createConnection

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;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

请求模板和响应
shell · 请求模板
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
400invalid_request,会指出无效的字段。问题 (application/problem+json)
409connection_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)
GET/api/connections/{id}

获取连接

一个连接,附带其状态、最后一次错误和最后一次测试。

身份验证
projectBearer 或 dashboardSession
请求主体
无
操作 ID
getConnection

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
id路径必填
请求模板和响应
shell · 请求模板
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
404not_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)
PATCH/api/connections/{id}

更新连接

更改连接的名称,在 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 保护修订版本。

身份验证
projectBearer 或 dashboardSession
请求主体
ConnectionPatch
操作 ID
updateConnection

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
id路径必填
If-Matchheader可选可选正资源修订。省略则写入当前资源;提供的过期修订为 revision_conflict。
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。

请求主体字段

字段描述
名称(可选,字符串)minLength:1 maxLength:80
config(可选,ConnectionConfigWrite)Microsoft,own_app 模式:两个成员都要提供。Google 连接和 screenrig_app 模式不接受。
secret(可选,字符串)替换已存储的密钥或密钥文件;省略则保留已存储的。仅限 own_app 模式。minLength: 1 maxLength: 16384
请求模板和响应
shell · 请求模板
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
400invalid_request,会指出无效的字段;config 和 secret 不适用于 screenrig_app 模式的连接。问题 (application/problem+json)
404not_found.问题 (application/problem+json)
412revision_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)
删除/api/connections/{id}

删除连接

删除没有任何内容通过它读取的连接。只要有数据源、Power BI 连接或媒体同步账号还在使用它,响应就是指明它们的 resource_conflict(used_by 列出它们的类型和 ID)。

删除并不会终止服务商那一侧:Microsoft 365 租户会一直保留 screenRIG 的应用,直到其管理员将其移除;Google 账号会一直保留其授权,直到其持有者撤销。追加 connection.deleted。If-Match 保护修订版本。

身份验证
projectBearer 或 dashboardSession
请求主体
无
操作 ID
deleteConnection

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
id路径必填
If-Matchheader可选可选正资源修订。省略则写入当前资源;提供的过期修订为 revision_conflict。
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。
请求模板和响应
shell · 请求模板
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/connections/RESOURCE_ID'

响应

状态含义正文和头部
204已删除。无正文
404not_found.问题 (application/problem+json)
409resource_conflict,仍有内容通过该连接读取。问题 (application/problem+json)
412revision_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)
POST/api/connections/{id}/test

测试连接

用该连接登录,并把结果存为 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 次。

身份验证
projectBearer 或 dashboardSession
请求主体
无
操作 ID
testConnection

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
id路径必填
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。
请求模板和响应
shell · 请求模板
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
404not_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)
POST/api/connections/{id}/connect

建立连接

为 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。

身份验证
projectBearer 或 dashboardSession
请求主体
无
操作 ID
connectConnection

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
id路径必填
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。
请求模板和响应
shell · 请求模板
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
404not_found.问题 (application/problem+json)
409resource_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)
GET/oauth/connections/microsoft/callback

完成 Microsoft 连接授权

对于 screenrig_app 模式的连接,Microsoft 在 Microsoft 365 管理员完成管理员同意页面之后(以及随后的登录步骤之后再次)把其浏览器送到的地址。

它不携带任何凭据:查询中已签名的 state 是唯一的依据,在读取它所指向的任何内容之前先验证,并且只在它是该连接待处理的授权时才被采信。

第一次返回指明了一个租户,但该租户尚未经过身份验证:响应是重定向到该租户的登录,其代码用应用的密钥和只有本服务器能推导出的 PKCE 验证码来兑换;连接记录的是 ID 令牌所携带的租户,且是在客户端凭据令牌证明应用在那里持有其权限之后才记录。

已验证 state 之后的每种结果,都会重定向到控制台中该连接的页面(/dashboard/connections/{id}?consent=connected 或 ?consent=failed),该页面读取 status 和 last_error;错误文本由固定的句子和 Microsoft 自己的错误响应(其 AADSTS 代码)构成,绝不取自回调查询所携带的内容。

未知、已过期、已使用、已被取代或属于已删除连接的 state,会显示一个不指明任何内容的页面。仅在登记回调的 API 主机上响应。

身份验证
无
请求主体
无
操作 ID
completeMicrosoftConnectionConsent

参数

名称发送必需?描述
状态查询可选
admin_consent查询可选
tenant查询可选
code查询可选
错误查询可选
error_description查询可选
请求模板和响应
shell · 请求模板
curl --request GET 'https://api.screenrig.ai/oauth/connections/microsoft/callback'

响应

状态含义正文和头部
302到已授权租户的 Microsoft 登录页,或到控制台中该连接的页面。无正文
200未配置控制台时,显示连接已完成的页面。字符串(text/html)
400说明该链接已被使用或已过期的页面;未配置控制台时,则说明为什么没有连接任何内容的页面。字符串(text/html)
429来自此地址的回调过多。无正文
GET/oauth/connections/google/callback

完成 Google 连接授权

对于 screenrig_app 模式的连接,Google 在账号持有者完成授权页面之后把其浏览器送到的地址。

它不携带任何凭据:查询中已签名的 state 是唯一的依据,在读取它所指向的任何内容之前先验证,并且只在它是该连接待处理的授权时才被采信。screenRIG 用应用的密钥和只有本服务器能推导出的 PKCE 验证码兑换代码,要求已授予日历范围(人可以在授权页面取消勾选)以及一个刷新令牌,从 Google 在该调用中返回的 ID 令牌读取授权账号,加密封存刷新令牌,并追加 connection.connected。

已验证 state 之后的每种结果,都会重定向到控制台中该连接的页面(/dashboard/connections/{id}?consent=connected 或 ?consent=failed),该页面读取 status 和 last_error。未知、已过期、已使用、已被取代或属于已删除连接的 state,会显示一个不指明任何内容的页面。

仅在登记回调的 API 主机上响应。

身份验证
无
请求主体
无
操作 ID
completeGoogleConnectionConsent

参数

名称发送必需?描述
状态查询可选
code查询可选
错误查询可选
请求模板和响应
shell · 请求模板
curl --request GET 'https://api.screenrig.ai/oauth/connections/google/callback'

响应

状态含义正文和头部
302到控制台中该连接的页面。无正文
200未配置控制台时,显示连接已完成的页面。字符串(text/html)
400说明该链接已被使用或已过期的页面;未配置控制台时,则说明为什么没有连接任何内容的页面。字符串(text/html)
429来自此地址的回调过多。无正文