Aller au contenu

Accorder une remise commerciale sur des lignes du folio (RRR — ADR-00D113)

POST
/v1/folios/{id}/discount
curl --request POST \
--url https://example.com/v1/folios/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/discount \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "targetEntryIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "pct": 10, "amountCents": "1500", "reason": "Geste commercial" }'

Poste une (des) écriture(s) discount NÉGATIVE(s) contre-écrivant une fraction de recettes postées (NF203 append-only). Deux modes exclusifs : pct (% appliqué au taux EXACT de chaque cible, une ligne par cible) OU amountCents (montant TTC fixe, cibles MONO-TAUX obligatoire). PLAFOND DE RÔLE (D-U3) : manager/director illimités ; tout autre rôle (réceptionniste) est plafonné (% max ET € max) — fail-closed si aucun plafond configuré. businessDate dérivée côté SERVEUR (ADR-00D78). Idempotency-Key obligatoire (8–200 car.). Permission : folio.discount (réceptionniste + manager + director).

id
required
string format: uuid

Identifiant du folio

Idempotency-Key
required
string

Clé d’idempotence OBLIGATOIRE (8–200 car.) — anti-double-remise

Remise. Mode % (pct 0<pct≤100) OU montant fixe (amountCents TTC en centimes, bigint string). Exactement un des deux.

Media type application/json
object
targetEntryIds
required

Lignes recette actives à remiser

Array<string>
>= 1 items
pct

Pourcentage (0<pct≤100, 2 décimales max). EXCLUSIF avec amountCents.

number
<= 100
Example
10
amountCents

Montant TTC fixe en centimes (bigint string, > 0). EXCLUSIF avec pct — cibles mono-taux.

string
Example
1500
reason
required

Motif obligatoire (RRR accordés)

string
>= 1 characters <= 500 characters
Example
Geste commercial

Remise enregistrée — lignes discount négatives ajoutées (NF203)

Media type application/json
object
data
required
object
folioId
required
string format: uuid
discountEntryIds
required
Array<string>
totalDiscountHtCents
required

Total HT remisé (magnitude, bigint string)

string
totalDiscountTaxCents
required

Total TVA remisée (magnitude, bigint string)

string
totalDiscountTtcCents
required

Total TTC remisé (magnitude, bigint string)

string
businessDate
required
string format: date
Example generated
{
"data": {
"folioId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"discountEntryIds": [
"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
],
"totalDiscountHtCents": "example",
"totalDiscountTaxCents": "example",
"totalDiscountTtcCents": "example",
"businessDate": "2026-04-15"
}
}

Body invalide (mode ambigu, cible vide, motif manquant) ou remise à montant fixe multi-taux

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Non authentifié

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Permission refusée, périmètre non vérifiable, OU plafond de rôle dépassé / non configuré (fail-closed)

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Ressource introuvable

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Folio non-open ou remise dépassant le montant disponible de la ligne

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}