Table of Contents

API HTTP du webhook

Les routes exposées par SESAR Webhook, leurs corps et leurs codes de réponse. Les noms de propriétés des réponses sont en PascalCase, et les propriétés nulles sont omises.

Requête de SESAR

Les routes de traitement attendent le corps que SESAR envoie, en application/json :

{
  "args": {
    "HashKey": "<valeur d'authentification>",
    "CryptedObject": "<manifeste chiffré, en Base64>"
  }
}

Un corps vide ou un JSON invalide reçoit une erreur 400, avant tout traitement.

Réponse de traitement

Les routes simples renvoient un IntegrationResult :

Propriété Type Rôle
Success booléen Résultat du traitement
Message texte Résumé
ErrorDetails texte Détail de l'échec ; peut contenir une réponse brute du système cible ou une pile d'appels
ConnectorId texte Connecteur ou gestionnaire qui a traité le dépôt
Timestamp date UTC Date du résultat
ExternalReferenceId texte Référence dans le système cible, par exemple l'identifiant de l'enregistrement créé
Metadata objet Données complémentaires, par exemple HandlerId et HandlerVersion
ItemsProcessed, ItemsFailed entiers Compteurs renseignés par le connecteur

Routes de traitement

POST /api/webhook/handler/{handlerId}

Traite le dépôt avec un gestionnaire. C'est l'adresse recommandée.

Code Quand
200 Traitement réussi (Success à true)
400 Corps sans args
401 HashKey invalide
404 Gestionnaire inconnu. Ce contrôle a lieu avant celui du HashKey.
500 Échec du traitement, du déchiffrement ou de la lecture du manifeste, ou application mal initialisée

POST /api/webhook/{connectorId}

Traite le dépôt avec un connecteur intégré. POST /api/webhook, sans identifiant, utilise DefaultConnectorId.

Code Quand
200 Traitement réussi
400 Corps sans args
404 Connecteur inconnu, avant le contrôle du HashKey
500 Échec du traitement, HashKey invalide (Message : Authentication failed), ou application mal initialisée

Sur cette route, un HashKey invalide reçoit donc 500, et non 401.

Routes multiples

Route Traitement Réponse
POST /api/webhook/multi?connectors=id1,id2 Connecteurs l'un après l'autre Toujours 200 : {"Success": true, "Results": [...]}, même si tous ont échoué, y compris pour un HashKey invalide
POST /api/webhook/handler/multi?handlers=id1,id2 Gestionnaires en parallèle 200 : {"Success", "TotalHandlers", "Processed", "Failed", "Results"}. Success vaut true si tous les identifiants sont connus et qu'au moins un a été traité, quel que soit le résultat. Failed ne compte que les identifiants inconnus. 401 si le HashKey est invalide.

Évitez ces routes avec SESAR :

  • elles répondent 200 même en cas d'échec, et SESAR ne renvoie donc jamais un dépôt mal traité ;
  • connectors= n'enlève pas les espaces : écrivez id1,id2, pas id1, id2 ;
  • un connecteur qui n'a encore jamais été appelé par sa propre adresse y est créé sans ses réglages, et échoue.

Routes de gestion

Attention

Ces routes n'exigent aucune authentification. Réservez-les au serveur ou à votre réseau d'administration : voir Sécuriser le déploiement.

Route Réponse
GET /api/connectors Liste de ConnectorInfo, connecteur generic compris. IsEnabled reflète la clé Enabled, sans effet sur le traitement ; IsConfigured vaut toujours false.
GET /api/connectors/{id} Le connecteur, ou 404
POST /api/connectors/{id}/test 200 : {"Success", "Message", "ConnectorId"}, avec Error en cas d'exception. Déclenche les appels d'authentification du connecteur.
GET /api/handlers Liste {"HandlerId", "DisplayName", "Description", "Version", "IsEnabled", "WebhookUrl"}
GET /api/handlers/{id} Le gestionnaire, ou 404
POST /api/handlers/{id}/test 200 : {"Success", "Message", "HandlerId"}, avec Error en cas d'exception. Appelle ValidateConfigurationAsync, puis TestConnectionAsync.
POST /api/handlers/rescan Relit le dossier par défaut des gestionnaires, sans tenir compte de HandlersPath : {"Success", "Message", "Handlers"}
GET /api/health Toujours {"Status": "Healthy", "Timestamp": "..."}, même si l'application ne peut rien traiter
GET /api/health/status État détaillé : initialisation (ProcessorInitialized, InitializationError), diagnostic du fichier de secrets, connecteurs

Routes de débogage

Actives seulement si EnableDebugEndpoints vaut true. Sinon, elles répondent 400. Ne les activez jamais en production : elles traitent un manifeste en clair, sans HashKey.

Route Rôle
GET /api/debug/sample-manifest Un manifeste vide, à compléter pour vos essais
POST /api/debug/connector/{connectorId} Traite le manifeste en clair reçu dans le corps, sans enveloppe args
POST /api/debug/handler/{handlerId} Même chose avec un gestionnaire