API 参考

项目事件 API

持久项目事件

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

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

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

持久项目事件

GET/api/events

列出事件

按序列升序列出持久项目事件。

分页是连续的:将返回的 next_cursor 作为 after 传递,精确续接页面停止处。next_cursor 是最后返回事件的游标,当有更新事件存在时,历史末尾为 null。limit 默认为 50,接受 1-200;超出范围的值返回 invalid_request 和包含 limit 的 errors[]。

不支持偏移分页。source=log 列出播放器日志:按接收时间升序报告播放器发送的条件(runtime.reported),通过 screen_id 和严重级别过滤,时间窗口从至(默认最近 24 小时,最多 31 天)。

其游标不透明:lg1_ 或 ev1_,取决于服务器存储播放器日志的位置,故返回页面的游标应传回;其他类型游标拒绝,返回 invalid_request 并指明字段。播放器日志记录无序列,不在 GET /stream/project 上,也不传递给 webhook。

当播放器日志队列接受记录时,该记录被确认,并保留用于项目的事件保留。使用最后的游标和默认窗口进行轮询,跟踪日志。播放器日志记录不在默认(source=project)列表中。除非 source 是 log,否则 from 和 to 会被拒绝并返回 invalid_request。

项目列表使用 screen_id、playlist_id 和 application_id 读取一个屏幕、播放列表或应用程序的事件,所有事件均限定为凭证的项目(一个 ID 指定读取哪些事件,永不指定谁的):screen_id 保留资源为该屏幕的事件;playlist_id 保留资源为该播放列表的事件加上将其命名为 details.playlist_id(使用该播放列表的屏幕)的事件;application_id 保留资源为该应用程序的事件加上资源带有其为 application_id(其发布和键值条目)的事件。

非其类型 ID 的值被拒绝,返回 invalid_request 并指明字段;playlist_id 和 application_id 在 source=log 时被拒绝,日志记录仅属于屏幕。

两个来源都接受resource_id、类型和严重性(至少),彼此组合,并与 id 筛选和分页结合;播放器日志记录是runtime.reported记录,其资源为其屏幕,因此resource_id不是该屏幕或类型排除runtime.reported时,返回空页面。before(或 order=desc)分页为最新优先:next_cursor为返回结果中最旧项的游标,作为 before 继续查找更早的项。

无起始时间时,最新优先的 source=log 页面会超出默认的 24 小时,直到项目事件保留的最旧记录,每次请求最多 31 天。最新优先的 source=log 页面可能包含少于限制数的记录,甚至无记录,但带有 next_cursor;null 表示结束,位于保留日志末尾。

限定屏幕范围的调用方(docs/screen-scope.md)读取经过筛选的事件流:范围内屏幕的事件,其可见屏幕文件夹(自己的文件夹,以及上级和内部的文件夹;screen.moved 仅在目的地位于其范围内时)的事件,活动、播放列表、媒体、应用和卡片的事件,以及 playlist_change 审核。

其他所有事件都会被省略,因此一页可能少于 limit 个事件,甚至为空,但仍带有 next_cursor;请继续用它翻页。source=log 需要其范围内的 screen_id。不发送关于项目本身的事件。

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

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
after查询可选

先前响应的游标:ev1_ 用于项目事件(及事件流)。播放器日志(source=log)使用 lg1_ 或 ev1_ 游标分页,依据服务器存储位置;视为不透明并传回页面返回的游标。其他类型游标返回 invalid_request。

before查询可选

页面最新优先,严格早于此游标:最新优先页面的 next_cursor,或任何项目游标(ev1_ 用于项目事件;source=log 时为其项目携带的不透明游标)。order=desc 时为空或缺失,从最新项目开始。

顺序查询可选升序分页,使用 after;降序分页,使用 before。before 表示降序;order=asc 与 before 一起使用将被拒绝。
限制查询可选页面大小。超出 1-200 范围的值将被拒绝,返回 invalid_request 和包含字段 limit 的 errors[]。
来源查询可选项目列出有序的项目事件。日志列出播放器日志:播放器状态报告(runtime.reported),按接收时间升序。
resource_id查询可选仅限 resource.id 为此 ID(屏幕、播放列表、媒体、webhook、代理或应用 ID)的项目。source=log 时为记录的屏幕。
类型查询可选精确事件类型,如 playlist.updated,或以点结尾的系列前缀,如 playlist.,适用于所有 playlist.* 类型。
screen_id查询可选仅此屏幕的事件:source=project 时资源为屏幕,source=log 时为播放器日志记录。其他 ID 类型拒绝,返回 invalid_request。
playlist_id查询可选使用 source=project 时,仅返回此播放列表的事件:资源为该播放列表的事件及以 details.playlist_id 命名的事件。使用 source=log 时拒绝。
application_id查询可选

使用 source=project 时,仅返回此应用的事件:资源为该应用的事件及资源带有 application_id(其发布和键值条目)的事件。使用 source=log 时拒绝。

严重性查询可选最低严重级别:info 包含所有项,warning 保留警告和错误,error 仅保留错误。两个来源均适用。
起始查询可选使用 source=log 时,窗口开始时间(含)。默认为结束时间前 24 小时;无起始时间的最新优先页面会回溯到项目的事件保留期。
至查询可选使用 source=log 时,窗口结束时间(不含)。默认为当前时间。窗口最长为 31 天。
请求模板和响应
shell · 请求模板
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/api/events'

响应

状态含义正文和头部
200持久事件(source=project)或播放器日志记录(source=log)EventList (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)
GET/stream/project

流事件

可重放的项目监听流。播放器日志记录(runtime.reported)通过 GET /api/events?source=log 读取,不在此流上。打开此请求会作为监听订阅消耗 1 个额度。额度响应头已省略。之后计费的事件每个消耗 1 个额度;screen.*、runtime.*、alert_mute.* 和 application.event 不计费。

心跳和重试前言不计费。stream.cursor 和 stream.resync_required 计费。借记幂等性为 sse-event:<project_id>:<sequence>,因此重新连接重放免费。未支付的计费事件不会写入,且流关闭。

用控制台会话打开的流不计费(打开及其事件都不计),与控制台的 API 请求一样;它仍占用项目的一个流名额。限定屏幕范围的调用方(docs/screen-scope.md)会收到与 GET /api/events 相同的筛选事件流:被丢弃的事件不发送帧,stream.cursor 继续推进位置。

范围在流打开时读取,文件夹树在移动或文件夹事件时再次读取;收窄的范围在已打开的流重新连接时生效。

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

参数

名称发送必需?描述
ScreenRig-Projectheader可选已弃用一个版本。必须与 JWT 项目授权保持一致;添加弃用和警告头。无令牌交换。
after查询可选

先前响应的游标:ev1_ 用于项目事件(及事件流)。播放器日志(source=log)使用 lg1_ 或 ev1_ 游标分页,依据服务器存储位置;视为不透明并传回页面返回的游标。其他类型游标返回 invalid_request。

Last-Event-IDheader可选在 after 缺失时使用持久游标。
请求模板和响应
shell · 请求模板
curl --request GET --header 'Authorization: Bearer [SCREENRIG_TOKEN]' --cookie cookies.txt --cookie-jar cookies.txt 'https://screenrig.ai/stream/project'

响应

状态含义正文和头部
200

可重放的SSE流。查询游标优先于Last-Event-ID。无效、未来或保留期前的游标会收到stream.resync_required并关闭。无ScreenRig-Credits-*头。

字符串(text/event-stream)
402

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

问题 (application/problem+json)
默认

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

问题 (application/problem+json)