開発者
本を「読了」にする操作も、API で。
ライブラリで
書き込み
書き込みリクエストを1行ずつ見る
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書き込みごとに冪等性キーを付けます。タイムアウトや切断の後に同じキーで再送しても、処理は重複しません。
上書きを
防止 expectedVersion3番目のバージョンを読み込んだら、その番号を指定します。その間に他の人が変更していた場合、今回の書き込みは上書きしません。
エラーの
詳細を 返す 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閲覧権限のないリソースには、存在しない場合と同じレスポンスを返し、存在を明かしません。