全サービス共通

認証・アクセスAPI

OAuth 2.0 認可コードフロー(PKCE対応)に基づく認証基盤です。ビジネス向けアプリ(store.* スコープ)はビジネスオーナーが同意画面でアクセスを許可します。コンシューマー向けアプリ(user.* スコープ)はエンドユーザーが自身のデータへのアクセスを許可します。user.* スコープを利用するアプリは、事前にシステム管理者の承認が必要です。


エンドポイント一覧

メソッド パス 説明 レスポンス
GET /oauth/authorize 認可画面にリダイレクト
ユーザーのブラウザをこのURLにリダイレクトします。同意画面が表示され、許可するとredirect_uriに認可コードが返されます。パラメータ: client_id, redirect_uri, response_type=code, scope, state, code_challenge(任意), code_challenge_method(任意)。ビジネススコープの場合はorg_idも指定可能。
302 400
POST /api/v1/auth/token アクセストークンを発行
認可コード(grant_type=authorization_code)を使ってアクセストークンを取得します。PKCE利用時はcode_verifierを送信してください。
200 401
POST /api/v1/auth/verify トークンを検証
アクセストークンの有効性を確認し、関連するスコープ・有効期限・対象ビジネスアカウントまたはユーザーIDを返します。
200 401
POST /api/v1/auth/refresh トークンをリフレッシュ
リフレッシュトークンを使って新しいアクセストークン+リフレッシュトークンのペアを発行します。古いトークンは無効化されます。
200 401
POST /api/v1/auth/revoke トークンを取り消し
アクセストークンまたはリフレッシュトークンを無効化します。ログアウト時に使用します。
200 400

エンドポイント詳細

ユーザーのブラウザをこのURLにリダイレクトします。同意画面が表示され、許可するとredirect_uriに認可コードが返されます。パラメータ: client_id, redirect_uri, response_type=code, scope, state, code_challenge(任意), code_challenge_method(任意)。ビジネススコープの場合はorg_idも指定可能。

完全パス: GET /oauth/authorize
レスポンスコード: 302 400

認可コード(grant_type=authorization_code)を使ってアクセストークンを取得します。PKCE利用時はcode_verifierを送信してください。

完全パス: POST /api/v1/auth/token
レスポンスコード: 200 401

アクセストークンの有効性を確認し、関連するスコープ・有効期限・対象ビジネスアカウントまたはユーザーIDを返します。

完全パス: POST /api/v1/auth/verify
レスポンスコード: 200 401

リフレッシュトークンを使って新しいアクセストークン+リフレッシュトークンのペアを発行します。古いトークンは無効化されます。

完全パス: POST /api/v1/auth/refresh
レスポンスコード: 200 401

アクセストークンまたはリフレッシュトークンを無効化します。ログアウト時に使用します。

完全パス: POST /api/v1/auth/revoke
レスポンスコード: 200 400

リクエスト例

リクエスト
POST /api/v1/auth/token
Content-Type: application/json

{
  "grantType": "authorization_code",
  "clientId": "app_aBcDeFgH1234",
  "clientSecret": "your-secret",
  "code": "AUTH_CODE",
  "redirectUri": "receiptroller-app://oauth-callback",
  "codeVerifier": "your-pkce-verifier"
}
レスポンス
{
  "accessToken": "aBcDeFgH1234567890...",
  "refreshToken": "xYzAbCdEfG098765...",
  "tokenType": "Bearer",
  "expiresIn": 3600,
  "scope": "user.profile.read user.receipts.read user.spending.read"
}