
# 組織のドメインを申請

`POST /v1/organization-domains` · 権限 `organization-domains:write`

組織にドメインを追加します。`domain` は Unicode または A-label で指定でき、小文字の A-label として保存されます。`dns_txt`(既定値)の場合、ドメインは `pending` で開始します。返された TXT レコードを公開すると、`:verify` または定期チェックによってドメインが検証されます。72 時間以内に検証されなかったドメインは `expired` になります。`manual` はドメインの所有権に関するお客様自身の表明を記録します。ドメインは直ちに `verified` になり、表明内容は管理監査ログに書き込まれます。1 つの組織が保持できるドメインは最大 100 件です。

## リクエスト

| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| `Idempotency-Key` | ヘッダー | いいえ | リクエストを再試行しても安全にするための任意のキー(16〜64 文字)です。 |
| `organization_id` | string | はい | ドメインを申請する組織(`org_…`)です。 |
| `domain` | string | はい | ドメイン名です。最大 253 文字。パブリックサフィックスと無料のメールプロバイダは申請できません。 |
| `verification_method` | string | いいえ | `dns_txt`(既定値)または `manual`。 |

リクエスト本文:

```json
{
  "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "domain": "acme.com"
}
```

## レスポンス

`201 Created` とともに、ドメインと `ETag` ヘッダーを返します。

```json
{
  "id": "odm_01j9xk3m7q8r2s4t6v8w0y2z4c",
  "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "domain": "acme.com",
  "status": "pending",
  "verification_method": "dns_txt",
  "txt_record_name": "_akp-verify.acme.com",
  "txt_record_value": "idp-verify=EXAMPLEtokenEXAMPLEtokenEXAMPLEtokenEXAMPLEtok",
  "verification_started_at": "2026-10-12T09:30:00.123456Z",
  "verified_at": null,
  "last_checked_at": null,
  "unverified_at": null,
  "next_check_at": "2026-10-12T09:31:00.123456Z",
  "last_failure_code": null,
  "capture_mode": "off",
  "sso_routing_enabled": false,
  "created_at": "2026-10-12T09:30:00.123456Z",
  "updated_at": "2026-10-12T09:30:00.123456Z",
  "version": 1
}
```

## エラー

| HTTP | code | 発生条件 |
|---|---|---|
| 400 | `unknown_field` | 本文に、スキーマにないフィールド、または読み取り専用のフィールドがあります。 |
| 404 | `not_found` | この環境に、このIDの組織は存在しません。 |
| 409 | `conflict` | この組織にはすでに同じドメインがあります。 |
| 409 | `domain_already_verified` | 別の組織がすでにこのドメインを検証済みです。 |
| 409 | `domain_limit_reached` | 組織はすでに 100 件のドメインを保持しています。 |
| 409 | `organization_disabled` | 組織は無効化されています。 |
| 409 | `organization_pending_deletion` | 組織はセルフサービス削除の処理待ちです。先に削除を取り消してください。 |
| 422 | `domain_not_claimable` | ドメインがパブリックサフィックスか、無料のメールプロバイダです。 |
| 422 | `validation_failed` | フィールドが無効です(`organization_id`、`domain`、`verification_method`)。 |
| 401 | `unauthenticated` | 認証情報が欠落しているか、無効か、失効しています。 |
| 403 | `insufficient_permissions` | 認証情報に必要な権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` の期間を待ってから再試行してください。 |
| 503 | `service_unavailable` | 依存サービスが一時的に利用できません。`Retry-After` の期間を待ってから再試行してください。 |

## 例

```bash
curl -X POST https://api.eu.keenauth.com/v1/organization-domains \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"organization_id":"org_01j9xk3m7q8r2s4t6v8w0y2z4a","domain":"acme.com"}'
```
