Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

API リファレンス

この章では、公開ドキュメントとして扱うべき API(ブラウザクライアントと第三者検証で利用するエンドポイント)を、現行実装ベースで説明します。

この章の対象範囲

対象:

  • 投票・集計フロー(/api/session, /api/vote, /api/progress, /api/finalize, /api/finalize/cancel, /api/sessions/:sessionId/status
  • 検証フロー(/api/verify, /api/verification/run, バンドル取得)
  • 監査補助(/api/bulletin/*, /api/bitmap-proof, /api/sth, /api/zkvm-input-hash, /api/botdata/:id

対象外(内部運用 / デバッグ向け):

  • GET /api/debug/enable
  • POST /api/finalize/callback

デュアルランタイム構成

API ハンドラはフレームワーク非依存の共通実装で、Next.js と Hono(Lambda) の両方から利用されます。

ランタイム用途主な入口
Next.js Route Handlerローカル開発 / SSRsrc/app/api/**/route.ts
Hono on LambdaAWS 本番 APIamplify/functions/hono-api/handler.ts

リクエスト処理の実装上の注意

ミドルウェアは「全リクエスト共通の固定チェーン」ではなく、エンドポイント実装ごとに必要な検証を呼び出す方式です。

区分代表エンドポイントX-Session-IDTurnstileレート制限
投票POST /api/vote必須あり投票用
集計POST /api/finalize必須ありzkVM 用
検証実行POST /api/verification/run必須なしzkVM 用
読み取り(多く)GET /api/verify, GET /api/bulletin など多くで必須なしなし
読み取り(例外)GET /api/sessions/:sessionId/status, バンドル取得, GET /api/zkvm-input-hash不要なしなし

補足:

  • GET /api/bitmap-proofX-Session-ID はストア実装依存です(Mock/File は省略可、Amplify は実質必須)。

エラーレスポンスの実装差分

多くのエンドポイントは errorResponse(...) を通して以下の形式を返します。

  • error(エラーコード)
  • message(メッセージ)
  • statusCode(HTTP ステータス)
  • 必要に応じて details など

ただし、いくつかのエンドポイント(例: GET /api/sessions/:sessionId/status, GET /api/verification/bundles/...)は、{ error: "..." } のような独自形式を返します。詳細は エンドポイント一覧 を参照してください。

この部に含まれる章