Foreshock
EN 订阅
文档

API

翻页

一条变更流上的不透明游标。上限是刻意的,而游标为 null 意味着追平,不意味着安全。

更新于
2026-08-24

GET /v1/exposure 是唯一需要翻页的接口。

三个部件

部件位置说明
sincequery 参数上一个响应给的不透明游标。省略则从当前保留窗口的起点开始。最长 512 字符。
limitquery 参数每页条数。最小 1,最大 200,默认 100。
next_cursor响应体下一次调用作为 since 传回。追平时为 null。

循环

cursor := load_persisted_cursor()          # 首次运行为 null
loop:
    response := GET /v1/exposure?since=cursor&limit=100
    if response.status != 200:
        alert(); back off; retry           # 不要推进游标
    process(response.matches)
    inspect(response.coverage_health)
    if response.next_cursor == null:
        persist(cursor); sleep; continue
    cursor := response.next_cursor
    persist(cursor)

只在这一页被持久地处理完之后才持久化游标。先存游标再崩溃,你就跳过了一页,而且没有任何东西会告诉你。

游标是不透明的

游标内容没有结构。不要解析、不要构造、不要按它排序。它不是时间戳,不是偏移量,它的格式不属于契约的一部分。

上限是刻意的

limit 上限为 200,因为这个接口是你自有地址簿的变更流,不是导出口。没有哪个页大小能把它变成导出口,也不存在别的接口、参数或格式能倾倒非终态的执法数据。

如果你发现自己想要一次全量,你真正想要的多半是持续运行的游标循环,再加上 GET /v1/coverage 来判断这份安静是不是真的。

next_cursor: null 不等于全清

它意味着你已经消费完当前可得的全部内容。它对「我们现在看不看得见」一字未提。在断定没事之前,先读同一个响应里的 coverage_health。