Sélectionnez votre langue

Le registre json.telebib2.org

S'orienter

Le registre json.telebib2.org

Le registre est la source unique de vérité de la norme JSON Telebib2. Ce n'est pas une API : c'est un ensemble de fichiers statiques, servis à des adresses stables, dont chacun est immuable une fois publié. Cette simplicité est délibérée et elle est ce qui rend la norme utilisable sans dépendance et qu'elle est vérifiable.

L'identifiant est l'adresse

Chaque schéma déclare un $id, son identifiant absolu. Dans ce registre, cet identifiant est aussi l'adresse réelle du fichier : collez-le dans un navigateur, vous obtenez le schéma. Aucune table de correspondance, aucune résolution à écrire.

C'est ce qui permet à n'importe quel validateur de suivre les $ref tout seul. Les fichiers sont servis avec le type de média application/schema+json et l'en-tête CORS ouvert en lecture, de sorte qu'un outil tournant dans un navigateur peut les charger sans obstacle.

Le nommage suit une règle unique : <MIG>.<AAAANN>.json, où AAAANN est la release. Composants partagés, listes et types primitifs suivent la même logique, avec l'année de release à laquelle ils ont été modifiés.

Un identifiant, une adresse

curl -s https://json.telebib2.org/schemas/\

contract/contractEvent/M0103.202701.json

Ce que le serveur renvoie

Content-Type:  application/schema+json

Access-Control-Allow-Origin:  *

Cache-Control: public, max-age=3600
Le $id déclaré dans un schéma est aussi l'adresse réelle du fichier : collé dans un navigateur, il renvoie le schéma tel quel. Le nommage suit une règle unique, MIG point release point json, par exemple M0103.202701.json, où M0103 est le MIG et 202701 la release au format AAAANN.
Fig. 01 — L'identifiant est l'adresse

Un fichier publié ne change jamais

C'est la règle fondatrice et elle n'a pas d'exception silencieuse. Une fois publié, un fichier de schéma n'est plus modifié -jamais, pas même pour corriger une faute de frappe dans une description. Toute évolution donne un nouveau fichier.

La conséquence est celle qui compte : un message que vous validez aujourd'hui se validera à l'identique dans dix ans, contre exactement le même schéma, octet pour octet. Aucune modification en amont ne peut invalider rétroactivement ce que votre système a accepté.

Deux fichiers échappent à cette règle et c'est assumé : schemaRouter.json, qui aiguille vers les schémas en service et compatibility.json, qui tient l'inventaire des versions. Tous deux décrivent un état du registre, pas un contenu. Ils doivent donc pouvoir changer sans changer de nom.

Toute évolution donne un nouveau fichier : les releases successives d'un message, M0151.202601, M0151.202701 et M0151.202801, coexistent et aucune n'est modifiée après publication. Les schémas de version, les composants, les listes et les types primitifs sont immuables et se cachent sans limite. Seuls schemaRouter.json, compatibility.json et catalog.json sont mutables : ils décrivent un état du registre, pas un contenu, et doivent être rechargés après publication.
Fig. 02 — Immuable ou mutable : ce qui se cache sans limite, ce qui se recharge

Comment savoir ce qui existe

Le listage des répertoires est désactivé : vous ne pouvez pas parcourir l'arborescence à l'aveugle. Ce n'est pas une restriction d'accès car tous les fichiers sont publics, mais un choix de conception. Un répertoire ouvert invite à deviner des adresses ; le registre préfère les déclarer.

La déclaration s'appelle catalog.json. C'est un inventaire lisible par une machine de tout ce que le registre publie : pour chaque fichier, son identifiant, son chemin, le MIG dont il relève, sa release, son état, une empreinte de contenu et sa taille.

L'empreinte mérite une mention : elle vous permet de vérifier qu'un fichier miroité localement est bien celui que le registre publie, sans avoir à le rapatrier.

