主要概念
テナントとは、PASTA 上の独立した組織単位です。テナントごとにメンバー、パステンプレート、発行済みパス、APIキーが分離されています。
- 1人のユーザーが複数のテナントを作成・所属できます。
- 管理画面ヘッダーのテナントスイッチャーで、再ログインなしに切り替えられます。
- テナントには slug(URLスラッグ)と一意の テナントID(UUID)があります。
テンプレート(パステンプレート)
Section titled “テンプレート(パステンプレート)”テンプレートは、発行するパスの「型」です。表示色・フィールド定義・ロゴ画像などを設定します。
| 設定項目 | 説明 |
|---|---|
| テンプレート名 | 管理用の識別名 |
| 表示色 | Apple / Google Wallet のカード背景色(hex) |
| フィールド | パスに表示するラベルと値のペア(例: イベント名、座席番号) |
| ロゴ画像 | PNG形式(Apple Wallet のヘッダーロゴ) |
| パス種別 | Generic / EventTicket(Google Wallet のレイアウト) |
テンプレート編集画面には ライブプレビュー があり、Apple Wallet 風・Google Wallet 風・紙チケット風の見た目を事前確認できます。
テンプレートをもとに、特定の保有者向けに 発行 したものがパスです。
| 状態 | 説明 |
|---|---|
active | 有効(まだ検証されていない) |
redeemed | 償却済み(入場済み・使用済み) |
revoked | 取消済み(発行後に無効化) |
expired | 有効期限切れ |
各パスには固有の QRコード(JWS形式) が生成されます。Apple Wallet・Google Wallet・紙チケットで同一フォーマットを使用します。
検証(Validate)と償却(Redeem)
Section titled “検証(Validate)と償却(Redeem)”キオスク端末または API 経由でQRコードを読み取ると、以下の処理が行われます。
- JWS署名検証:バックエンドの秘密鍵で署名されたQRが正規品か確認
- パス状態チェック:
activeかどうかを確認 - 原子的な償却:D1 トランザクションで二重償却を防止
- ログ記録:
redemptionsテーブルに検証者・日時・手段を記録
同一パスへの再検証は already_redeemed として返します(エラーではなく状態として処理)。
テナントのメンバーには 3 種類のロールがあります。
| ロール | 権限 |
|---|---|
| 管理者(admin) | 全権(メンバー管理・APIキー・組織設定含む) |
| 編集者(editor) | テンプレート・パスの作成・発行・取消 |
| 検証者(validator) | 検証実行と償却ログの閲覧のみ |
テナントの最後の管理者は降格・削除できません。
外部システムやキオスク端末がバックエンド API を呼び出す際に使用する認証情報です。プレフィックス pasta_ で始まる文字列で、スコープ(issue / validate)を指定します。
- issue スコープ:パスの発行・管理用(サーバー間連携)
- validate スコープ:検証専用(キオスク端末向け)
生キーは作成時に一度だけ表示されます。再表示はできません。