API 参考

数据源 API

数据源:让卡片保持最新的地址

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

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

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

数据源:让卡片保持最新的地址

GET/api/source-presets

列出数据源预设

列出数据源预设:json 数据源的现成且经过测试的配置 (docs/sources.md,Presets)。每个预设会说明它填充哪些卡片、需要人填写的字段(含帮助、模式和示例)、所需的密钥及各自的获取方式、刷新频率和卡片保留最后数据的时长,以及它读取谁的数据、遵循哪些条款。

用 POST /api/sources 并提供 preset、settings 和 secrets,即可根据预设创建数据源,并用 POST /api/sources/test 预览。

身份验证
projectBearer
请求主体
无
操作 ID
listSourcePresets
请求模板和响应
shell · 请求模板
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/source-presets'

响应

状态含义正文和头部
200数据源预设,按类别和标题排列。SourcePresetList(application/json);头信息:Cache-Control
默认

稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。

问题 (application/problem+json)
GET/api/source-presets/{name}

获取数据源预设

一个数据源预设,与列表中显示的相同。

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

参数

名称发送必需?描述
name路径必填数据源预设的名称,与 GET /api/source-presets 列出的相同。
请求模板和响应
shell · 请求模板
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/source-presets/NAME'

响应

状态含义正文和头部
200一个数据源预设。SourcePreset(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)
GET/api/sources

列出数据源

按从新到旧的顺序列出项目的数据源,每页最多 200 个。数据源按计划从外部地址让某张卡片的动态属性保持最新 (docs/sources.md)。每个数据源都会显示其状态:上次尝试、上次成功、上次写入的更改、下次运行、失败次数和最近的错误。

密钥绝不会返回;每个密钥都以“已设置”加遮蔽提示的形式显示。把 next_cursor 作为 after 传回即可获取下一页,没有更多时为 null。

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

参数

名称发送必需?描述
after查询可选
请求模板和响应
shell · 请求模板
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/sources'

响应

状态含义正文和头部
200项目的数据源。SourceList(application/json);头信息:Cache-Control
默认

稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。

问题 (application/problem+json)
POST/api/sources

创建数据源

