같은 출처의 API를 사용합니다. D1 기본 저장소의 최신 전체 스냅샷을 읽으며 서버에서 수익률을 재계산하거나 실험을 재정렬하지 않습니다.
| 메서드 | 경로 | 동작 |
|---|---|---|
| GET | /api/snapshot | 전체 JSON, ETag 조건부 요청은 304입니다. |
| GET | /api/experiments/:id | 정수 ID의 실험 객체입니다. |
| GET | /api/health | D1 상태, 스냅샷 존재 여부, revision, 갱신 시각입니다. |
| PUT | /api/snapshot | Authorization: Bearer UPDATE_TOKEN 및 application/json이 필요합니다. 전체 스냅샷을 원자적으로 교체합니다. |
{
"schema_version": "cashy-research-dashboard-v1",
"revision": "고유한 게시 식별자",
"updated_at_kst": "2026-10-05T15:00:00+09:00",
"research": {"title": "연구", "objective": "목표", "ongoing": true, "constraints": []},
"experiments": []
}
실험은 id, parent, title, strategy, status, decision, role, cohort, period_steps, period_label, started_at_kst, updated_at_kst, progress, validation, final, evidence, notes, configuration을 포함합니다. 과거의 선택형 정보는 null을 허용합니다. 보고서 객체의 기간 필드는 원문 그대로 보존합니다.
API 응답은 모두 Cache-Control: no-store입니다. 5초마다 조회하시고 이전 ETag를 If-None-Match로 전달하십시오. 304이면 기존 데이터를 유지하십시오. 게시자 전송이 중단되면 updated_at_kst가 오래된 상태로 남으므로 이를 최신 실험 완료로 해석하지 마십시오.
{"error":{"code":"snapshot_not_found","message":"..."}}
주요 상태: 400 잘못된 JSON 또는 ID, 401 인증 실패, 404 스냅샷·실험·경로 없음, 405 메서드 오류, 415 콘텐츠 형식 오류, 422 스키마 오류, 503 저장소 또는 게시 토큰 설정 오류입니다. 자세한 스키마와 실행 절차는 저장소의 API.md를 참조하십시오.