Terminer la convention
const url = 'https://example.com/entreprise/v1/conventions/example/resiliation';const options = { method: 'POST', headers: { 'X-Tenant-Id': 'example', 'X-Correlation-Id': 'example', 'Idempotency-Key': 'example', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/entreprise/v1/conventions/example/resiliation \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --header 'X-Correlation-Id: example' \ --header 'X-Tenant-Id: example' \ --data '{}'Autorisations
Section intitulée « Autorisations »Paramètres
Section intitulée « Paramètres »Paramètres (path)
Section intitulée « Paramètres (path) »L’identifiant publié de la ressource.
Paramètres (header)
Section intitulée « Paramètres (header) »Le teneur de compte — injecté et signé par la passerelle ; le corps ne choisit jamais le tenant. Une ressource d’un autre tenant est traitée comme inexistante.
La corrélation de bout en bout — reprise dans toute réponse.
Présent lorsqu’une commande en déclenche une autre.
La clé d’idempotence de la commande — le rejeu de la même clé et de la même commande retourne le résultat initial ; une charge différente sous la même clé retourne 409.
Corps de la requêterequired
Section intitulée « Corps de la requêterequired »Une intention métier. Les exigences déjà contractuelles (acte cité, clause source, déclarant et périmètre d’une enveloppe…) sont dites à l’opération.
object
Examplegenerated
{}Réponses
Section intitulée « Réponses »La commande est servie — la ressource, sa version et la corrélation ; le rejeu idempotent retourne ce même résultat.
La réponse de toute commande servie.
object
Le lien de suivi — présent sur une application de chargement (202).
Examplegenerated
{ "resource_id": "example", "version": 1, "correlation_id": "example", "suivi": "example"}Syntaxe ou champ invalide (400) — le motif nomme le champ.
object
Par exemple ENT_VERSION_CONFLICT.
object
Examplegenerated
{ "code": "example", "message": "example", "correlation_id": "example", "details": [ { "champ": "example", "motif": "example" } ]}Aucune identité présentée (401).
L’identité présentée n’a pas la famille d’accès entreprise:administration (403) — les 403 croisés entre familles sont prouvés par les tests d’assemblage. Un mandat métier manquant n’est pas un 403 : c’est un refus métier (422).
Ressource absente ou invisible — y compris une ressource d’un autre tenant (le régime de la muraille : 404, jamais 403).
object
Par exemple ENT_VERSION_CONFLICT.
object
Examplegenerated
{ "code": "example", "message": "example", "correlation_id": "example", "details": [ { "champ": "example", "motif": "example" } ]}Conflit de version, d’idempotence ou d’invariant (409).
object
Par exemple ENT_VERSION_CONFLICT.
object
Examplegenerated
{ "code": "example", "message": "example", "correlation_id": "example", "details": [ { "champ": "example", "motif": "example" } ]}Commande comprise mais impossible au regard du métier (422).
object
Par exemple ENT_VERSION_CONFLICT.
object
Examplegenerated
{ "code": "example", "message": "example", "correlation_id": "example", "details": [ { "champ": "example", "motif": "example" } ]}Quota du tenant atteint (429).
object
Par exemple ENT_VERSION_CONFLICT.
object
Examplegenerated
{ "code": "example", "message": "example", "correlation_id": "example", "details": [ { "champ": "example", "motif": "example" } ]}Dépendance indisponible, sans effet partiel (503).
object
Par exemple ENT_VERSION_CONFLICT.
object
Examplegenerated
{ "code": "example", "message": "example", "correlation_id": "example", "details": [ { "champ": "example", "motif": "example" } ]}