Aller au contenu

Configurer les webhooks par l'API

L’API vendors s’authentifie par jeton Bearer, fourni par l’équipe Ciklik. Chaque requête doit porter deux en-têtes :

Authorization: Bearer <jeton>
Accept: application/json

L’en-tête Accept: application/json est obligatoire. Sans lui, le serveur ne reconnaît pas la requête comme un appel API : une erreur d’authentification ou de validation revient alors sous la forme d’une redirection HTML, et non d’une réponse JSON que votre code peut interpréter.

L’API est limitée à 100 requêtes par minute et par adresse IP, et non par jeton : si plusieurs intégrations sortent par la même adresse réseau (un même serveur, un même proxy sortant), elles se partagent ce quota. Au-delà, la réponse est un code 429 dont le corps n’est pas du JSON.

Sur un site PrestaShop, un jeton est créé automatiquement lors de la configuration du module de paiement. Si vous intégrez sans disposer d’un jeton, demandez-le à l’équipe Ciklik.

POST https://app.ciklik.co/api/v3/webhooks
ChampTypeObligatoireDescription
hook_urlstring (URL)OuiURL de réception, syntaxiquement valide
event_typestringOuiClé de l’événement, voir le catalogue des événements
Fenêtre de terminal
curl -X POST https://app.ciklik.co/api/v3/webhooks \
-H "Authorization: Bearer <jeton>" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"hook_url": "https://boutique.example.com/webhooks/ciklik", "event_type": "updated_subscription"}'

Trois précisions avant d’intégrer :

  • un second appel sur le même event_type remplace l’URL précédente, sans avertissement ;
  • la nouvelle URL est prise en compte au bout d’une minute au plus ;
  • updated_change_choices n’est pas accepté par cet endpoint : cette clé n’existe pas dans la liste validée et renvoie un 422. Elle ne peut être activée que par l’équipe Ciklik.
DELETE https://app.ciklik.co/api/v3/webhooks
Fenêtre de terminal
curl -X DELETE https://app.ciklik.co/api/v3/webhooks \
-H "Authorization: Bearer <jeton>" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"event_type": "updated_subscription"}'

La réponse a la même forme que pour une déclaration : l’objet webhooks complet, sans la clé que vous venez de retirer.

La réponse de POST et de DELETE porte déjà l’objet webhooks complet : c’est le moyen fiable de connaître l’état de votre configuration après chaque appel. Il existe aussi un endpoint GET /webhooks, mais son usage est déconseillé et son résultat n’est pas garanti.

CodeSensQue faire
200Requête traitée-
401Authentification requise : jeton absent ou invalideVérifiez l’en-tête Authorization
422Paramètre invalide ou clé d’événement inconnueVérifiez hook_url et event_type
429Quota par adresse IP dépassé (corps en texte brut, pas de JSON)Espacez vos appels, restez sous 100 requêtes par minute

Le fichier /openapi/ciklik-webhooks.yaml décrit formellement l’ensemble du système : les 18 clés d’événement sous webhooks, les trois opérations de configuration décrites sur cette page, tous les schémas d’objets utilisés dans les charges utiles, et un exemple réel complet par clé d’événement.

Trois usages concrets :

  • le charger dans un client d’API (Postman, Insomnia, Bruno) pour disposer immédiatement des requêtes ;
  • générer des types (TypeScript, PHP) à partir du contrat plutôt que de les écrire à la main ;
  • le donner à un assistant de code pour qu’il écrive votre endpoint de réception directement à partir des schémas et des exemples.

Voir aussi : Comprendre un envoi de webhook pour le contrat complet des envois, et Bonnes pratiques et dépannage pour sécuriser votre URL de réception.