設定管理
概要
設定管理APIは、テナントの各種設定や機能フラグを管理するためのエンドポイントを提供します。設定はKVストアに保存され、再デプロイなしで動的に変更できます。
エンドポイント一覧
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /api/admin/settings | 全設定取得 |
| GET | /api/admin/settings/:category | カテゴリ別設定取得 |
| PUT | /api/admin/settings/:category | カテゴリ別設定更新 |
| GET | /api/admin/settings/feature-flags | 機能フラグ一覧取得 |
| PUT | /api/admin/settings/feature-flags/:flag | 機能フラグ更新 |
| POST | /api/admin/settings/reset/:category | 設定をデフォルトにリセット |
全設定取得
テナントのすべての設定を取得します。
エンドポイント
GET /api/admin/settings
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/settings" \ -H "Authorization: Bearer {token}"レスポンス例
{ "authentication": { "password_policy": { "min_length": 8, "require_uppercase": true, "require_lowercase": true, "require_numbers": true, "require_symbols": false, "max_age_days": 90 }, "session": { "lifetime": 86400, "idle_timeout": 3600, "absolute_timeout": 604800, "single_session": false }, "mfa": { "enabled": true, "required": false, "methods": ["totp", "sms", "email"] }, "lockout": { "enabled": true, "max_attempts": 5, "lockout_duration": 900 } }, "branding": { "logo_url": "https://example.com/logo.png", "primary_color": "#0066CC", "company_name": "Example Corp" }, "email": { "from_name": "Example Corp" }, "security": { "allowed_origins": ["https://app.example.com"], "trusted_proxies": [], "rate_limiting": { "enabled": true, "requests_per_minute": 60 } }}カテゴリ別設定取得
特定のカテゴリの設定を取得します。
エンドポイント
GET /api/admin/settings/:category
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
category | string | ○ | 設定カテゴリ |
設定カテゴリ
| カテゴリ | 説明 |
|---|---|
authentication | 認証関連設定 |
branding | ブランディング設定 |
email | メール設定 |
security | セキュリティ設定 |
tokens | トークン設定 |
webhooks | Webhook設定 |
compliance | コンプライアンス設定 |
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/settings/authentication" \ -H "Authorization: Bearer {token}"レスポンス例
{ "password_policy": { "min_length": 8, "require_uppercase": true, "require_lowercase": true, "require_numbers": true, "require_symbols": false, "max_age_days": 90, "history_count": 5 }, "session": { "lifetime": 86400, "idle_timeout": 3600, "absolute_timeout": 604800, "single_session": false, "remember_me_enabled": true, "remember_me_duration": 2592000 }, "mfa": { "enabled": true, "required": false, "methods": ["totp", "sms", "email"], "grace_period": 0 }, "lockout": { "enabled": true, "max_attempts": 5, "lockout_duration": 900, "reset_after": 3600 }}カテゴリ別設定更新
特定のカテゴリの設定を更新します。
エンドポイント
PUT /api/admin/settings/:category
リクエスト例
curl -X PUT "https://{tenant-domain}/api/admin/settings/authentication" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "password_policy": { "min_length": 12, "require_symbols": true }, "mfa": { "required": true } }'レスポンス例
{ "updated": true, "category": "authentication", "changes": { "password_policy.min_length": { "old": 8, "new": 12 }, "password_policy.require_symbols": { "old": false, "new": true }, "mfa.required": { "old": false, "new": true } }, "updated_at": 1706140800}機能フラグ一覧取得
テナントの機能フラグを取得します。
エンドポイント
GET /api/admin/settings/feature-flags
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/settings/feature-flags" \ -H "Authorization: Bearer {token}"レスポンス例
{ "flags": [ { "key": "passwordless_enabled", "display_name": "パスワードレス認証", "description": "WebAuthn/パスキーによるパスワードレス認証を有効にします", "enabled": false, "category": "authentication", "impact": "low" }, { "key": "advanced_mfa", "display_name": "高度なMFA", "description": "リスクベースのMFAとアダプティブ認証を有効にします", "enabled": true, "category": "security", "impact": "medium" }, { "key": "rebac_enabled", "display_name": "ReBAC", "description": "関係ベースアクセス制御を有効にします", "enabled": true, "category": "access_control", "impact": "high" }, { "key": "audit_log_export", "display_name": "監査ログエクスポート", "description": "監査ログのCSV/JSONエクスポート機能", "enabled": true, "category": "compliance", "impact": "low" } ]}機能フラグ更新
特定の機能フラグを更新します。
エンドポイント
PUT /api/admin/settings/feature-flags/:flag
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
flag | string | ○ | 機能フラグのキー |
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
enabled | boolean | ○ | 有効/無効 |
リクエスト例
curl -X PUT "https://{tenant-domain}/api/admin/settings/feature-flags/passwordless_enabled" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "enabled": true }'レスポンス例
{ "key": "passwordless_enabled", "enabled": true, "updated_at": 1706227200}設定をデフォルトにリセット
特定のカテゴリの設定をデフォルト値にリセットします。
エンドポイント
POST /api/admin/settings/reset/:category
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
category | string | ○ | 設定カテゴリ |
リクエスト例
curl -X POST "https://{tenant-domain}/api/admin/settings/reset/authentication" \ -H "Authorization: Bearer {token}"レスポンス例
{ "reset": true, "category": "authentication", "reset_at": 1706313600}設定の優先順位
設定値は以下の優先順位で解決されます:
- KVストア(管理API経由で設定) - 最も優先
- 環境変数 - デプロイ時に設定
- コードのデフォルト値 - 最も低い優先度
例: パスワードの最小長KV: 12 → 採用環境変数: MIN_PASSWORD_LENGTH=10コードデフォルト: 8設定変更の監査
すべての設定変更は監査ログに記録されます。監査ログAPIで action: settings.update をフィルタして確認できます。