Aller au contenu

obligations-de-reglement

Événement (AsyncAPI) — version 0.2.0. Producteur : carnet-ordres. Consommateurs déclarés : banque-flux-financiers.

LES MOUVEMENTS D’ESPÈCES QUE L’EXÉCUTION D’UN ORDRE REND DUS. UNE OBLIGATION DE RÈGLEMENT EST UNE DEMANDE, JAMAIS UN CONSTAT : elle ne vaut ni mouvement, ni écriture, ni position. Le carnet ATTESTE LES TITRES, la banque ATTESTE LES ESPÈCES, et aucun ne se déduit de l’autre. AUCUNE OBLIGATION N’EST PUBLIÉE AVANT L’EXÉCUTION QUI LA FONDE — une intention n’est pas un fait générateur.

asyncapi: 3.0.0
info:
title: carnet-ordres — les obligations de règlement
version: 0.2.0
x-ruptures:
- version: 0.2.0
rupture: "propriété retirée : tenant"
motif: >-
Isolation forte par tenant — aucun identifiant de tenant n'est transporté ;
l'appartenance est celle de l'installation (précédent instruments 0.4.0).
description: >-
LES MOUVEMENTS D'ESPÈCES QUE L'EXÉCUTION D'UN ORDRE REND DUS. UNE OBLIGATION DE RÈGLEMENT
EST UNE DEMANDE, JAMAIS UN CONSTAT : elle ne vaut ni mouvement, ni écriture, ni position. Le
carnet ATTESTE LES TITRES, la banque ATTESTE LES ESPÈCES, et aucun ne se déduit de l'autre.
AUCUNE OBLIGATION N'EST PUBLIÉE AVANT L'EXÉCUTION QUI LA FONDE — une intention n'est pas un
fait générateur.
x-producteurs:
- carnet-ordres
x-consommateurs:
- banque-flux-financiers
defaultContentType: application/json
channels:
obligationsDeReglement:
address: carnet-ordres.obligation-reglement
description: >-
Les obligations de règlement vers la banque et flux financiers. UN CANAL PROPRE : les
retours vers Opérations et les comptes rendus vers la tenue de compte ont les leurs —
trois consommateurs, trois rythmes, trois canaux.
messages:
reglementSouscriptionDu: { $ref: '#/components/messages/reglementSouscriptionDu' }
produitRachatAttendu: { $ref: '#/components/messages/produitRachatAttendu' }
reglementTransactionDu: { $ref: '#/components/messages/reglementTransactionDu' }
obligationAnnulee: { $ref: '#/components/messages/obligationAnnulee' }
operations:
publierLesObligationsDeReglement:
action: send
channel: { $ref: '#/channels/obligationsDeReglement' }
summary: >-
Annoncer les espèces dues à la place au titre d'une exécution. Le carnet NE DEMANDE
JAMAIS UN PAIEMENT À UN ÉPARGNANT : cela reste au domaine Opérations.
messages:
- $ref: '#/channels/obligationsDeReglement/messages/reglementSouscriptionDu'
- $ref: '#/channels/obligationsDeReglement/messages/produitRachatAttendu'
- $ref: '#/channels/obligationsDeReglement/messages/reglementTransactionDu'
- $ref: '#/channels/obligationsDeReglement/messages/obligationAnnulee'
components:
messages:
reglementSouscriptionDu:
name: reglement-souscription-du
title: Règlement de souscription dû
summary: Des espèces sont à verser au fonds ou à la contrepartie au titre d'une souscription exécutée.
contentType: application/json
payload: { $ref: '#/components/schemas/obligation' }
produitRachatAttendu:
name: produit-rachat-attendu
title: Produit de rachat attendu
summary: Des espèces sont attendues en encaissement au titre d'un rachat exécuté.
contentType: application/json
payload: { $ref: '#/components/schemas/obligation' }
reglementTransactionDu:
name: reglement-transaction-du
title: Règlement de transaction dû
summary: >-
Les espèces d'un achat ou d'une vente de titres, dans un dénouement livraison contre
paiement ou franco.
contentType: application/json
payload: { $ref: '#/components/schemas/obligation' }
obligationAnnulee:
name: obligation-annulee
title: Obligation annulée
summary: >-
UNE DEMANDE NOUVELLE, PAS UN RETRAIT : un message émis ne se dé-publie pas. Elle cite
l'obligation visée et lui succède.
contentType: application/json
payload: { $ref: '#/components/schemas/obligationAnnulee' }
schemas:
enveloppe:
type: object
required: [evenementId, typeEvenement, versionContrat, dateEvenement, producteur,
obligationRef, cleIdempotence]
properties:
evenementId:
type: string
description: >-
Identifiant unique — LA CLÉ D'IDEMPOTENCE DES CONSOMMATEURS. La livraison est au
moins une fois : le rejeu ne doit produire qu'un effet.
typeEvenement: { type: string }
versionContrat: { type: string }
dateEvenement: { type: string, format: date-time }
producteur: { type: string, const: carnet-ordres }
sequenceEntite: { type: integer }
obligationRef:
type: string
description: >-
L'identifiant de l'obligation. C'EST LUI QUI CORRÈLE LES DEUX VOLETS : le suspens
espèces chez la banque et le suspens de dénouement chez le carnet le citent tous
deux.
cleIdempotence: { type: string }
obligation:
allOf:
- $ref: '#/components/schemas/enveloppe'
- type: object
required: [sens, montantCt, devise, contrepartieRef, dateReglementAttendue,
centralisationRef, nbOrdresCouverts, executionRef]
properties:
sens:
type: string
enum: [DECAISSEMENT, ENCAISSEMENT]
description: >-
DECAISSEMENT pour une souscription ou un achat, ENCAISSEMENT pour un rachat
ou une vente — vu depuis le teneur de compte.
montantCt:
type: integer
format: int64
description: >-
En CENTIMES. LE MONTANT N'EXISTAIT PAS AVANT L'EXÉCUTION : c'est exactement
pour cela que la jambe espèces d'un rachat suit la jambe titres, et non
l'inverse. Fil rouge de la campagne : 51227644 (512 276,44 €).
devise: { type: string }
contrepartieRef:
type: string
description: >-
Identifiant publié de la contrepartie de place. AUCUNE COORDONNÉE BANCAIRE
ICI : la coordonnée exécutable appartient à la banque, qui la résout et la
fige à l'exécution.
dateReglementAttendue:
type: string
format: date
description: >-
Dérivée de la date de centralisation par le profil de chaîne, et BORNÉE :
dix jours ouvrés au plus entre centralisation et règlement-livraison
(R-ORDRE-DELAI-REGLEMENT).
centralisationRef:
type: string
description: >-
LA MAILLE EST L'OBLIGATION, PAS L'ORDRE : un virement par centralisation et
par contrepartie, non un par porteur — c'est ainsi que le règlement se fait.
nbOrdresCouverts:
type: integer
description: >-
Le nombre d'ordres individuels couverts, POUR CONTRÔLE. Le message ne porte
jamais leur détail : la banque n'a pas à connaître les porteurs.
executionRef: { type: string }
supportRef: { type: string }
dateVl: { type: string, format: date }
profilReglement:
type: string
description: >-
Le profil de dénouement qui dit quelles preuves sont exigées :
FONDS_COMPTE_EMISSION, LIVRAISON_CONTRE_PAIEMENT, LIVRAISON_FRANCO,
GRE_A_GRE.
obligationAnnulee:
allOf:
- $ref: '#/components/schemas/enveloppe'
- type: object
required: [obligationVisee, motif]
properties:
obligationVisee: { type: string }
motif:
type: string
description: 'Codifié. On ne rappelle pas une obligation en silence.'