文章由 Markdown 构建。管理接口需要登录、同源请求和 X-CSRF-Token;运行设置使用 base_revision 防止覆盖。
| GET | /api/v1/today | Today; unread preference in biodays_read_v1 cookie |
| GET | /api/v1/stories | List; sorted month, day, year, id |
| GET | /api/v1/stories/random | Random unread story; starts a new round after exhaustion |
| GET | /api/v1/stories/{id} | Full story |
| GET | /api/v1/tags | Tags and counts |
| GET | /api/v1/meta | Dataset coverage and version |
| POST | /api/v1/history | Record story ID in reader cookie; returns 204 |
| GET | /api/v1/feedback/options | Feedback availability, limits and verification settings |
| POST | /api/v1/feedback | Submit feedback; same request_id and normalized content return original receipt; changed content returns 409 |
| POST | /api/v1/feedback/subscriptions/confirm | Consume token from JSON {token}; GET never mutates subscription |
| POST | /api/v1/feedback/subscriptions/unsubscribe | Consume token from JSON {token}; GET never mutates subscription |
| POST | /api/v1/feedback/subscriptions/resend | Resend confirmation with feedback_id and email; enumeration-safe response |
| POST | /api/v1/admin/login | Email/password via {username,password}; returns CSRF token |
| POST | /api/v1/admin/logout | End admin session |
| GET | /api/v1/admin/me | Current admin and CSRF token |
| GET | /api/v1/admin/feedback | Private feedback inbox; kind,status,q,page,page_size |
| GET | /api/v1/admin/feedback/{id} | Private detail including events and sanitized mail tasks |
| PATCH | /api/v1/admin/feedback/{id} | Update status, internal_note, public_reply; requires version and notify_subscriber |
| DELETE | /api/v1/admin/feedback/{id} | Delete feedback; refused while mail is in flight |
| GET | /api/v1/admin/settings | Business settings and read-only environment configuration status; no secrets returned |
| PATCH | /api/v1/admin/settings | Save business settings with base_revision; deployment fields return 422, stale revision returns 409 |
| GET | /api/v1/admin/settings/audit | Settings audit; page,page_size |
| GET | /api/v1/admin/mail/status | Resend availability and queue counts |
| GET | /api/v1/admin/mail/outbox | Sanitized tasks; status,type,page,page_size |
| POST | /api/v1/admin/mail/test | Queue test to configured admin inbox only |
| POST | /api/v1/admin/mail/outbox/{id}/retry | Retry known failures inside 23h; uncertain sends require reconciliation |