コンテンツにスキップ

設定管理

概要

設定管理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

リクエスト例

Terminal window
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_address": "[email protected]",
"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

パスパラメータ

パラメータ必須説明
categorystring設定カテゴリ

設定カテゴリ

カテゴリ説明
authentication認証関連設定
brandingブランディング設定
emailメール設定
securityセキュリティ設定
tokensトークン設定
webhooksWebhook設定
complianceコンプライアンス設定

リクエスト例

Terminal window
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

リクエスト例

Terminal window
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

リクエスト例

Terminal window
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

パスパラメータ

パラメータ必須説明
flagstring機能フラグのキー

リクエストボディ

フィールド必須説明
enabledboolean有効/無効

リクエスト例

Terminal window
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

パスパラメータ

パラメータ必須説明
categorystring設定カテゴリ

リクエスト例

Terminal window
curl -X POST "https://{tenant-domain}/api/admin/settings/reset/authentication" \
-H "Authorization: Bearer {token}"

レスポンス例

{
"reset": true,
"category": "authentication",
"reset_at": 1706313600
}

設定の優先順位

設定値は以下の優先順位で解決されます:

  1. KVストア(管理API経由で設定) - 最も優先
  2. 環境変数 - デプロイ時に設定
  3. コードのデフォルト値 - 最も低い優先度
例: パスワードの最小長
KV: 12 → 採用
環境変数: MIN_PASSWORD_LENGTH=10
コードデフォルト: 8

設定変更の監査

すべての設定変更は監査ログに記録されます。監査ログAPIaction: settings.update をフィルタして確認できます。