アプリケーション
アプリケーションはサービス境界とユーザー名前空間を定義します。すべてのユーザー、クライアント、マーチャントはアプリケーションに属します。アカウントはアプリケーションの下にあり、課金/チームの境界を表します。
階層は交互に並びます。
Application → Account → Application → Account
つまり各アプリケーションは独立したユーザー名前空間です。同じメールアドレスでも複数のアプリケーションで共存できます。
重要な点
- ユーザー作成は対象アカウントの親アプリケーションで行われます。
- アクセストークンはアプリケーションとアカウントのコンテキストを持ちます(別のnamespace claimはありません)。
- 分離はアプリケーション境界とメンバーシップで保証されます。
階層の例
app_platform
└─ acc_alice
└─ app_taskflow
└─ acc_bob
app_platformはAliceをユーザーとして所有します。app_taskflowはBobをユーザーとして所有します。acc_bobはapp_taskflowの下で課金されます。
アプリケーション操作
| 操作 | Endpoint | 説明 |
|---|---|---|
| 作成 | POST /api/accounts/:account_id/applications | アカウント配下にアプリを作成 |
| 一覧 | GET /api/accounts/:account_id/applications | アカウント配下のアプリ一覧 |
| 取得 | GET /api/applications/:application_id | アプリの詳細を取得 |
| 更新 | PATCH /api/applications/:application_id | アプリ設定を更新 |
| 削除 | DELETE /api/applications/:application_id | アプリを削除 |
トークンクレーム
トークンにはアプリケーションとアカウントのコンテキストが含まれます。
{
"app": "app_root",
"acc": "acc_child456",
"uid": "uid_789",
"role": "member"
}