背景
MVP API §5.1 のうち A-05 がアプリ層未実装(DB スキーマ tenants/user_tenants・OpenAPI 契約 createTenant は既存)。Sprint 0 #121「API 28 endpoints」スコープから抜けたまま補填されていなかった。新規ユーザーのサインアップ導線が無く、MVP リリースブロッカー。
スコープ(縦切り: API + 画面)
- API:
POST /api/tenants(operationId createTenant)。認証済み(Keycloak ログイン済み)・テナント未所属ユーザーが自分でテナントを作成。X-Tenant-Id ヘッダ不要。
- 作成と同時に呼び出しユーザーを 初代
TENANT_ADMIN として user_tenants に登録。
tenants.code 一意制約違反は 409 / E_CONFLICT。
- 画面 S-11(セルフサインアップ)。
- 濫用対策(レート制限・ドメイン制限・承認制)は Phase 2(本 Issue 対象外)。
受け入れ条件
参照
設計書 §5.1 A-05 / §5.4.1(409)/ OpenAPI POST /api/tenants(createTenant)
背景
MVP API §5.1 のうち A-05 がアプリ層未実装(DB スキーマ
tenants/user_tenants・OpenAPI 契約createTenantは既存)。Sprint 0 #121「API 28 endpoints」スコープから抜けたまま補填されていなかった。新規ユーザーのサインアップ導線が無く、MVP リリースブロッカー。スコープ(縦切り: API + 画面)
POST /api/tenants(operationIdcreateTenant)。認証済み(Keycloak ログイン済み)・テナント未所属ユーザーが自分でテナントを作成。X-Tenant-Idヘッダ不要。TENANT_ADMINとしてuser_tenantsに登録。tenants.code一意制約違反は409 / E_CONFLICT。受け入れ条件
CreateTenantUseCase(usecase 層・@Transactional)実装POST /api/tenants、X-Tenant-Id除外)実装TENANT_ADMIN登録(user_tenants)409 / E_CONFLICT(code 重複)createTenant契約)とレスポンス一致参照
設計書 §5.1 A-05 / §5.4.1(409)/ OpenAPI
POST /api/tenants(createTenant)