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.
La spécification
Section intitulée « La spécification »openapi: 3.1.0info: 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:consultationservers: - 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 }