
# Rendre un domaine personnalisé principal

`POST /v1/custom-domains/{custom_domain_id}:make-primary` · permission `custom-domains:write`

Fait du domaine le domaine personnalisé principal de l'environnement (les liens de connexion hébergée l'utilisent) ; l'ancien domaine principal perd ce rôle dans la même opération. Le domaine doit être `active` ; rendre principal le domaine déjà principal ne change rien. Lorsque l'émetteur (issuer) de l'environnement est sur un domaine personnalisé, changer le domaine principal change l'émetteur et doit être planifié comme une migration d'émetteur.

## Requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `custom_domain_id` | string | oui | Identifiant du domaine personnalisé (`cdom_…`). |
| `Idempotency-Key` | header | non | Clé facultative (16-64 caractères) qui rend une requête réessayée sûre. |
| `If-Match` | header | non | Facultatif. S'il est fourni, il doit correspondre à l'`ETag` du domaine (sinon `412`). |

Pas de corps de requête.

## Réponse

`200 OK` avec le domaine et un en-tête `ETag`.

```json
{
  "id": "cdom_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "hostname": "login.example.com",
  "is_primary": true,
  "status": "active",
  "failure_reason": null,
  "dns_records": [
    {
      "type": "TXT",
      "name": "_akp-verify.login.example.com",
      "value": "idp-verify=3q2-7wEXAMPLEtokenQ9"
    },
    {
      "type": "CNAME",
      "name": "login.example.com",
      "value": "acme.eu.edge.keenauth.app"
    }
  ],
  "certificate_expires_at": "2027-01-04T09:31:12Z",
  "last_checked_at": "2026-10-05T09:31:00Z",
  "next_check_at": null,
  "activated_at": "2026-10-05T09:31:12Z",
  "degraded_since": null,
  "status_changed_at": "2026-10-05T09:31:12Z",
  "created_at": "2026-10-05T09:30:00.123456Z",
  "updated_at": "2026-10-05T09:31:12Z"
}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 404 | `not_found` | Le domaine personnalisé n'existe pas ou appartient à un autre environnement. |
| 409 | `custom_domain_state_conflict` | Le domaine n'est pas `active`. |
| 409 | `issuer_change_requires_schedule` | L'émetteur de l'environnement est sur un domaine personnalisé ; le changement doit être planifié comme une migration d'émetteur. |
| 412 | `precondition_failed` | `If-Match` ne correspond pas à la version actuelle du domaine. |
| 503 | `service_unavailable` | Les informations d'émetteur de l'environnement sont temporairement indisponibles. |
| 401 | `unauthenticated` | L'identifiant est absent, invalide ou révoqué. |
| 403 | `insufficient_permissions` | L'identifiant n'a pas la permission requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après le délai `Retry-After`. |

## Exemple

```bash
curl -X POST https://api.eu.keenauth.com/v1/custom-domains/cdom_01j9xk3m7q8r2s4t6v8w0y2z4a:make-primary \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H 'If-Match: "4"'
```