Pour explorer à l'œil plutôt qu'au programme, le site www.telebib2.org présente les mêmes contenus avec des libellés, des index inverses et une recherche.

Une entrée du catalogue

{

  "id": "https://json.telebib2.org/schemas/…",

  "path": "schemas/community/M0151.202701.json",

  "mig": "M0151",

  "release": "202701",

  "title": "M0151 — Certificat de sinistralité",

  "domain": "community",

  "state": "active",

  "hash": "sha256-…",

  "bytes": 118432

}
Deviner ne marche pas : le listage des répertoires est désactivé, un répertoire ouvert inviterait à deviner des adresses. Déclarer, si : catalog.json est un inventaire lisible par une machine de tout ce que le registre publie, avec pour chaque fichier son identifiant, son chemin, son MIG, sa release, son état, une empreinte et sa taille. L'empreinte sha256 permet de comparer un miroir local au catalogue et de le déclarer conforme sans rapatrier le fichier.
Fig. 03 — Pas de listage : catalog.json déclare ce qui existe

Comment le registre est rangé

L'arborescence suit les domaines fonctionnels de la norme. Les messages vivent dans leur domaine, découpés par famille (événements de contrat, modifications, ouverture de sinistre, quittances, extraits de compte). Tout ce qui est réutilisable vit sous shared/.

Deux dossiers accompagnent les schémas et méritent d'être connus.

payloads/ contient, pour chaque message, deux exemples valides : une variante min réduite aux propriétés obligatoires et une variante full qui exerce tout le schéma. Ce sont vos cas de test tout prêts.

validation/ contient le rapport de validation de chacun de ces exemples, sur deux moteurs indépendants. C'est le registre qui se contrôle lui-même et la preuve est publiée avec le résultat.

Sous schemas/ vivent messageEnvelope.202701.json, le routeur schemaRouter.json et la table compatibility.json, tous deux mutables, les six domaines fonctionnels contract, claim, financial-exchange, community, contextual-exchange et technical, puis shared/ avec components/, lists/ et primitives/. À côté, payloads/ contient deux exemples valides par message, min et full, validation/ les rapports de validation sur deux moteurs indépendants, et catalog.json l'inventaire.
Fig. 04 — L'arborescence du registre

Le consommer correctement

Miroitez plutôt que de déréférencer. Valider un message en allant chercher chaque référence en HTTP fonctionne, mais rend votre validation dépendante du réseau et multiplie les allers-retours. Rapatriez les schémas, enregistrez-les par leur $id, résolvez hors ligne.

Cachez agressivement, sauf trois fichiers. Les fichiers de version sont immuables : leur durée de cache n'a pas de limite raisonnable. Le routeur, la table de compatibilité et le catalogue changent (ce sont les seuls à rafraîchir).

Notez la version du registre. Elle figure dans compatibility.json. Le jour où un comportement change, savoir avec quelle version vous validiez vous dira entre quels points chercher.

Un miroir local

# Récupérer l'inventaire

curl -s https://json.telebib2.org/catalog.json \

  -o catalog.json



# Rapatrier chaque schéma déclaré

jq -r '.schemas[].path' catalog.json | \

  while read p; do

    mkdir -p "$(dirname "$p")"

    curl -s "https://json.telebib2.org/$p" -o "$p"

  done
Déréférencer à la volée coûte un aller-retour par $ref entre votre validateur et le registre : dépendant du réseau, et lent. Miroiter, c'est rapatrier le registre une fois dans un miroir local, puis valider hors ligne avec des schémas enregistrés par leur $id. Trois règles : cachez agressivement, sauf le routeur, la table de compatibilité et le catalogue ; notez la version du registre, qui figure dans compatibility.json ; le registre ne rend aucun service, ni recherche, ni requête, ni validation en ligne.
Fig. 05 — Miroiter plutôt que déréférencer

Contact

À propos de Telebib2