创建一个数据源,从外部地址写入某张卡片的动态属性。kind 选择适配器(ics 读取 iCalendar 或 webcal:// 地址);config 保存该类型的设置,secrets 保存其凭据,凭据会加密存储,只以遮蔽后的提示显示。

或者指定预设 (GET /api/source-presets),并提供它的 settings 和 secrets,以代替 kind 和 config:该数据源是由预设构建配置的 json 数据源,返回时附带其 preset 和 settings,刷新间隔和过期时长默认取预设的值。预设只填充它所列出的卡片 (source_target_unsupported)。

数据源会在几秒内运行,之后每隔 refresh_seconds 运行一次。运行失败绝不会写入:卡片保留最后一份有效文档,数据源的状态会显示错误。一个数据源只填充一张卡片 (source_target_taken),该卡片必须是此类型能够填充的 (source_target_unsupported),一个组织最多有 200 个数据源 (source_limit_reached)。

请先用 POST /api/sources/test 查看该数据源将写入的文档。会追加 source.created。使用相同 Idempotency-Key 的完全相同的重试,在二十四小时内会返回同一响应。

身份验证
projectBearer
请求主体
SourceCreate
操作 ID
createSource

参数

名称发送必需?描述
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。

请求主体字段

字段描述
名称(必填,字符串)minLength:1 maxLength:80
kind(可选,SourceKind)

数据来源。ics 读取 iCalendar 和 webcal:// 地址(其他类型见 /docs/sources)。不可用的类型会在 kind 上返回 invalid_request。允许:“ics”、“sheets”、“csv”、“json”、“microsoft365”、“google_calendar”、“square”、“shopify”、“momentus”、“toast”

target(必填,SourceTarget)
preset(可选,字符串)

用于创建数据源的数据源预设 (GET /api/source-presets),用来代替 kind 和 config:类型就是预设的类型,配置根据 settings 构建。不使用预设时 kind 和 config 必填;使用预设时它们会被拒绝,除非 kind 就是预设自己的类型。pattern: "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"

settings(可选,object)预设各字段的值,按字段名给出(文本、选择项中的一项,或对象列表)。必填字段会按预设强制检查,并给出 settings.channel 这样的字段路径。
config(可选,object)

该类型的设置(/docs/sources)。对 ics:calendars(1 到 60 个,各带一个 key)、days、time_zone、private_title、include、exclude。include 和 exclude(各 1 到 20 个关键词,每个 1 到 100 个字符,与事件标题匹配)也是 microsoft365、google_calendar 和 momentus 的设置。

对 csv 和 json:url、method(GET 或 POST)、body 或 graphql、headers、auth(none、bearer、header、basic、oauth2、token_request)、time_zone、pagination,对 json 还有 format(auto、json、csv、xml)。

secrets(可选,object)

按名称存放的凭据,加密封存。对 ics:calendar_url.<key>,即日历的地址(webcal://、https:// 或 http://),每个日历一个。对 csv 和 json:token、password、client_secret、header.<Name>(请求头)和 query.<name>(查询参数),以及 token_request 请求体以 {{secrets.<name>}} 读取的密钥。

对于预设:其 secrets 列表给出的名称。

refresh_seconds(可选,integer)两次同步之间的秒数;省略或低于下限时采用该类型的默认值和下限(ics:300,至少 60;momentus:60,至少 30)。最小值:30 最大值:86400
stale_after_seconds(可选,SourceStaleAfter)

数据源无法刷新时,卡片保留其最后一次正常数据的时长,单位为秒。

数据源写入的文档会在最后一次成功刷新后经过这段时间过期:若持续失败,文档会在所有屏幕(包括离线屏幕)上变空,可见性取决于数据的页面会切换到其后的页面;没有失败的数据源会在刷新时顺延截止时间。

至少为 refresh_seconds 的两倍。null 会保留最后一次正常的数据,直到数据源再次刷新(除 momentus 外所有类型的默认值;momentus 在创建时省略该成员则为 1800)。失败的数据源超过该时长后即为已过期(status.stale),并追加 source.stale。

启用(可选,布尔值)默认:true
请求模板和响应
shell · 请求模板
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/sources'

响应

状态含义正文和头部
201已创建。Source(application/json);头信息:Location, ETag, Cache-Control
400带字段错误的 invalid_request(config.calendars[0].key、secrets.calendar_url.lobby,预设为 settings.channel),或在缺少该类型或预设所需密钥时返回 source_secret_required。问题 (application/problem+json)
402

feature_not_in_plan — Square、Shopify、Microsoft 365 或 Google Workspace 会议室数据源需要已连接数据源(Plus),Momentus 数据源需要 Momentus 数据源功能(Enterprise);该问题指明功能和 required_plan。按地址添加的日历、Google Sheets、CSV 和 JSON 数据源每个计划都包含。

问题 (application/problem+json)
409source_target_taken(该卡片已有数据源,source_id 指出它)、source_limit_reached 或 idempotency_mismatch。问题 (application/problem+json)
422source_target_unsupported;supported_cards 列出该类型可以填充的卡片类型。问题 (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/sources/test

测试数据源

预览数据源,不保存也不写入任何内容:获取地址,按目标卡片的需要转换响应,并用卡片校验文档,然后返回文档、卡片是否接受它(valid;若不接受,validation_error 会指出路径)以及本次运行的警告和计数。

传入 source_id 可用其余成员作为覆盖值来测试已保存的数据源(settings 会覆盖由预设创建的数据源自己的 settings);否则必须提供 target,以及 kind 和 config,或者 preset、settings 和 secrets。已保存数据源保留的密钥按存储值使用,除非覆盖值改变了它指向的位置(source_secret_required)。

获取或整形失败会返回 source_test_failed,并附带固定的 source_error。每个组织每分钟最多 30 次预览。

身份验证
projectBearer
请求主体
SourceTestRequest
操作 ID
testSource

请求主体字段

字段描述
source_id(可选,string)要测试的已保存数据源;其他成员会覆盖它。
kind(可选,SourceKind)

数据来源。ics 读取 iCalendar 和 webcal:// 地址(其他类型见 /docs/sources)。不可用的类型会在 kind 上返回 invalid_request。允许:“ics”、“sheets”、“csv”、“json”、“microsoft365”、“google_calendar”、“square”、“shopify”、“momentus”、“toast”

target(可选,SourceTarget)
config(可选,object)
preset(可选,字符串)用于测试尚未保存的数据源的数据源预设;它的 settings 和 secrets 会代替 kind 和 config。pattern: "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
settings(可选,object)预设的设置;与 source_id 一起使用时,会覆盖已保存数据源的设置。
secrets(可选,object)
请求模板和响应
shell · 请求模板
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/sources/test'

响应

状态含义正文和头部
200预览结果。SourceTestResult(application/json);头信息:Cache-Control
400invalid_request 或 source_secret_required。问题 (application/problem+json)
402

feature_not_in_plan — Square、Shopify、Microsoft 365 或 Google Workspace 会议室数据源需要已连接数据源(Plus),Momentus 数据源需要 Momentus 数据源功能(Enterprise);该问题指明功能和 required_plan。按地址添加的日历、Google Sheets、CSV 和 JSON 数据源每个计划都包含。

问题 (application/problem+json)
404未找到 source_id 所指的已保存数据源。问题 (application/problem+json)
422source_test_failed(source_error 包含 code、message 和 upstream_status)或 source_target_unsupported。问题 (application/problem+json)
429

稳定的 rate_limited 问题。仅在权威 Retry-After 间隔后重试。固定窗口拒绝还包括适用的 RateLimit-Policy 和 RateLimit 成员;并发和字节预算拒绝省略这些可选披露。

问题 (application/problem+json);头部:Retry-After,RateLimit-Policy,RateLimit
默认

稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。

问题 (application/problem+json)
GET/api/sources/{source_id}

获取数据源

一个数据源及其状态。ETag 即修订版,用于下次更改时的 If-Match。

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

参数

名称发送必需?描述
source_id路径必填项目某个数据源的 id。
请求模板和响应
shell · 请求模板
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/sources/SOURCE_ID'

响应

状态含义正文和头部
200一个数据源。Source(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/sources/{source_id}

更新数据源

更改数据源。config 会替换整个配置;secrets 会合并(字符串用于设置或替换,null 用于删除)。

由预设创建的数据源接受 settings 而不是 config:指定的每个设置会替换其值,null 会移除可选设置,其余保持不变,并且配置会根据预设重新构建(对这样的数据源提供 config 会在 config 上返回 invalid_request,对其他数据源提供 settings 会在 settings 上返回 invalid_request)。它的密钥按预设所规定的名称命名。

未发送的密钥保留原值,除非此次更改使数据源指向了其已存储作用域之外的位置(secrets.<name> 处的 source_secret_required:请重新输入)。

更改目标、config、密钥、refresh_seconds 或 enabled 会重置失败次数,并在几秒内运行数据源;重命名则不会。enabled 设为 false 会停止计划,卡片保留最后一份文档。If-Match 用于保护修订版。会追加 source.updated。

身份验证
projectBearer
请求主体
SourceUpdate
操作 ID
updateSource

参数

名称发送必需?描述
source_id路径必填项目某个数据源的 id。
If-Matchheader可选可选正资源修订。省略则写入当前资源;提供的过期修订为 revision_conflict。
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。

请求主体字段

字段描述
名称(可选,字符串)minLength:1 maxLength:80
target(可选,SourceTarget)
config(可选,object)替换整个配置。由预设创建的数据源改为接受 settings。
settings(可选,object)对于由预设创建的数据源:合并到其 settings 中(值会替换原值,null 会移除可选设置),并且配置会重新构建。
secrets(可选,object)合并到已存储的密钥中:字符串用于设置或替换,null 用于删除。由预设创建的数据源按预设的命名来命名它们。
refresh_seconds(可选,integer)最小值:30 最大值:86400
stale_after_seconds(可选,SourceStaleAfter)

数据源无法刷新时,卡片保留其最后一次正常数据的时长,单位为秒。

数据源写入的文档会在最后一次成功刷新后经过这段时间过期:若持续失败,文档会在所有屏幕(包括离线屏幕)上变空,可见性取决于数据的页面会切换到其后的页面;没有失败的数据源会在刷新时顺延截止时间。

至少为 refresh_seconds 的两倍。null 会保留最后一次正常的数据,直到数据源再次刷新(除 momentus 外所有类型的默认值;momentus 在创建时省略该成员则为 1800)。失败的数据源超过该时长后即为已过期(status.stale),并追加 source.stale。

启用(可选,布尔值)
请求模板和响应
shell · 请求模板
curl --request PATCH --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --header 'Content-Type: application/json' --data '@request.json' 'https://api.screenrig.ai/api/sources/SOURCE_ID'

响应

状态含义正文和头部
200更改后的数据源。Source(application/json);头信息:ETag, Cache-Control
400invalid_request 或 source_secret_required。问题 (application/problem+json)
402

feature_not_in_plan — Square、Shopify、Microsoft 365 或 Google Workspace 会议室数据源需要已连接数据源(Plus),Momentus 数据源需要 Momentus 数据源功能(Enterprise);该问题指明功能和 required_plan。按地址添加的日历、Google Sheets、CSV 和 JSON 数据源每个计划都包含。

仅替换密钥的更改(单独提交或与 enabled false 一同提交)始终允许,因此令牌已过期的数据源仍保持最新。

问题 (application/problem+json)
404not_found.问题 (application/problem+json)
409source_target_taken 或 idempotency_mismatch。问题 (application/problem+json)
412revision_conflict。问题 (application/problem+json)
422source_target_unsupported.问题 (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/sources/{source_id}

删除数据源

删除数据源。卡片保留该数据源写入的最后一份文档。If-Match 用于保护修订版。会追加 source.deleted。

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

参数

名称发送必需?描述
source_id路径必填项目某个数据源的 id。
If-Matchheader可选可选正资源修订。省略则写入当前资源;提供的过期修订为 revision_conflict。
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。
请求模板和响应
shell · 请求模板
curl --request DELETE --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/sources/SOURCE_ID'

响应

状态含义正文和头部
204已删除。无正文
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)
GET/api/sources/{source_id}/rooms

获取数据源的房间

读取预订系统房间的数据源(类型 momentus)的房间映射:它提供但没有任何屏幕显示的房间(summary.unmapped_rooms),以及读取房间或区域文档却没有指向其中之一的值的屏幕(状态为 missing 或 unknown 的屏幕;当值是写法不同的房间时会给出建议)。

房间取自数据源最后一次成功刷新,不会获取任何内容。没有房间的类型返回 source_has_no_rooms。

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

参数

名称发送必需?描述
source_id路径必填项目某个数据源的 id。
请求模板和响应
shell · 请求模板
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/sources/SOURCE_ID/rooms'

响应

状态含义正文和头部
200房间映射报告。SourceRooms(application/json);头信息:Cache-Control
404not_found.问题 (application/problem+json)
409source_has_no_rooms.问题 (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/sources/{source_id}/refresh

立即同步数据源

立即在线同步数据源(最长 60 秒),并返回其新状态。同步失败时会返回 200,其中 status.state 为 error 并附带错误;它绝不会写入。刷新会让数据源从头开始:失败次数清零,并完整读取地址。当计划的同步正在占用该数据源时返回 source_busy (Retry-After)。

每个数据源每分钟最多同步 6 次。

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

参数

名称发送必需?描述
source_id路径必填项目某个数据源的 id。
Idempotency-Keyheader可选省略以进行新操作。提供并重用密钥以去重重试;CLI 自动管理密钥。
请求模板和响应
shell · 请求模板
curl --request POST --header 'Authorization: Bearer [SCREENRIG_TOKEN]' 'https://api.screenrig.ai/api/sources/SOURCE_ID/refresh'

响应

状态含义正文和头部
200同步后的数据源。Source(application/json);头信息:ETag, Cache-Control
404not_found.问题 (application/problem+json)
409source_busy.Problem(application/problem+json);头信息:Retry-After
429

稳定的 rate_limited 问题。仅在权威 Retry-After 间隔后重试。固定窗口拒绝还包括适用的 RateLimit-Policy 和 RateLimit 成员;并发和字节预算拒绝省略这些可选披露。

问题 (application/problem+json);头部:Retry-After,RateLimit-Policy,RateLimit
默认

稳定的 RFC 9457 问题响应。421 server_draining 携带 1 秒的 Retry-After,500 not_ready 或 dependency_unavailable 携带 5 秒,500 manifest_degraded 携带 60 秒,除非处理程序设置了更具体的值。

问题 (application/problem+json)