开发者
把一本书标记为读过, 就是一次 API 操作。
用户在
写入
逐行看一个写入请求
PUT /v1/works/{id}/reader-status
Authorization: Bearer …
Idempotency-Key: 7f3c2a9e-read
Content-Type: application/json
{
"actingSubject":
"https://rezics.com/id/…",
"expectedVersion": 3,
"status": "read",
"finishedOn": "2026-10-19"
}路径
指向 一部 作品 {id}REZICS 中的每个实体都有一个以 https://rezics.com/id/ 开头的固定标识符,切换语言或站点后仍然相同。
注明
身份 actingSubject一个账户可以代表自己,也可以代表组织。每次写入都要注明以哪个身份操作,服务器会在执行前检查该身份的权限。
安全
重试 Idempotency-Key每次写入都带有幂等键。超时或断线后,用同一个键重试,不会重复写入。
避免
覆盖 expectedVersion你读取的是第 3 版,写入时就注明第 3 版。如果期间有人先做了修改,本次写入不会覆盖对方的内容。
错误会
返回 问题 详情 application/problem+json失败时,code 是固定代码,程序按它分支处理,无需比对消息文本。
重试
重试同一个请求, 得到同一个结果。
使用
首次请求
200 { "status": "read", "version": 4, "replayed": false }重试
200 { "status": "read", "version": 4, "replayed": true }版本过期
409 { "status": 409, "code": "stale_reader_status" }
类型
API 和类型来自同一份定义
REZICS
OpenAPI 3.1 文档
main().v1
.works({ id: uuid(work) })
['reader-status'].put({
actingSubject,
expectedVersion,
status: 'read',
...dates,
}, headers())generated/openapi/main/public.json
读取
读取也有规则
nextCursor · snapshot长列表会附上下一页游标,方便逐页读到底。导出的书架数据还会附带快照;如果数据在中途发生变化,会明确说明,不会让你拼凑文件。
count.precision搜索结果总数会注明是精确值,还是“至少这么多”。
title.language · basis标题附有语言标签和书写方向,并说明这是你指定的语言、同一种文字的语言、其他文字的语言,还是备用语言。
404 resource_unavailable你无权查看的资源会像不存在的资源一样响应,不会泄露它的存在。