通い放題プラン・回数券API の使い方

API OAuth 通い放題 サブスクリプション 回数券 Memberships Passes Android iOS
このガイドについて
店舗が販売する通い放題プラン(月額・年額のサブスクリプション)と回数券を、API経由で管理するためのガイドです。プランや回数券商品の作成に加えて、いま誰がご利用中なのか、いつまでお支払い済みなのかを取得できます。

予約そのものの操作は 予約管理API をご覧ください。

必要なスコープ

スコープ付与される権限
store.memberships.read通い放題プランとご加入者の参照
store.memberships.writeプランの作成・更新、ご加入者の解約
store.passes.read回数券商品とご購入者の参照
store.passes.write回数券商品の作成・更新・削除、回数券の取り込み

予約の store.reservations.* とは別のスコープです。これらは「誰にいくら課金しているか」を読み取り、継続課金を止めることもできるため、予約台帳の参照より重い権限として分けています。

通い放題プランのエンドポイント

メソッドパス内容
GET/api/v1/reservations/memberships/plansプラン一覧(activeOnly=true で販売中のみ)
GET/api/v1/reservations/memberships/plans/{planId}プランの詳細
POST/api/v1/reservations/memberships/plansプランの作成・更新
POST/api/v1/reservations/memberships/plans/{planId}/deactivate募集を停止する
GET/api/v1/reservations/memberships/membersご加入者一覧(currentOnly=true でご利用中のみ)
POST/api/v1/reservations/memberships/members/{membershipId}/cancel解約する

プランの作成

POST /api/v1/reservations/memberships/plans
Authorization: Bearer {token}
Content-Type: application/json

{
  "storeId": "store-001",
  "name": "通い放題プラン",
  "price": 12000,
  "currency": "JPY",
  "interval": "month"
}

membershipPlanId を省略すると新規作成、指定すると更新です。price は通貨の主単位で指定します(12,000円のプランなら 12000)。intervalmonth または year です。

料金を変更しても、すでにご加入中の方の請求額は変わりません。決済サービス側では加入時の金額で継続課金されます。

ご加入者の取得

GET /api/v1/reservations/memberships/members?storeId= は、その店舗で加入したことのある方をすべて返します。解約済みの方も含まれるのは、「この方に課金したことがあるか」を後から確認できるようにするためです。請求についてのお問い合わせは、たいていその形で来ます。

いまご利用中の方だけが必要な場合は currentOnly=true を付けてください。

{
  "count": 2,
  "members": [
    {
      "membershipId": "mem-001",
      "customerId": "crm-abc",
      "planName": "通い放題プラン",
      "status": "Active",
      "currentPeriodEnd": "2026-09-15T00:00:00Z",
      "cancelAtPeriodEnd": false
    }
  ]
}

customerId はCRMの顧客IDで、予約が紐付く顧客と同じIDです。ご加入者の予約履歴を突き合わせるときはこのIDを使ってください。

cancelAtPeriodEndtrue の方は解約手続き済みですが、お支払い済みの期間が終わるまではご利用いただけます。status はまだ Active のままである点にご注意ください。決済サービス側でも期間終了までは有効な購読として扱われます。

解約

POST /api/v1/reservations/memberships/members/{membershipId}/cancel
  ?storeId=store-001&customerId=crm-abc
Authorization: Bearer {token}

次回以降の請求を停止します。即時停止ではありません。お支払い済みの期間中はご利用いただけます。レスポンスの periodEnd がご利用いただける最終日です。

ご加入者は顧客ごとに保存されているため、membershipId だけでは特定できません。customerId を必ず付けてください。

一度も課金されていない加入には 409 を返します(停止すべき購読が存在しないため)。決済サービスに接続できない場合は 503 で、いずれの場合も加入の状態は変わりません。

回数券のエンドポイント

メソッドパス内容
GET/api/v1/reservations/passes/products回数券商品の一覧
GET/api/v1/reservations/passes/products/{passProductId}回数券商品の詳細
POST/api/v1/reservations/passes/products回数券商品の作成・更新
DELETE/api/v1/reservations/passes/products/{passProductId}回数券商品の販売終了
GET/api/v1/reservations/passes/holdersご購入者と残回数の一覧
POST/api/v1/reservations/passes/import/preview取り込みファイルの事前確認
POST/api/v1/reservations/passes/import回数券の取り込み

回数券商品を編集しても、すでに販売済みの回数券は変わりません。名称・料金・回数は購入時に回数券側へ複写されるため、あとからの編集で履歴が書き換わることはありません。

残回数の取得

GET /api/v1/reservations/passes/holders?storeId= は、その店舗で販売した回数券をすべて返します。usableOnly=true を付けると、残回数があり有効期限内のものだけになります。

status は次のいずれかです。

  • Pending(お支払い手続き中。まだご利用いただけません)
  • Active(ご利用中)
  • Exhausted(回数を使い切り)
  • Expired(有効期限切れ)
  • Cancelled(取消)

他システムからの回数券の取り込み

他の予約システムから移行する場合は、CSVで回数券をまとめて取り込めます。列は name, nameKana, phone, email, passName, remainingCredits, totalCredits, expiresAt(yyyy-MM-dd)です。

取り込みの前に POST /api/v1/reservations/passes/import/preview を実行してください。何も書き込まずに、各行がどう扱われるかを行番号付きで返します。

取り込みはお客様を電話番号とメールアドレスで照合します。列の対応を取り違えたまま実行すると、ファイル内の全員について新しい顧客レコードが作られてしまいます。事前確認はそれを防ぐためのものです。

使えない行はスキップし、ファイル全体を失敗させることはありません。1行の不備で残り200行が無駄にならないようにするためです。実行後は errorCount をご確認ください。

OpenAPI定義

リクエスト・レスポンスの詳細は APIリファレンス/openapi/v1.json をご覧ください。

関連ガイド

公開日: 2026-08-19 更新日: 2026-08-19
このトピックについて
開発者API
機能の詳細を見る
タグ
API (25) OAuth (18) Android (13) iOS (12) Webhook (8) api (6) oauth (5) トラブル (5) POS連携 (4) getting-started (4)
関連記事