Requête exemple
Réponse exemple
Cette route envoie un message de test vers une URL de webhook entrant Microsoft Teams afin de vérifier qu'une intégration de notification est correctement configurée avant de l'utiliser en production. Le message est formaté en MessageCard (format historique des connecteurs Office 365), ce qui le rend compatible à la fois avec les webhooks Office 365 classiques et avec les workflows Power Automate. La requête côté Teams est bornée par un délai d'expiration de 10 secondes : la route capture le statut HTTP, la durée et un extrait de la réponse, et ne lève jamais d'erreur si l'envoi vers Teams échoue (le résultat est simplement reflété dans le corps de réponse).
Authentification
Requiert une clé API valide portant le scope notifications:manage. Présentez-la via l'en-tête Authorization: Bearer cof_live_... (ou cof_test_...). Le scope coarse workspace:manage (god-mode de l'espace de travail) ou un scope notifications:* satisfont également cette exigence grâce à la résolution d'alias. Une clé sans ce scope reçoit une erreur scope_missing.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| url | string | Oui | URL du webhook entrant Teams. Doit correspondre à https://*.webhook.office.com/... ou https://*.logic.azure.com/.... La chaîne est trimée puis validée par une expression régulière de domaine. |
| message | string | Non | Texte affiché comme titre de la carte. Si absent ou vide, la valeur par défaut Test from Coffrify est utilisée. |
La carte envoyée à Teams contient un themeColor violet (7c3aed), un summary (Coffrify webhook test), le title issu de message, et un texte fixe This is a test message from your Coffrify workspace.
Réponse
Retourne un objet JSON décrivant le résultat de l'appel sortant vers Teams. Le champ channel vaut toujours teams. status est le code HTTP renvoyé par Teams (ou 0 si l'appel a échoué avant de recevoir une réponse). ok est true uniquement si status est compris entre 200 et 299. duration_ms mesure le temps total de l'appel sortant. body_preview contient les 500 premiers caractères de la réponse de Teams. error contient le message d'exception si la requête sortante a échoué (timeout, DNS, etc.), sinon null.
| Champ | Type | Description |
|---|---|---|
| channel | string | Toujours teams. |
| status | number | Code HTTP renvoyé par Teams, ou 0 si l'appel a échoué. |
| ok | boolean | true si status est dans la plage 200-299. |
| duration_ms | number | Durée de l'appel sortant vers Teams en millisecondes. |
| body_preview | string | 500 premiers caractères de la réponse de Teams (souvent 1 en cas de succès). |
| error | string | null | Message d'erreur de l'appel sortant, ou null. |
Erreurs
| Code | Quand | Résolution |
|---|---|---|
| 400 validation_error | Le champ url est absent, vide, ou ne correspond pas à un domaine de webhook Teams (*.webhook.office.com ou *.logic.azure.com). | Copiez l'URL exacte du webhook entrant depuis le connecteur Teams ou le workflow Power Automate. |
| 401 missing_api_key | Aucun en-tête Authorization fourni et aucune session valide. | Ajoutez l'en-tête Authorization: Bearer cof_live_.... |
| 401 invalid_api_key | Clé API au préfixe invalide, introuvable ou inactive. | Vérifiez la clé ou régénérez-en une sur app.coffrify.com/developer. |
| 403 scope_missing | La clé est valide mais ne porte pas le scope notifications:manage. | Régénérez une clé incluant notifications:manage (ou workspace:manage). |
| 429 rate_limited | Quota de requêtes par minute de l'espace de travail dépassé (endpoint de classe write). | Respectez l'en-tête Retry-After puis réessayez. |
| 500 internal_error | Erreur serveur inattendue (par ex. RPC de validation indisponible). | Réessayez ; si le problème persiste, contactez le support avec le request_id. |
Voir aussi
- POST /v1/notifications/test/slack — tester un webhook Slack.
- POST /v1/notifications/test/discord — tester un webhook Discord.
- GET /v1/notifications — lister les canaux de notification configurés.