予約管理API(Reservations API)の使い方
レシートローラーの予約管理API(
/api/v1/reservations)の使い方をまとめています。Web管理画面の予約管理と同じ予約エンジンをOAuth経由で操作できるため、モバイルアプリや外部の予約システムから予約の取得・作成・ステータス更新、予約枠の生成までを行えます。予約まわりのAPIは機能ごとにガイドを分けています。このページは予約そのものと予約枠を扱います。通い放題プランや回数券、定期予約、出欠管理などは末尾の「関連ガイド」からご覧ください。
必要なスコープ
| スコープ | 付与される権限 |
|---|---|
store.reservations.read | 予約・予約枠・メニュー・席情報・統計の参照 |
store.reservations.write | 予約の作成・変更・ステータス更新、予約枠の作成・生成・削除 |
アプリ編集画面の「APIスコープ」でチェックを入れたうえで、認可URLの scope パラメータに含めてください。
認証
他のv1 APIと同じトークン規約です。
- ビジネスアカウントに紐付いたトークン — そのまま呼び出せます
- ユーザースコープのトークン(ネイティブモバイルアプリ向け) — クエリに
?organizationId=を付与してください
エンドポイント一覧
| メソッド | パス | 内容 |
|---|---|---|
| GET | /api/v1/reservations | 予約一覧(status・from・to で絞り込み) |
| GET | /api/v1/reservations/{reservationId} | 予約の詳細 |
| POST | /api/v1/reservations | 予約の作成 |
| PUT | /api/v1/reservations/{reservationId} | 予約内容の更新・ステータス変更 |
| GET | /api/v1/reservations/slots | 予約枠一覧(既定で今日から7日分) |
| POST | /api/v1/reservations/slots | 予約枠を1件作成 |
| POST | /api/v1/reservations/slots/generate | 予約設定から予約枠を一括生成 |
| DELETE | /api/v1/reservations/slots/{slotId} | 予約枠の削除 |
| GET | /api/v1/reservations/config | 店舗の予約設定(枠の長さ・受付期間・自動確定・カスタム項目など) |
| GET | /api/v1/reservations/menus | メニュー一覧(所要時間・料金・指名可否) |
| GET | /api/v1/reservations/menus/{menuId}/availability | メニュー所要時間に合う開始時刻の候補 |
| GET | /api/v1/reservations/tables | 予約可能な席(テーブル・個室・カウンターなど)の一覧 |
| GET | /api/v1/reservations/stats?month= | 月次の予約統計(ステータス別件数・本日/明日の件数) |
いずれも storeId をクエリまたはボディで指定します。
予約の作成
POST /api/v1/reservations
Authorization: Bearer {token}
Content-Type: application/json
{
"storeId": "store-001",
"customerName": "山田 太郎",
"customerPhone": "090-0000-0000",
"partySize": 4,
"slotId": "slot-xxxx",
"note": "窓際の席を希望"
}
API経由で作成した予約は bookingSource が API として記録されます(リクエストで明示的に指定した場合はその値が優先されます)。
所要時間が変わるメニューの予約
カットとカラーのように所要時間が異なるメニューを扱う店舗では、先に GET /api/v1/reservations/menus/{menuId}/availability で開始時刻の候補を取得してください。所要時間に足りる連続した枠だけが返るため、60分のメニューを30分枠ひとつに入れてしまう取り違えが起きません。
返却された候補には primarySlotId と joinedSlotIds が含まれます。予約作成時は前者を slotId、後者を joinedSlotIds として送ると、必要な枠がまとめて押さえられます。
ステータスの更新
PUT /api/v1/reservations/{reservationId} のボディで status を変更すると、Web管理画面と同じステータス遷移処理が実行されます。予約枠の残席計算や確認・キャンセル通知も管理画面での操作と同じように動作します。
指定できるステータス:
Pending(承認待ち)Confirmed(確定)Completed(来店済み)Cancelled(キャンセル)NoShow(無断キャンセル)
予約枠の一括生成
POST /api/v1/reservations/slots/generate は、店舗の予約設定(枠の長さ・営業時間・定休日)にもとづいて指定期間の予約枠をまとめて生成します。
POST /api/v1/reservations/slots/generate
Authorization: Bearer {token}
Content-Type: application/json
{
"storeId": "store-001",
"from": "2026-08-15",
"to": "2026-08-21",
"perResource": true
}
perResource を true にすると、店舗レイアウトに登録された予約可能な席(テーブル・個室・カウンター)ごとに予約枠が生成されます。席単位での予約受付を行う場合に使用してください。
席(テーブル)情報の取得
GET /api/v1/reservations/tables?storeId= は、店舗レイアウトに登録された予約可能なリソースを返します。
{
"items": [
{ "id": "table-01", "name": "テーブル1", "type": "table", "typeDisplayName": "テーブル", "capacity": 4 },
{ "id": "room-01", "name": "個室A", "type": "room", "typeDisplayName": "個室", "capacity": 8 }
]
}
ここで返る id は、予約枠や予約の assignedResource にそのまま指定できます。席レイアウト自体の編集はWeb管理画面のレイアウトエディタで行ってください。
OpenAPI定義
全エンドポイントの定義は /openapi/v1.json で公開しています。APIリファレンス と同じ内容で、AndroidやiOSのクライアント生成にそのまま利用できます。
関連ガイド
-
店舗情報API(Store Information API)の使い方店舗の基本情報(店舗名・店舗種別・連絡先・住所)を取得・更新する REST API のガイドです。スタッフアプリなどのトークン認証クライアントから店舗情報の編集を実装できます。
-
定期予約・出欠・キャンセル待ちAPI の使い方レシートローラーの定期予約API(/api/v1/reservations/series)、出欠・振替API(/api/v1/reservations/attendance)、キャンセル待ちAPI(/api/v1/reservations/waitlist)のガイドです。毎週の定期予約の登録と生成、クラスの出欠記録、振替の受付、キャンセル待ちの管理を解説します。
-
営業時間API(Business Hours API)の使い方レシートローラーの営業時間API(/api/v1/stores/{storeId}/business-hours)のガイドです。曜日ごとの営業時間の取得・更新、特例営業日(臨時休業・営業時間変更)の登録、店舗の就業可能時間(シフト作成時の上限となる業務時間)の設定、現在営業中かどうかの判定までを解説します。
-
リクエストとレスポンスの基本(JSON)レシートローラーAPIのリクエスト形式、必須ヘッダー、レスポンス構造、ページネーション、フィルタリング、日時形式の規則を解説します。
-
ネイティブモバイルアプリ向けガイド: 複数ビジネスアカウントアクセスと OAuth フローAndroid / iOS のネイティブアプリ向け実装ガイド。アプリ登録時に「認可時に1つのビジネスアカウントへトークンを紐付ける」をオフにすると、user-scoped OAuth トークンが発行されます。/api/v1/me/organizations + ?organizationId= パターンで複数ビジネスアカウントを横断アクセスできます。