Aller au contenu

consultation-du-carnet

Interface synchrone (OpenAPI) — version 0.2.0. Producteur : carnet-ordres.

CE QUE LE DOMAINE DONNE À VOIR DE SON TRAVAIL, dimensionné sur le travail réel d’un gestionnaire d’ordres. IL NE SERT JAMAIS LE SCHÉMA INTERNE : des vues, en identifiants publiés. AUCUNE DONNÉE DE PORTEUR NE FRANCHIT CE CONTRAT — le carnet ne connaît ni les épargnants ni les dispositifs, et son contrat le prouve. LE MOTIF D’UNE SUSPENSION DE CONFORMITÉ N’EST JAMAIS SERVI.

openapi: 3.1.0
info:
title: carnet-ordres — la consultation du carnet
version: 0.2.0
x-ruptures:
- version: 0.2.0
rupture: "chemins déplacés : le préfixe /tenants/{tenant} disparaît de tous les chemins"
motif: >-
Le tenant n'entre jamais dans le chemin d'une interface : il est résolu à l'assemblage —
routage par l'hôte, audience du jeton — jamais par une donnée d'appel. Le paramètre de
chemin tenant disparaît avec le préfixe.
description: >-
CE QUE LE DOMAINE DONNE À VOIR DE SON TRAVAIL, dimensionné sur le travail réel d'un
gestionnaire d'ordres. IL NE SERT JAMAIS LE SCHÉMA INTERNE : des vues, en identifiants
publiés. AUCUNE DONNÉE DE PORTEUR NE FRANCHIT CE CONTRAT — le carnet ne connaît ni les
épargnants ni les dispositifs, et son contrat le prouve. LE MOTIF D'UNE SUSPENSION DE
CONFORMITÉ N'EST JAMAIS SERVI.
x-familles-acces:
- carnet-ordres:consultation
servers:
- url: https://{hote}/carnet-ordres
description: Déclinaison à l'assemblage.
variables:
hote: { default: carnet-ordres.interne }
security:
- oidc: []
paths:
/centralisations:
get:
operationId: listerCentralisations
summary: >-
La file de travail du gestionnaire — LA MAILLE DE LA LISTE EST LA CENTRALISATION,
pas le porteur : l'écran d'entrée est une file de rendez-vous.
parameters:
- { name: support, in: query, schema: { type: string } }
- { name: sens, in: query, schema: { type: string, enum: [SOUSCRIPTION, RACHAT, ECHANGE] } }
- { name: etat, in: query, schema: { type: string, enum: [OUVERTE, FERMEE, REMISE, EXECUTEE, ALLOUEE, RAPPROCHEE, EN_ECART] } }
- { name: dateVlDepuis, in: query, schema: { type: string, format: date } }
- { name: reference, in: query, schema: { type: string } }
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/taillePage'
responses:
'200':
description: La page demandée, ses compteurs et la date d'observation.
content:
application/json:
schema:
type: object
required: [servieLe, compteurs, elements, pagination]
properties:
servieLe: { type: string, format: date-time }
compteurs:
$ref: '#/components/schemas/compteursCentralisations'
elements:
type: array
items: { $ref: '#/components/schemas/centralisationResumee' }
pagination: { $ref: '#/components/schemas/pagination' }
'503': { $ref: '#/components/responses/indisponible' }
/centralisations/{reference}:
get:
operationId: consulterCentralisation
summary: La fiche d'une centralisation — sa clé économique, son métronome, ses totaux.
parameters:
- $ref: '#/components/parameters/reference'
responses:
'200':
description: La centralisation.
content:
application/json:
schema: { $ref: '#/components/schemas/centralisation' }
'404': { $ref: '#/components/responses/introuvable' }
'503': { $ref: '#/components/responses/indisponible' }
/centralisations/{reference}/ordres:
get:
operationId: listerOrdresDeCentralisation
summary: >-
La composition — un ordre individuel par instruction d'origine. LE REGROUPEMENT NE
FAIT JAMAIS DISPARAÎTRE L'ORDRE INDIVIDUEL.
parameters:
- $ref: '#/components/parameters/reference'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/taillePage'
responses:
'200':
description: La page d'ordres individuels.
content:
application/json:
schema:
type: object
required: [elements, pagination]
properties:
elements:
type: array
items: { $ref: '#/components/schemas/ordreResume' }
pagination: { $ref: '#/components/schemas/pagination' }
'404': { $ref: '#/components/responses/introuvable' }
/centralisations/{reference}/execution:
get:
operationId: consulterExecutionDeCentralisation
summary: >-
Le résultat de place — valeur liquidative appliquée, quantité, montant, frais PAR
NATURE EN LIGNES, et contrôle de cohérence.
parameters:
- $ref: '#/components/parameters/reference'
responses:
'200':
description: Les tranches d'exécution reçues.
content:
application/json:
schema:
type: object
required: [tranches, coherenceAboutie]
properties:
tranches:
type: array
items: { $ref: '#/components/schemas/tranche' }
coherenceAboutie:
type: boolean
description: 'Quantité × valeur liquidative rapportée au montant, dans la tolérance du profil.'
'404': { $ref: '#/components/responses/introuvable' }
/centralisations/{reference}/allocations:
get:
operationId: consulterDepouillement
summary: >-
LA CONSERVATION SERVIE, PAS LAISSÉE À CALCULER : attendu, redistribué, résiduel, et
le verdict d'égalité. Faire recalculer l'invariant par l'écran, c'est accepter deux
vérités.
parameters:
- $ref: '#/components/parameters/reference'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/taillePage'
responses:
'200':
description: Le dépouillement et son contrôle.
content:
application/json:
schema: { $ref: '#/components/schemas/depouillement' }
'404': { $ref: '#/components/responses/introuvable' }
/centralisations/{reference}/compte-emission:
get:
operationId: consulterRapprochementCompteEmission
summary: >-
Le rapprochement des parts — transmis, demandé, confirmé par l'entité compétente,
alloué, attesté, comptabilisé, et l'écart. UN ÉCART DEVIENT UN SUSPENS, jamais une
modification silencieuse des allocations.
parameters:
- $ref: '#/components/parameters/reference'
responses:
'200':
description: Le dossier de compte d'émission.
content:
application/json:
schema: { $ref: '#/components/schemas/dossierCompteEmission' }
'404': { $ref: '#/components/responses/introuvable' }
/ordres/{reference}:
get:
operationId: consulterOrdre
summary: >-
La fiche d'un ordre individuel — SES HUIT DIMENSIONS D'ÉTAT, sa demande initiale, ce
qui a été servi et ce qui reste. LA CLÔTURE N'EST PAS UN ÉTAT, c'est une conclusion
dérivée, servie comme telle.
parameters:
- $ref: '#/components/parameters/reference'
responses:
'200':
description: L'ordre.
content:
application/json:
schema: { $ref: '#/components/schemas/ordre' }
'404': { $ref: '#/components/responses/introuvable' }
/ordres/{reference}/chronologie:
get:
operationId: consulterChronologieOrdre
summary: >-
La séquence causale complète et les versions utilisées — CE QUI DISTINGUE UN DOSSIER
CAUSAL D'UNE JUXTAPOSITION DE TABLES, et l'exigence de reconstitution des articles
322-88 à 322-90 du règlement général de l'AMF.
parameters:
- $ref: '#/components/parameters/reference'
responses:
'200':
description: Le journal de l'ordre, du plus ancien au plus récent.
content:
application/json:
schema:
type: object
required: [elements]
properties:
elements:
type: array
items: { $ref: '#/components/schemas/evenementChronologie' }
'404': { $ref: '#/components/responses/introuvable' }
/ordres/{reference}/denouement:
get:
operationId: consulterDenouement
summary: >-
LES DEUX VOLETS, séparés et corrélés. Le carnet prononce le dénouement titres, la
banque atteste seule les espèces — aucun ne se déduit de l'autre.
parameters:
- $ref: '#/components/parameters/reference'
responses:
'200':
description: Le dénouement.
content:
application/json:
schema: { $ref: '#/components/schemas/denouement' }
'404': { $ref: '#/components/responses/introuvable' }
/ordres/{reference}/echeance/explication:
get:
operationId: expliquerEcheance
summary: >-
Les règles, calendriers, heures limites et versions qui ont produit l'échéance.
SANS EFFET — la réponse à « pourquoi cet ordre part-il à la valeur liquidative du 12
et non du 5 ».
parameters:
- $ref: '#/components/parameters/reference'
responses:
'200':
description: L'explication.
content:
application/json:
schema: { $ref: '#/components/schemas/explicationEcheance' }
'404': { $ref: '#/components/responses/introuvable' }
/remises:
get:
operationId: listerRemises
summary: >-
Les remises groupées par acteur de place. UNE REMISE GROUPE PAR DESTINATAIRE, une
centralisation par clé économique : les deux regroupements sont orthogonaux.
parameters:
- { name: acteur, in: query, schema: { type: string } }
- { name: etat, in: query, schema: { type: string, enum: [CONSTITUEE, TRANSMISE, ACCUSEE, REJETEE_TECHNIQUEMENT, ETAT_INCONNU, CLOSE] } }
- { name: dateVlDepuis, in: query, schema: { type: string, format: date } }
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/taillePage'
responses:
'200':
description: La page de remises et ses compteurs.
content:
application/json:
schema:
type: object
required: [servieLe, compteurs, elements, pagination]
properties:
servieLe: { type: string, format: date-time }
compteurs:
type: object
additionalProperties: { type: integer }
elements:
type: array
items: { $ref: '#/components/schemas/remiseResumee' }
pagination: { $ref: '#/components/schemas/pagination' }
/remises/{reference}:
get:
operationId: consulterRemise
summary: >-
La fiche d'une remise — sa preuve, ses tentatives, ses retours, et la COMPARAISON
TRANSMIS / EXÉCUTÉ ligne à ligne, avec l'écart.
parameters:
- $ref: '#/components/parameters/reference'
responses:
'200':
description: La remise.
content:
application/json:
schema: { $ref: '#/components/schemas/remise' }
'404': { $ref: '#/components/responses/introuvable' }
/suspens:
get:
operationId: listerSuspens
summary: >-
La file de travail des écarts. UN SUSPENS EST UN OBJET SUIVI — cause, propriétaire,
ancienneté, échéance — pas un état d'erreur.
parameters:
- { name: famille, in: query, schema: { type: string, enum: [PRISE_EN_CHARGE, RESERVATION, ECHEANCE, TRANSMISSION, EXECUTION, ALLOCATION, PLAFONNEMENT, REGLEMENT_LIVRAISON, COMPTE_EMISSION, COMPTE_RENDU] } }
- { name: typeObjet, in: query, schema: { type: string } }
- { name: support, in: query, schema: { type: string } }
- { name: criticite, in: query, schema: { type: string, enum: [BLOQUANTE, A_SURVEILLER] } }
- { name: ouvertsSeulement, in: query, schema: { type: boolean, default: true } }
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/taillePage'
responses:
'200':
description: La page de suspens et ses compteurs par famille.
content:
application/json:
schema:
type: object
required: [servieLe, compteurs, elements, pagination]
properties:
servieLe: { type: string, format: date-time }
compteurs:
type: object
additionalProperties: { type: integer }
elements:
type: array
items: { $ref: '#/components/schemas/suspens' }
pagination: { $ref: '#/components/schemas/pagination' }
/simulations/allocation:
post:
operationId: simulerAllocation
summary: >-
Le résultat d'une règle d'allocation sur un jeu fourni, AVEC SA PART EXACTE AVANT
ARRONDI, son arrondi et son résiduel. AUCUN EFFET : rien n'est créé, rien n'est
réservé, rien n'est publié. Le POST est une exception de TRANSPORT — le jeu de
données ne tient pas dans une adresse —, jamais de sémantique.
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [regleCode, regleVersion, quantiteExecuteeUpm, contributions]
properties:
regleCode: { type: string }
regleVersion: { type: string }
quantiteExecuteeUpm: { type: integer, format: int64 }
contributions:
type: array
minItems: 1
items:
type: object
required: [ordreRef, montantCt]
properties:
ordreRef: { type: string }
montantCt: { type: integer, format: int64 }
responses:
'200':
description: Le résultat simulé, rejouable à l'identique.
content:
application/json:
schema: { $ref: '#/components/schemas/depouillement' }
components:
securitySchemes:
oidc:
type: openIdConnect
openIdConnectUrl: https://declinaison-a-l-assemblage/.well-known/openid-configuration
parameters:
reference:
name: reference
in: path
required: true
schema: { type: string }
page:
name: page
in: query
schema: { type: integer, minimum: 1, default: 1 }
taillePage:
name: taillePage
in: query
description: 'Plafonné par le domaine — une liste sans borne est une liste que personne ne lit.'
schema: { type: integer, minimum: 1, maximum: 200, default: 25 }
responses:
introuvable:
description: La ressource n'existe pas dans ce tenant.
content:
application/json:
schema: { $ref: '#/components/schemas/erreur' }
indisponible:
description: >-
INDISPONIBILITÉ FRANCHE : le domaine répond une erreur, JAMAIS un état approximatif.
content:
application/json:
schema: { $ref: '#/components/schemas/erreur' }
schemas:
erreur:
type: object
required: [code, message]
properties:
code: { type: string }
message: { type: string }
pagination:
type: object
required: [page, taillePage, total]
properties:
page: { type: integer }
taillePage: { type: integer }
total: { type: integer }
compteursCentralisations:
type: object
description: >-
LES COMPTEURS SONT UNE RESSOURCE, pas un agrégat reconstitué par l'écran : une file
de travail se compte chez celui qui la tient.
properties:
enConstitution: { type: integer }
aTransmettre: { type: integer }
transmisesEnAttente: { type: integer }
aDepouiller: { type: integer }
rejetsEtSuspens: { type: integer }
centralisationResumee:
type: object
required: [reference, supportRef, sens, etat, dateCentralisation, nbOrdres]
properties:
reference: { type: string }
supportRef: { type: string }
supportLibelle:
type: string
description: >-
SERVI, NON DÉTENU : résolu à la lecture depuis le référentiel des instruments.
Le carnet ne persiste aucun libellé de fonds.
sens: { type: string }
heureLimite: { type: string, format: date-time }
fuseauHeureLimite: { type: string }
dateCentralisation: { type: string, format: date }
dateVlAttendue: { type: string, format: date }
nbOrdres: { type: integer }
totalMontantCt: { type: integer, format: int64 }
totalQuantiteUpm: { type: integer, format: int64 }
etat: { type: string }
remiseRef: { type: string }
centralisation:
allOf:
- $ref: '#/components/schemas/centralisationResumee'
- type: object
properties:
categoriePartRef: { type: string }
devise: { type: string }
centralisateurRef: { type: string }
profilReglement: { type: string }
occurrenceRef: { type: string }
clotureInterneLe: { type: string, format: date-time }
fermeeLe: { type: string, format: date-time }
dateReglementPrevue: { type: string, format: date }
ordreResume:
type: object
required: [reference, instructionRef, sens]
properties:
reference: { type: string }
operationRef: { type: string }
instructionRef:
type: string
description: >-
LE SEUL LIEN TRANSVERSE d'un ordre individuel — il mène au module Opérations. Aucune
colonne épargnant, AUCUNE COLONNE DISPOSITIF, nulle part : le dispositif ne parvient
pas au carnet.
compteRef: { type: string }
sens: { type: string }
montantDemandeCt: { type: integer, format: int64 }
quantiteDemandeeUpm: { type: integer, format: int64 }
montantServiCt: { type: integer, format: int64 }
quantiteServieUpm: { type: integer, format: int64 }
montantRestantCt: { type: integer, format: int64 }
quantiteRestanteUpm: { type: integer, format: int64 }
origineAvoir: { type: string }
ordre:
allOf:
- $ref: '#/components/schemas/ordreResume'
- type: object
required: [dimensions, clos]
properties:
supportRef: { type: string }
supportVersion: { type: string }
centralisationRef: { type: string }
remiseRef: { type: string }
referenceExterne: { type: string }
dimensions:
type: object
description: >-
LES HUIT DIMENSIONS, dont aucune ne se déduit des autres. Les résumer en un
statut unique conduit à des états qu'on ne peut pas nommer honnêtement.
required: [priseEnCharge, reservation, centralisation, transmission,
execution, denouement, rapprochement, suspension]
properties:
priseEnCharge: { type: string, enum: [RECU, ACCEPTE, REJETE, ANNULE] }
reservation: { type: string, enum: [NON_REQUISE, ACTIVE, CONSOMMEE, LIBEREE, EXPIREE] }
centralisation: { type: string, enum: [A_AFFECTER, A_CENTRALISER, CENTRALISE, HORS_ECHEANCE] }
transmission:
type: string
enum: [NON_REMIS, REMIS, RECU_EXTERNE, REJETE_TECHNIQUE, ETAT_INCONNU]
description: >-
ETAT_INCONNU N'EST NI UN SUCCÈS NI UN ÉCHEC : c'est lui qui INTERDIT de
renvoyer l'ordre tant que le risque de doublon n'est pas levé.
execution: { type: string, enum: [EN_ATTENTE, PARTIELLE, TOTALE, REJETEE, REPORTEE] }
denouement: { type: string, enum: [NON_REQUIS, A_REGLER, EN_COURS, DENOUE, EN_ECHEC] }
rapprochement: { type: string, enum: [NON_DU, A_RAPPROCHER, RAPPROCHE, EN_ECART] }
suspension:
type: string
enum: [AUCUNE, CONFORMITE, DONNEE, TECHNIQUE, EXTERNE]
description: >-
LE MOTIF N'EST JAMAIS SERVI quand la suspension est de conformité : elle
se voit, elle ne s'explique pas.
clos:
type: boolean
description: >-
LA CLÔTURE N'EST PAS UN ÉTAT, C'EST UNE CONCLUSION : chaque dimension à son
terme et aucun suspens ouvert. Le domaine la sert dérivée, il ne l'écrit pas.
reliquats:
type: array
items: { $ref: '#/components/schemas/reliquat' }
comptesRendus:
type: array
items: { $ref: '#/components/schemas/compteRenduResume' }
reliquat:
type: object
required: [revocable, etat]
properties:
montantRestantCt: { type: integer, format: int64 }
quantiteRestanteUpm: { type: integer, format: int64 }
revocable: { type: boolean }
nbRepresentations: { type: integer }
maxRepresentations: { type: integer }
prochaineDateVlAttendue: { type: string, format: date }
motif: { type: string }
etat: { type: string, enum: [CREE, REPRESENTE, SOLDE, REVOQUE, EXPIRE] }
compteRenduResume:
type: object
required: [reference, type, etat]
properties:
reference: { type: string }
type: { type: string }
quantiteUpm: { type: integer, format: int64 }
montantBrutCt: { type: integer, format: int64 }
etat: { type: string, enum: [PRODUIT, TRANSMIS, ACCUSE, REJETE, BLOQUE] }
motifRejet: { type: string }
ligneFrais:
type: object
required: [nature, montantCt]
properties:
nature: { type: string }
montantCt: { type: integer, format: int64 }
source: { type: string }
tranche:
type: object
required: [reference, dateExecution]
properties:
reference: { type: string }
quantiteUpm: { type: integer, format: int64 }
montantBrutCt: { type: integer, format: int64 }
vlUe6: { type: integer, format: int64 }
prixUe6: { type: integer, format: int64 }
dateVl: { type: string, format: date }
rangVl: { type: integer }
dateExecution: { type: string, format: date }
sourcePrix: { type: string }
qualitePrix: { type: string }
motifReduction: { type: string }
frais:
type: array
description: >-
TABLEAU VIDE = NÉANT, qui est un RÉSULTAT et non une absence d'information.
items: { $ref: '#/components/schemas/ligneFrais' }
depouillement:
type: object
required: [attendu, redistribue, residuel, egalite, lignes]
properties:
attendu:
type: object
properties:
quantiteUpm: { type: integer, format: int64 }
montantCt: { type: integer, format: int64 }
redistribue:
type: object
properties:
quantiteUpm: { type: integer, format: int64 }
montantCt: { type: integer, format: int64 }
residuel:
type: object
description: >-
Le résiduel d'arrondi et sa distribution. AUCUN RÉSIDUEL N'EST ABSORBÉ EN
SILENCE, et aucun n'est porté sur un compte technique.
properties:
quantiteUpm: { type: integer, format: int64 }
methode: { type: string, enum: [PLUS_FORTS_RESTES] }
egalite:
type: boolean
description: >-
LE VERDICT SERVI PAR LE DOMAINE : somme des allocations + résiduel attribué =
exécution. L'écran ne recalcule rien.
regleCode: { type: string }
regleVersion: { type: string }
lignes:
type: array
items:
type: object
required: [ordreRef, quantiteAllloueeUpm]
properties:
ordreRef: { type: string }
instructionRef: { type: string }
contributionCt: { type: integer, format: int64 }
partExacteUi12:
type: string
description: >-
LA PART EXACTE AVANT ARRONDI, en millionièmes de millionième de part,
servie en chaîne pour ne perdre aucun chiffre. SANS ELLE, la méthode des
plus forts restes n'est pas rejouable.
quantiteAllloueeUpm: { type: integer, format: int64 }
montantAlloueCt: { type: integer, format: int64 }
rangReste:
type: integer
description: >-
Rang au classement décroissant des restes — CE QUI DIT POURQUOI cet ordre
a reçu un millionième de plus qu'un autre.
residuelRecuUpm: { type: integer, format: int64 }
manuelle: { type: boolean }
dossierCompteEmission:
type: object
required: [etat, ecartUpm]
properties:
montantTransmisCt: { type: integer, format: int64 }
partsDemandeesUpm: { type: integer, format: int64 }
partsConfirmeesUpm: { type: integer, format: int64 }
partsAllloueesUpm: { type: integer, format: int64 }
partsComptabiliseesUpm: { type: integer, format: int64 }
nbComptesRendus: { type: integer }
ecartUpm: { type: integer, format: int64 }
entiteEmissionRef: { type: string }
etat: { type: string, enum: [A_RAPPROCHER, RAPPROCHE, EN_ECART] }
suspensRef: { type: string }
denouement:
type: object
required: [etat, volets]
properties:
etat: { type: string, enum: [A_REGLER, EN_COURS, DENOUE, EN_ECHEC] }
finaliteVersion: { type: string }
volets:
type: array
minItems: 2
maxItems: 2
description: >-
DEUX VOLETS, SÉPARÉS ET CORRÉLÉS. Un règlement bancaire confirmé ne prouve pas
la livraison des titres, et réciproquement.
items:
type: object
required: [volet, etat, dateAttendue]
properties:
volet: { type: string, enum: [TITRES, ESPECES] }
quantiteUpm: { type: integer, format: int64 }
montantCt: { type: integer, format: int64 }
dateAttendue: { type: string, format: date }
dateEffective: { type: string, format: date }
etat: { type: string, enum: [A_REGLER, EN_COURS, DENOUE, EN_ECHEC] }
confirmantRef:
type: string
description: >-
JAMAIS le carnet d'ordres pour le volet ESPÈCES : l'attestation des espèces
appartient à la banque et flux financiers.
referenceExterne: { type: string }
suspensRef: { type: string }
explicationEcheance:
type: object
required: [dateVlAttendue, heureLimite, fuseau, lignage]
properties:
occurrenceRef: { type: string }
dateCentralisation: { type: string, format: date }
dateVlAttendue: { type: string, format: date }
dateReglementPrevue: { type: string, format: date }
heureLimite: { type: string, format: date-time }
fuseau: { type: string }
rang: { type: integer, description: 'Rang de l''affectation — 1 pour l''ordre initial, suivant pour chaque représentation.' }
lignage:
type: string
description: >-
Les règles, calendriers et versions qui ont produit l'échéance. UN ORDRE REÇU
APRÈS L'HEURE LIMITE N'EST JAMAIS ANTIDATÉ, et la valeur appliquée est celle
calculée APRÈS la centralisation.
remiseResumee:
type: object
required: [reference, acteurRef, etat, canal]
properties:
reference: { type: string }
acteurRef: { type: string }
canal: { type: string, enum: [FICHIER, APPEL, TELEPHONE] }
etat: { type: string }
transmiseLe: { type: string, format: date-time }
accuseeLe: { type: string, format: date-time }
nbOrdresAgreges: { type: integer }
tentatives: { type: integer }
remise:
allOf:
- $ref: '#/components/schemas/remiseResumee'
- type: object
properties:
format: { type: string }
versionFormat: { type: string }
empreinte: { type: string }
referenceTechnique: { type: string }
referenceAccuse: { type: string }
enregistrementRef:
type: string
description: >-
Référence de l'enregistrement horodaté, quand le canal de secours
(téléphone) a été employé — c'est la preuve. Le contenu n'est jamais servi
par ce contrat.
comparaison:
type: array
description: >-
LA COMPARAISON TRANSMIS / EXÉCUTÉ ligne à ligne, avec l'écart. C'est le
tableau de la fiche annonce du back-office.
items:
type: object
required: [ordreAgregeRef, conforme]
properties:
ordreAgregeRef: { type: string }
supportRef: { type: string }
sens: { type: string }
transmisMontantCt: { type: integer, format: int64 }
transmisQuantiteUpm: { type: integer, format: int64 }
vlUe6: { type: integer, format: int64 }
executeMontantCt: { type: integer, format: int64 }
executeQuantiteUpm: { type: integer, format: int64 }
ecartQuantiteUpm: { type: integer, format: int64 }
conforme: { type: boolean }
suspens:
type: object
required: [reference, famille, criticite, etat, dateOrigine, ancienneteJours]
properties:
reference: { type: string }
famille: { type: string }
typeObjet: { type: string }
objetRef: { type: string }
supportRef: { type: string }
qualification: { type: string }
montantCt: { type: integer, format: int64 }
quantiteUpm: { type: integer, format: int64 }
dateOrigine:
type: string
format: date
description: >-
LA DATE MÉTIER dont se calcule l'ancienneté — jamais la date de détection.
ancienneteJours: { type: integer }
echeanceLe: { type: string, format: date }
proprietaire: { type: string }
criticite: { type: string, enum: [BLOQUANTE, A_SURVEILLER] }
etat: { type: string, enum: [DETECTE, QUALIFIE, ASSIGNE, EN_TRAITEMENT, APURE, ESCALADE] }
evenementChronologie:
type: object
required: [survenuLe, evenement, auteur]
properties:
survenuLe: { type: string, format: date-time }
evenement: { type: string }
typeObjet: { type: string }
objetRef: { type: string }
auteur: { type: string }
causalite: { type: string }
detail: { type: string }