Adresse et format
- Toutes les routes sont sous
https://lekalao.example.com/api/v1. - Envoyez et recevez du JSON :
Content-Type: application/jsonetAccept: application/json. - Une ressource seule est enveloppée dans
data:{"data": {…}}. - Les dates sont en ISO 8601 avec fuseau :
2026-09-17T09:12:44+00:00. Sans fuseau, une date envoyée est lue dans le fuseau de l’installation (UTC par défaut). - Les montants sont des entiers dans la plus petite unité de la devise :
1250= 12,50 €. Pour le franc CFA, qui n’a pas de subdivision,15000= 15 000 FCFA.
Identifiants
Chaque ressource est désignée par sonid, qui est un uuid et jamais un numéro de ligne. Les adresses se construisent avec : /api/v1/lists/{id}/subscribers.
Les tags peuvent aussi être désignés par leur nom là où c’est naturel : tags d’un abonné, règles de segment.
Pagination
Les listes sont paginées :links.next jusqu’à ce qu’il vaille null.
Limite de débit
Chaque jeton peut faire 120 appels par minute (réglable par l’installation). Chaque réponse dit où vous en êtes :429 avec Retry-After en secondes :
Retry-After secondes avant de reprendre. Pour inscrire beaucoup de monde, utilisez le lot : un appel pour 1 000 adresses.
Idempotence
Un appel qui expire vous laisse dans le doute : la commande est-elle passée ? Ajoutez un en-têteIdempotency-Key à vos POST et PUT et renvoyez le même appel sans risque :
Choisissez une clé qui décrit l’opération (numéro de commande + action) ou un UUID généré avant le premier essai. 255 caractères au plus. Les clés sont propres à chaque équipe.
CORS
Les routesapi/* et subscribe/* acceptent les appels venant de n’importe quelle origine, sans cookies. Les en-têtes de débit et d’idempotence sont lisibles par le navigateur.