evenement-de-negociabilite
Événement (AsyncAPI) — version 0.2.0. Producteur : instruments. Consommateurs déclarés : carnet-ordres, operations.
Les faits des restrictions de négociabilité — posée, levée. Hors cycle de vie : une restriction touche des capacités (souscription, rachat…), jamais l’état de l’instrument. Enveloppe CloudEvents 1.0.2 en mode structuré JSON ; aucun identifiant de tenant n’est transporté. Unicité du fait : (restriction, type_de_fait).
La spécification
Section intitulée « La spécification »asyncapi: 3.0.0info: title: instruments — l'événement de négociabilité version: 0.2.0 x-ruptures: - version: 0.2.0 rupture: "propriété retirée : data.categorie ; la portée se réduit à (instrument, vehicule)" motif: >- Fusion arbitrée le 2026-08-13 (journal des décisions) : une catégorie de parts différenciée EST un instrument — une restriction propre à une catégorie se pose sur son instrument. description: >- Les faits des restrictions de négociabilité — posée, levée. Hors cycle de vie : une restriction touche des capacités (souscription, rachat…), jamais l'état de l'instrument. Enveloppe CloudEvents 1.0.2 en mode structuré JSON ; aucun identifiant de tenant n'est transporté. Unicité du fait : (restriction, type_de_fait). x-producteurs: - instruments x-consommateurs: - composant: carnet-ordres - composant: operationsdefaultContentType: application/cloudevents+jsonchannels: negociabilite: address: instruments.negociabilite description: >- Canal logique des restrictions de négociabilité. L'ordre n'est garanti que par producteur (sequence strictement croissante par instrument), jamais entre producteurs. messages: restrictionPosee: $ref: '#/components/messages/restrictionPosee' restrictionLevee: $ref: '#/components/messages/restrictionLevee'operations: publierLaNegociabilite: action: send channel: $ref: '#/channels/negociabilite' summary: La pose et la levée publient leur fait au moment où elles prennent effet, retenu en boîte d'envoi. messages: - $ref: '#/channels/negociabilite/messages/restrictionPosee' - $ref: '#/channels/negociabilite/messages/restrictionLevee'components: messages: restrictionPosee: name: restriction-posee title: Restriction posée contentType: application/cloudevents+json payload: allOf: - $ref: '#/components/schemas/enveloppeCloudEvents' - type: object required: [data] properties: type: { const: fr.epargne.instruments.restriction.posee.v1 } dataschema: { const: 'urn:schema:epargne:instruments:restriction:1' } data: { $ref: '#/components/schemas/restriction' } restrictionLevee: name: restriction-levee title: Restriction levée summary: La levée borne la période — la restriction reste lisible à jamais. contentType: application/cloudevents+json payload: allOf: - $ref: '#/components/schemas/enveloppeCloudEvents' - type: object required: [data] properties: type: { const: fr.epargne.instruments.restriction.levee.v1 } dataschema: { const: 'urn:schema:epargne:instruments:restriction:1' } data: allOf: - $ref: '#/components/schemas/restriction' - type: object required: [au] schemas: enveloppeCloudEvents: type: object # Les consommateurs sont tolérants : un champ inconnu s'ignore. required: [specversion, id, source, type, subject, time, datacontenttype, dataschema, sequence, data] properties: specversion: { type: string, const: '1.0' } id: { type: string, minLength: 1, description: L'identifiant unique du fait — la clé d'idempotence. } source: { type: string, const: 'urn:epargne:instruments' } type: { type: string, minLength: 1 } subject: type: string minLength: 1 description: L'identifiant publié de l'instrument dont la négociabilité change. time: { type: string, format: date-time, description: L'instant de la retenue du fait (UTC). } datacontenttype: { type: string, const: application/json } dataschema: { type: string, format: uri-reference } sequence: type: integer minimum: 1 description: Extension — la séquence par instrument chez le producteur, strictement croissante. data: true restriction: type: object required: [restriction, instrument, type_restriction, capacites_touchees, du] properties: restriction: { type: string, description: L'identifiant de la restriction — le fait de levée le référence. } instrument: { type: string, description: L'identifiant publié — répété depuis le sujet. } type_restriction: type: string enum: [ferme_aux_souscriptions, ferme_aux_rachats, suspendu, ferme_aux_nouveaux_versements] capacites_touchees: type: array minItems: 1 items: type: string enum: [souscription, rachat, arbitrage_entrant, arbitrage_sortant, transfert, affectation_ccb] portee: type: string enum: [instrument, vehicule] default: instrument du: { type: string, format: date } heure_effet: { type: string, pattern: '^([01][0-9]|2[0-3]):[0-5][0-9]$' } fuseau: { type: string, description: Le fuseau IANA de l'heure d'effet. } au: { type: string, format: date, description: La borne de levée, exclue — portée par le fait de levée. } source: type: string enum: [document, saisie, flux_de_place] description: D'où la restriction est établie. urgence: { type: boolean, description: Posée par le circuit d'urgence — la validation a posteriori est en cours. } motif: type: string description: Le motif, quand il circule — celui d'une mesure de conformité ne circule jamais.