
# Bir org için alan adı talep et

`POST /v1/organization-domains` · izin `organization-domains:write`

Org'a alan adı ekler. `domain` Unicode ya da A-label olabilir; küçük harf A-label olarak saklanır. `dns_txt` (varsayılan) ile alan `pending` başlar; dönen TXT kaydını yayımlayın, alan `:verify` ya da zamanlanmış denetimle doğrulanır; 72 saatte doğrulanmayan alan `expired` olur. `manual` sahiplik beyanınızı kaydeder: alan hemen `verified` olur ve beyan yönetim audit'ine yazılır. Her org'da en çok 100 alan adı olabilir.

## İstek

| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| `Idempotency-Key` | header | hayır | Yeniden denenen isteği güvenli kılan isteğe bağlı anahtar (16-64 karakter). |
| `organization_id` | string | evet | Alanı talep eden org (`org_…`). |
| `domain` | string | evet | Alan adı, en çok 253 karakter. Genel sonekler ve ücretsiz e-posta sağlayıcıları talep edilemez. |
| `verification_method` | string | hayır | `dns_txt` (varsayılan) ya da `manual`. |

İstek gövdesi:

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

## Yanıt

Alan kaydıyla ve `ETag` başlığıyla `201 Created`.

```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
}
```

## Hatalar

| HTTP | code | Ne zaman |
|---|---|---|
| 400 | `unknown_field` | Gövdede şemada olmayan ya da salt okunur bir alan var. |
| 404 | `not_found` | Bu ortamda bu kimlikle org yok. |
| 409 | `conflict` | Bu org'da bu alan adı zaten var. |
| 409 | `domain_already_verified` | Bu alan adını başka bir org zaten doğruladı. |
| 409 | `domain_limit_reached` | Org'da zaten 100 alan adı var. |
| 409 | `organization_disabled` | Org devre dışı. |
| 409 | `organization_pending_deletion` | Org self-servis silmeyi bekliyor; önce silmeyi iptal edin. |
| 422 | `domain_not_claimable` | Alan adı bir genel sonek ya da ücretsiz e-posta sağlayıcısı. |
| 422 | `validation_failed` | Bir alan geçersiz (`organization_id`, `domain`, `verification_method`). |
| 401 | `unauthenticated` | Kimlik bilgisi yok, geçersiz ya da iptal edilmiş. |
| 403 | `insufficient_permissions` | Kimlik bilgisinde gerekli izin yok. |
| 429 | `rate_limited` | Hız sınırı aşıldı; `Retry-After` süresinden sonra yeniden deneyin. |
| 503 | `service_unavailable` | Bir bağımlılık geçici olarak kullanılamıyor; `Retry-After` süresinden sonra yeniden deneyin. |

## Örnek

```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"}'
```
