Tester une connexion
POST /v1/connections/{connection_id}:test · permission connections:write
Lance une connexion de test avec la configuration actuelle d'une connexion d'entreprise et renvoie une URL de test. La personne qui configure la connexion ouvre l'URL dans un navigateur et se connecte auprès du fournisseur d'identité. Le navigateur revient ensuite vers return_url avec le paramètre de requête test_id. Consultez le résultat avec Obtenir le dernier résultat de test.
Une connexion de test ne crée aucune session, ne provisionne aucun utilisateur et ne lie aucun compte. Un test réussi est nécessaire pour activer la connexion ; toute modification de la configuration du fournisseur d'identité l'invalide.
Pour tester une révision en brouillon à la place de la configuration active, envoyez son revision_id. Le brouillon est superposé à la configuration active pour ce seul test (pour une migration d'hôte SP, l'URL de test se trouve sur le nouvel hôte). Un test réussi d'une révision est la preuve requise par Publier une révision ; il ne compte pas comme preuve d'activation de la configuration active.
L'test_url est un lien au porteur : quiconque le détient peut exécuter le test pendant 10 minutes, une seule fois. Elle n'est renvoyée que dans cette réponse (Cache-Control: no-store) et n'est jamais journalisée ni auditée. Si vous répétez la requête avec la même Idempotency-Key, la réponse rejouée ne contient pas de test_url et comporte secret_redacted: true ; lancez alors un nouveau test. Les lancements sont audités sous connection.test_started avec le seul identifiant du test.
Requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
connection_id |
path | oui | Identifiant de la connexion d'entreprise (conn_…). |
return_url |
string | oui | URL absolue en https vers laquelle le navigateur revient après le test, d'au plus 2048 octets. test_id est ajouté comme paramètre de requête. |
revision_id |
string | non | Une révision en brouillon de la connexion (connrev_…) à tester à la place de la configuration active. |
Réponse
200 OK :
{
"test_id": "conntest_01j9xr4a6b8c0d2e4f6g8h0j2k",
"test_url": "https://acme.eu1.keenauth.app/sso/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/start?t=…",
"expires_at": "2026-10-20T10:10:00Z"
}
| Champ | Description |
|---|---|
test_id |
Identifiant du test (conntest_…). |
test_url |
L'URL à ouvrir dans un navigateur ; valable 10 minutes et utilisable une seule fois. Ne la partagez pas et ne la journalisez pas. Absente dans une réponse rejouée. |
expires_at |
Date d'expiration de l'URL de test. |
secret_redacted |
true dans une réponse rejouée pour la même Idempotency-Key. |
Erreurs
| HTTP | code | Quand |
|---|---|---|
| 404 | not_found |
La connexion n'existe pas dans cet environnement ou n'est pas une connexion d'entreprise. |
| 409 | conflict |
La connexion ne peut pas encore être testée (aucune configuration de protocole). |
| 422 | validation_failed |
return_url est absent ou n'est pas une URL absolue en https (errors[] pointe vers /return_url), ou revision_id est mal formé (invalid_value) ou ne correspond pas à une révision en brouillon de cette connexion (not_found ; pointeur /revision_id). |
| 400 | unknown_field |
Le corps de la requête contient un champ inconnu. |
| 401 | unauthenticated |
L'identifiant d'accès est absent, invalide ou révoqué. |
| 403 | insufficient_permissions |
L'identifiant d'accès ne dispose pas de l'autorisation requise. |
| 429 | rate_limited |
La limite de débit a été dépassée ; réessayez après la période indiquée par Retry-After. |
| 503 | service_unavailable |
Un service dont dépend l'API est temporairement indisponible ; réessayez après la période indiquée par Retry-After. |
Exemple
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b:test" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"return_url":"https://admin.example.com/sso/test-done"}'
keenauth connections test conn_01j9xp6q0r1s5t7v9w1x3y5z7b --return-url https://admin.example.com/sso/test-done