Migrer l'hôte SP d'une connexion
POST /v1/connections/{connection_id}:migrate-sp-host · autorisation connections:write
Lance le déplacement des points de terminaison SP (ACS, métadonnées, déconnexion unique, rappel OIDC) d'une connexion d'entreprise vers un nouvel hôte, par exemple de l'hôte keenauth.app vers votre domaine personnalisé vérifié. Les URL SP sont par ailleurs figées, car le fournisseur d'identité les possède.
La requête crée une révision en brouillon de type sp_host, quel que soit le statut de la connexion. Rien ne change encore pour les connexions :
- Téléchargez les nouvelles métadonnées SP avec Télécharger les métadonnées SP et
revision_id, puis transmettez-les à l'administrateur du fournisseur d'identité. Le nouvel hôte ne sert que ces métadonnées et la connexion de test du brouillon, rien d'autre. - Testez le brouillon avec Tester une connexion et
revision_id. - Publiez la révision. La connexion utilise désormais le nouvel hôte. L'ancien hôte continue de répondre pendant 30 jours supplémentaires afin que le fournisseur d'identité puisse être mis à jour, puis il renvoie
404.
Un nouveau brouillon supprime le brouillon précédent de la connexion. La requête est auditée sous connection.revision_created.
Requête
| Champ | Type | Requis | Description |
|---|---|---|---|
connection_id |
chemin | oui | ID de la connexion d'entreprise (conn_…). |
Idempotency-Key |
en-tête | non | Clé facultative qui rend sûre la nouvelle tentative d'une requête (16 à 64 caractères). |
sp_host |
chaîne | oui | Le nouvel hôte : un hôte actif de cet environnement (son hôte keenauth.app ou un domaine personnalisé vérifié), en minuscules, sans port. |
Réponse
200 OK avec la révision en brouillon :
{
"id": "connrev_01j9xr8c2d4e6f8g0h2j4k6m8n",
"connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
"protocol": "saml",
"kind": "sp_host",
"status": "draft",
"discard_reason": null,
"created_at": "2026-10-28T10:00:00Z",
"decided_at": null,
"purge_after": null,
"superseded_revision_id": null,
"changes": {
"sp_host": "login.example.com",
"idp_entity_id": null,
"idp_sso_url": null,
"idp_slo_url": null,
"certificate_fingerprints": [],
"mfa_authn_context_values": null,
"issuer": null,
"client_id": null,
"client_auth_method": null,
"provider_profile": null,
"client_secret_change": null
},
"latest_test": null
}
superseded_revision_id est le brouillon précédent que cette requête a supprimé, le cas échéant.
Erreurs
| HTTP | code | Quand |
|---|---|---|
| 400 | unknown_field |
Le corps contient un champ inconnu. |
| 401 | unauthenticated |
L'identifiant est absent, invalide ou révoqué. |
| 403 | insufficient_permissions |
L'identifiant ne dispose pas de l'autorisation connections:write. |
| 404 | not_found |
La connexion n'existe pas dans cet environnement ou n'est pas une connexion d'entreprise. |
| 409 | conflict |
La fenêtre de 30 jours de la migration précédente de l'hôte SP est encore ouverte, ou la connexion n'a pas encore de configuration de protocole. |
| 422 | validation_failed |
errors[] indique /sp_host avec required, invalid_value (pas un nom d'hôte en minuscules), not_in_environment (pas un hôte actif de cet environnement) ou unchanged (déjà l'hôte SP de la connexion). |
| 429 | rate_limited |
La limite de débit a été dépassée ; réessayez après la durée indiquée par Retry-After. |
| 503 | service_unavailable |
Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par Retry-After. |
Exemple
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b:migrate-sp-host" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"sp_host":"login.example.com"}'
keenauth connections migrate-sp-host conn_01j9xp6q0r1s5t7v9w1x3y5z7b --sp-host login.example.com --yes