Aller au contenu

Transférer une charge vers un autre folio (group billing, ADR-D24 T15b)

POST
/v1/folios/{id}/entries/{entryId}/transfer
curl --request POST \
--url https://example.com/v1/folios/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/entries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/transfer \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "targetFolioId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "Group billing master" }'

Déplace une écriture du folio source vers un folio cible dans la même transaction NF203. L’entrée source est marquée transferred (jamais supprimée — audit). Un miroir exact est posté sur le folio cible. Idempotency-Key OBLIGATOIRE (8–200 car.) — la clé transfer:<entryId> est stable côté domaine. Permission : folio.transfer (manager + directeur). IDOR : les deux folios doivent être dans le périmètre de l’acteur.

id
required
string format: uuid

Folio source

entryId
required
string format: uuid

Écriture à transférer

Idempotency-Key
required
string

Clé d’idempotence OBLIGATOIRE (8–200 car.)

Media type application/json
object
targetFolioId
required

Folio cible (group master ou sub-folio)

string format: uuid
reason
required

Motif NF203 du transfert

string
>= 1 characters <= 200 characters
Example
Group billing master

Charge transférée — entrée source transferred, miroir sur folio cible

Media type application/json
object
data
required
object
sourceFolioId
required
string format: uuid
targetFolioId
required
string format: uuid
originalEntryId
required
string format: uuid
mirrorEntryId
required
string format: uuid
Example generated
{
"data": {
"sourceFolioId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"targetFolioId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"originalEntryId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"mirrorEntryId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}
}

Corps ou paramètres invalides

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 ou IDOR (folio source ou cible hors périmètre)

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 source non-open, écriture déjà transférée/voidée, ou folio cible non-open

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
}