Créer une API sur mesure ne veut pas dire publier quelques routes HTTP devant une base de données. Le vrai sujet est de décider quelles capacités métier peuvent être ouvertes, à qui, avec quels droits, quelles limites et quelles preuves de traitement.
La douleur devient concrète lorsqu’un partenaire relance une commande après un timeout, obtient un second objet, puis ne peut transmettre au support qu’un message 500. Le coût caché réunit doublon logistique, correction financière, enquête technique et perte de confiance. Le contrat doit empêcher ou expliquer ce scénario avant le premier client externe.
Une API devient vite un produit interne ou externe. Elle a des utilisateurs, des promesses, des incidents, une documentation, une compatibilité à préserver et des coûts de support quand les réponses ne sont pas assez explicites.
La page création d’API sur mesure sert à cadrer ce chantier côté Dawap : périmètre métier, architecture, OpenAPI, sécurité, run, portail développeur éventuel et premier lot exploitable en production.
Le bon angle n’est donc pas “combien d’endpoints faut-il développer ?”. La bonne question est plutôt : quelles opérations méritent un contrat stable, une responsabilité claire et une capacité de reprise quand un consommateur ou un flux critique se trompe. Notre expertise en intégration API relie ces choix de produit à la réalité du SI et du run.
Le signal de bascule
Si le besoin parle déjà de droits, clients externes, portail, logs, sandbox, versioning ou garanties de compatibilité, ce n’est plus une simple intégration. Il faut cadrer un produit API exploitable.
Propriétaire métier
Attribuer chaque promesse exposée
Une API sur mesure doit avoir un propriétaire métier, pas seulement une équipe technique. Ce propriétaire décide ce qui peut être exposé, ce qui doit rester interne, ce qui engage l’entreprise et ce qui peut être refusé.
Sans propriétaire clair, l’API devient un inventaire de demandes. Le premier partenaire veut un champ, le second demande une exception, le troisième contourne un statut, et personne ne sait si le contrat reflète encore la réalité métier.
Le bon cadrage nomme donc un responsable par capacité critique : commande, stock, facture, document, compte client, statut de dossier, paiement ou événement. C’est ce qui permet de trancher quand une demande externe contredit une règle interne.
Capacités exposées
Partir des actions plutôt que des tables
Le périmètre doit partir des capacités métier : créer une commande partenaire, consulter un stock vendable, récupérer un statut, déposer un document, demander un devis, déclencher une expédition ou synchroniser une facture.
Le piège consiste à exposer la structure interne du SI. Un endpoint calqué sur une table révèle souvent trop de détails, change trop souvent et oblige le consommateur à comprendre l’organisation interne.
Une capacité bien nommée protège au contraire le SI. Elle expose une intention stable, masque les détails internes et donne au support une phrase simple pour expliquer ce que l’API garantit.
Contrat OpenAPI
Faire du schéma un objet de discussion et de test
La spécification OpenAPI décrit les capacités d’une API HTTP dans un format standard. Dans un projet sur mesure, elle sert surtout de contrat entre produit, back-end, front, QA, partenaires et support.
Un contrat OpenAPI utile ne se limite pas aux chemins. Il décrit paramètres, corps de requête, réponses, schémas, erreurs, sécurité, exemples, statuts et contraintes de compatibilité.
La documentation Swagger / OpenAPI illustre aussi l’intérêt d’un format outillé : documentation interactive, génération de clients, tests de contrat et discussion plus concrète sur les breaking changes.
Ressources et statuts
Les ressources doivent être pensées pour le consommateur de l’API. Une commande partenaire n’a pas forcément les mêmes champs, statuts et transitions qu’une commande interne.
Le cadrage doit préciser source de vérité, fraîcheur attendue, champs obligatoires, champs calculés, statuts possibles et transitions autorisées. Un statut flou devient vite un incident de support.
Le signal faible à surveiller est la multiplication des champs “autre”, “commentaire” ou “custom”. Ils dépannent au début, mais ils rendent les contrats instables et les reprises beaucoup plus difficiles.
Droits et scopes
Limiter chaque client à son usage vérifiable
Les droits doivent être pensés avant les payloads. Une API partenaire ne doit pas hériter des privilèges d’une API interne simplement parce que les deux consomment les mêmes données.
Les scopes doivent correspondre à des usages : lire un statut, créer une demande, déposer un document, mettre à jour une expédition, consulter un stock ou récupérer une facture. Chaque scope doit pouvoir être expliqué et révoqué.
Le point de vigilance est la tentation du scope large pour aller vite. Il raccourcit le développement initial, mais complique les audits, les rotations de clés, les incidents et les restrictions futures.
Erreurs fréquentes, réponses et idempotence
Le modèle d’erreur doit distinguer validation fonctionnelle, refus de droit, conflit de version, limite de quota, indisponibilité temporaire et incident interne. Tout renvoyer en 400 ou 500 rend la reprise aveugle.
Le format doit rester stable : code interne, message lisible, champ concerné, identifiant de corrélation, caractère rejouable ou non et action attendue. Cette discipline économise beaucoup plus de support qu’un long document non relié aux réponses réelles.
L’idempotence devient obligatoire dès qu’une opération crée une commande, un paiement, une réservation ou un document. Un retry réseau ne doit pas créer deux objets. La clé d’idempotence doit être documentée, conservée et visible dans les traces.
Logs et preuves
Une API sur mesure doit prouver ce qu’elle a reçu, validé, refusé ou écrit. Les logs utiles relient client, endpoint, opération, payload résumé, statut métier, durée, corrélation et décision de reprise.
Le support n’a pas besoin d’un dump technique illisible. Il a besoin de savoir quel consommateur a appelé quoi, quel objet métier est touché, quelle règle a refusé la demande et si une reprise est possible.
Le lien avec l’observabilité est direct : l’article observabilité API, logs et traces complète cette logique côté incidents, support et finance.
Versioning
Faire évoluer le contrat sans déplacer le risque
Le versioning protège les consommateurs et l’équipe qui maintient l’API. Une évolution compatible peut vivre dans la même version ; un changement de sens métier, de champ obligatoire ou de statut doit être traité comme un changement de contrat.
Le calendrier de dépréciation doit être clair : version concernée, date cible, alternative, consommateurs actifs et méthode de migration. Sans calendrier, les anciennes versions deviennent une dette permanente.
Le bon arbitrage consiste à refuser les breaking changes déguisés. Renommer un champ, changer une enum ou modifier une règle de calcul peut casser un intégrateur même si l’URL reste identique.
Sandbox et SLA
Une sandbox est utile si elle permet de tester des cas réalistes : succès, refus de droit, erreur fonctionnelle, doublon, quota, indisponibilité simulée et reprise après incident.
Les SLA doivent rester compatibles avec l’architecture. Promettre un temps de réponse ou une fraîcheur que le SI ne peut pas garantir crée une dette commerciale et technique.
Le go-live doit valider plusieurs points avant ouverture :
- Chaque endpoint a un propriétaire métier, un propriétaire technique et une règle de support.
- Chaque opération critique a une règle d’idempotence et une preuve de non-doublon.
- Chaque erreur actionnable possède un code stable, un message lisible et un statut rejouable ou non.
- Chaque scope est justifié par un usage réel, avec rotation et révocation prévues.
- Chaque version a une documentation, une compatibilité attendue et une stratégie de dépréciation.
Pour qui créer une API — et quand ne pas le faire
Une API sur mesure devient rationnelle quand plusieurs consommateurs doivent appliquer la même capacité métier avec des garanties stables : partenaires qui déposent des commandes, applications qui interrogent un stock vendable, clients qui récupèrent leurs documents ou équipes internes qui déclenchent une opération contrôlée. Le gain vient de la répétition du contrat, pas du prestige d’une nouvelle interface technique.
Elle est particulièrement utile lorsqu’une action doit survivre à plusieurs canaux. Une commande créée depuis un portail B2B et une commande envoyée par un partenaire doivent produire les mêmes contrôles, la même trace et le même statut. L’API devient alors une frontière métier : elle protège les règles du domaine et évite que chaque canal les réimplémente avec des écarts.
Il faut différer si le processus change toutes les semaines, si aucune source de vérité n’est reconnue ou si un seul batch interne suffit. Dans ce cas, un service plus simple ou une intégration ciblée réduit la dette. Le signal d’arrêt est clair : si personne ne peut nommer le propriétaire d’une opération, son résultat attendu et le support qui la reprendra, publier l’endpoint rend seulement l’ambiguïté accessible à distance.
En réalité, une API plus petite peut être plus difficile à exploiter si elle ne porte ni états ni preuves. Trois endpoints ambigus créent davantage de dette que quinze capacités bien bornées. Le choix ne se fait donc pas sur le nombre de routes : il dépend de la stabilité du sens métier, de la gravité d’un double effet et de la capacité réelle du support à diagnostiquer.
Exécuter une commande avec un contrat de reprise
Valider l’entrée avant tout effet métier
Prenons POST /partner-orders. L’entrée contient la référence partenaire, le compte client, la devise, les lignes et une clé d’idempotence. La couche HTTP valide forme, taille et authentification ; le domaine contrôle client actif, SKU autorisé, quantité, prix applicable et doublon métier. Chaque refus porte un code stable, le champ concerné, la corrélation et l’indication « corriger » ou « réessayer ».
Le contrat distingue une requête invalide d’une commande refusée. Une erreur de schéma retourne immédiatement une réponse sans mutation. Un encours dépassé peut créer un dossier en attente avec un identifiant consultable, selon la promesse choisie. Cette différence évite qu’un partenaire relance aveuglément une opération déjà enregistrée et donne au support une sortie observable plutôt qu’un message générique.
Publier la sortie et compenser sans doublon
Après acceptation, le service écrit commande et clé d’idempotence dans la même transaction, puis publie l’événement de traitement via une outbox. Un retry avec la même clé relit la sortie existante ; il ne crée pas une seconde commande. Le worker porte sa propre clé par effet — réservation, facture ou notification — et journalise entrée, sortie, tentative, dépendance et durée.
Si l’ERP est indisponible, la file conserve l’état accepté et applique un backoff. Le seuil de tentatives ouvre une alerte avec un owner et un runbook. Le rollback ne supprime pas silencieusement la commande : il exécute une compensation prévue, par exemple libérer une réservation, et garde le statut explicite. Cette traçabilité permet de reprendre le flux sans édition directe en base.
Recetter l’API contre les pannes et les abus
Contredire le scénario nominal dans la sandbox
La recette commence par les cas que le happy path masque : même clé avec un payload différent, commande reçue deux fois, timeout après écriture, scope insuffisant, client désactivé pendant le traitement, dépendance lente et événement livré dans le désordre. Chaque scénario possède une sortie attendue et une preuve à retrouver. Un test est incomplet s’il vérifie seulement le code HTTP sans contrôler l’effet métier.
La sandbox fournit des identifiants déterministes, une horloge maîtrisée et des erreurs simulables. Le partenaire peut provoquer quota, conflit de version et indisponibilité sans attendre un incident réel. Les données sont réalistes mais non sensibles ; elles couvrent les statuts et transitions du contrat. Un consommateur qui réussit la recette démontre ainsi sa capacité de reprise, pas uniquement sa capacité d’envoyer du JSON valide.
Prouver sécurité, quotas et observabilité
Les tests d’autorisation essaient chaque scope sur une ressource autorisée, une ressource d’un autre tenant et une action interdite. La rotation de clé est jouée sans coupure ; la révocation doit prendre effet dans le délai convenu. Les payloads trop grands, les rafales et les filtres coûteux vérifient que les limites protègent le service sans transformer tous les clients en victimes d’un seul consommateur.
Enfin, le support reçoit seulement un identifiant de corrélation et doit retrouver client, endpoint, statut métier, dépendance fautive et prochaine action. Les logs masquent secrets et données personnelles tout en conservant les preuves. Un signal faible apparaît lorsque la métrique globale reste verte mais qu’une opération critique accumule les retries ; le monitoring suit donc erreurs et latence par capacité, client et résultat métier.
Décision d’ouverture par preuves
Le premier lot doit être volontairement étroit : un consommateur, une capacité critique et un volume borné. Il est ouvert seulement si le contrat est signé par le métier, si le client passe la recette contradictoire et si le support exécute la reprise. Ajouter dix endpoints avant cette preuve multiplie les inconnues et rend chaque incident plus difficile à attribuer.
- À faire d’abord : nommer owner, capacité, source de vérité, entrée, sortie et états métier.
- À tester ensuite : doublon, timeout après mutation, refus de droit, quota et rollback.
- À mesurer : erreurs par code, latence par capacité, retries, files en attente et délai de résolution.
- À différer : portail complet, nouveaux clients et version supplémentaire avant la stabilité du premier contrat.
Un seuil de sortie peut imposer zéro doublon sur la campagne d’idempotence, 100 % des erreurs critiques corrélées, une révocation de credential vérifiée et un runbook exécuté par une personne extérieure au développement. Si l’une de ces preuves manque, alors le pilote continue. En revanche, le volume peut augmenter quand les alertes déclenchent une action connue et que la reprise conserve l’historique.
Le dossier de go-live rassemble OpenAPI figée, matrice de scopes, résultats de recette, politique de versioning, seuils, calendrier de support et procédure d’incident. Il devient la référence commune lorsque le premier partenaire demande une exception. Le propriétaire peut accepter une évolution, la reporter ou la refuser en mesurant son impact sur tous les consommateurs existants.
Cas concret : un partenaire envoie la référence PO-4821, reçoit un timeout après huit secondes puis recommence avec la même clé. La recette exige un unique identifiant de commande, une réponse identique au retry et une corrélation qui montre l’écriture initiale. Le support retrouve ensuite client, scope, effet métier et tentative sans consulter les données sensibles du payload.
Guides complémentaires pour le contrat et le run
Le cadrage contract-first se prolonge avec OpenAPI et versioning, qui aide à qualifier les changements compatibles, les migrations et les tests de contrat. Pour les opérations à effet unique, l’idempotence des commandes et paiements détaille les clés, les timeouts ambigus et la prévention des doublons.
La préparation du support se complète avec l’observabilité API. Ces pratiques relient corrélation, traces et coût opérationnel ; elles ne remplacent ni le propriétaire métier ni la recette du contrat exposé.
Répéter une migration et le retour d’une dépendance
Une migration de version peut ensuite être répétée sur un consommateur témoin. L’équipe publie le nouveau schéma, observe les appels encore servis par l’ancienne version et provoque une erreur supprimée dans le futur contrat. Le client doit identifier le changement depuis la documentation, migrer sa fixture et conserver le même résultat métier. Le retrait reste bloqué tant qu’un credential actif ou un trafic réel utilise encore l’ancienne route.
Le test inclut aussi une dépendance lente et un circuit breaker ouvert. Le service retourne une erreur stable, préserve l’idempotence et n’engorge pas la queue avec des retries sans limite. Lorsque la dépendance revient, un lot borné est rejoué avant le trafic nominal. Cette reprise progressive vérifie débit, monitoring et capacité de repli sans transformer le retour à la normale en second incident.
Le propriétaire signe enfin la liste des consommateurs actifs et la date du prochain contrôle de compatibilité, afin que le contrat reste gouverné après le lancement.
Conclusion : API opérable
Une API sur mesure réussie n’est pas seulement disponible. Elle est compréhensible, sécurisée, versionnée, observable et opérable par les équipes qui devront la maintenir après le lancement.
Les endpoints ne sont que la partie visible. La vraie valeur vient du contrat : capacités métier, droits, erreurs, idempotence, logs, preuves, sandbox et règles de compatibilité.
Le meilleur moment pour cadrer ces sujets est avant le premier consommateur externe. Après le go-live, chaque ambiguïté devient plus coûteuse, parce qu’elle touche des intégrateurs, du support et parfois des opérations critiques.
Pour relier ce produit API à ses consommateurs, à ses dépendances et à son exploitation quotidienne, notre accompagnement en intégration API cadre le premier contrat, la recette et le passage en production avec les équipes métier, sécurité et support.