Toutes les clés, une page.
La config vit dans la page hôte, dans un bloc <script id="api-doc-config" type="application/json"> — ou dans la globale window.API_DOC_CONFIG quand vous voulez des commentaires autour. Seule openapi.url, spec ou specs est requise ; toutes les autres clés ont une valeur par défaut.
Les clés sont groupées ci-dessous comme dans la config elle-même. Les valeurs par défaut sont indiquées quand il en existe une, en date de la v0.3.0.
L’objet complet en un seul bloc copiable, un commentaire par clé, vit sur Référence complète — et le builder l’écrit pour vous, station par station.
openapi
openapi.url- URL du schéma OpenAPI 3.0.x–3.2.x, JSON ou YAML. Le serveur qui l’héberge doit autoriser la lecture cross-origin (CORS).
openapi.spec- Le schéma lui-même — objet JS ou chaîne JSON — porté par la page : aucune requête, aucun CORS. Gagne sur
url. openapi.specs- Plusieurs schémas dans une installation : des entrées
[{ id, title, url }], presque toutes les clés surchargeables par entrée. Gagne sururl. Voir le guide multi-spec. openapi.default- La spec affichée à l’arrivée en multi-spec (sinon la première entrée).
openapi.hide- Motifs retirant des opérations de la nav, de la recherche et des exports :
"tag:Internal","DELETE /admin/*","/admin/*","resetDatabase"(operationId — l’id de repli{method}-{slug}matche aussi). Du masquage documentaire, pas de la sécurité — le navigateur télécharge toujours le schéma complet. Voir Couverture OpenAPI & contrôle du schéma. openapi.overlays- Documents OpenAPI Overlay 1.1 (URL ou objet inline) appliqués au schéma au chargement, dans l’ordre déclaré. Toute action en échec est signalée, jamais silencieuse. Sémantique complète dans le guide du schéma.
openapi.userOverlay- Un correctif de départ amorcé dans l’éditeur d’overlay du lecteur (
nullpar défaut). Par spec, il remplace le document de la racine au lieu de s’empiler, et ré-amorcer avec un autre document jette les modifications locales du lecteur.
theme
theme.defaultpar défaut"system"- Thème appliqué au premier chargement ; le choix persistant du lecteur prime ensuite.
"system"suit leprefers-color-schemede l’OS dans la première paire clair/sombre d’available. theme.availablepar défaut["apiglow", "apiglow-dark"]- Thèmes offerts dans le sélecteur — le défaut est la paire signature de l’app. Les 35 thèmes daisyUI standard sont dans le bundle : en lister un ne coûte rien.
theme.custom- Vos propres thèmes, générés au démarrage depuis des tokens daisyUI — sans étape de build. Racine uniquement en multi-spec. Voir le guide des thèmes.
language
language.defaultpar défaut"browser"- Langue de l’interface au premier chargement :
"browser"suit lesnavigator.languagesdu lecteur dansavailable; un code de langue l’épingle. La préférence persistée du lecteur gagne ensuite. language.available- Langues offertes. L’anglais est dans le bundle ; les autres se téléchargent à la demande.
Environnements
environmentspar défaut[]- Environnements pré-remplis au premier chargement :
{ name, baseUrl, variables, defaultHeaders }. Une variable est{ value, sensitive }; les sensibles sont masquées à l’affichage et caviardées dans l’historique et les exports. Après le premier chargement, le stockage du lecteur fait foi. environmentsLockedpar défautfalsetrueretire tout point d’entrée de création ou d’édition des environnements — seul le sélecteur reste. Pour les déploiements d’entreprise contrôlés.
Contenu : docsPages, feedback et scenarios
docsPagespar défaut[]- Pages de prose tissées dans la nav :
{ slug, title, url }— oucontent(le texte lui-même) oucontentId(id d’un élément script non exécutable de la page hôte) à la place deurl. Ajoutezkind: "changelog"pour rendre lesh2d’une page en frise de versions ;nav: "bottom"sur une entrée de premier niveau l’envoie en zone d’annexe sous la référence API. Groupes, liens externes, tables multilingues, prise de contrôle de l’accueil (home: true) et forme manifeste JSON : tout est dans le guide des pages de prose. feedback.urlpar défautnull- Votre endpoint pour la ligne « Cette page vous a-t-elle été utile ? » des pages de prose, qui envoie en POST
{ "page": "<slug>", "verdict": "up" | "down" }en JSON. Pas d’URL, pas de ligne — l’app n’envoie jamais rien nulle part d’elle-même. En cross-origin, le type de contenu JSON en fait une requête préliminaire. Surchargeable par spec. scenariospar défaut[]- Scénarios livrés avec la doc :
{ id, title, url }vers des fichiers exportés ;pinned: trueen met un en avant sur la page d’accueil. En multi-spec, déclarés uniquement sur les entréesspecs[]. Voir écrire des scénarios.
announcements
Nouveau en v0.2.0 : un bandeau au-dessus de l’en-tête, pour ce que le schéma ne peut pas dire — une fenêtre de maintenance, une date de dépréciation, une version qui vient de sortir.
announcementspar défaut[]- Soit un tableau d’entrées, soit l’URL d’un fichier contenant
{ "announcements": [ … ] }— c’est cette seconde forme que vos ops éditent seuls, sans redéployer la page hôte. En multi-spec, racine et spec s’accumulent ; un fichier désigné remplace ce que la config déclarait. Un fichier qui ne charge pas est abandonné en silence : un bandeau que personne ne reçoit est invisible de toute façon. announcements[].text- Le message, en Markdown inline : une chaîne, ou une par langue (
{ en: "…", fr: "…" }). Assaini comme tout contenu externe. announcements[].levelpar défaut"info""info","success","warning"ou"error".announcements[].dismissiblepar défauttruefalsemaintient le bandeau à l’écran, quoi que le lecteur ait déjà écarté.announcements[].startsAt/.endsAt- Des instants ISO. La fenêtre est lue au rendu de la page : une maintenance déclarée une semaine à l’avance se publie et se retire toute seule — mais une entrée dont la fenêtre s’ouvre pendant qu’un onglet reste ouvert attend le chargement suivant. Une date illisible élargit la fenêtre au lieu de la fermer.
announcements[].id- La clé sous laquelle le rejet du lecteur est mémorisé. Sans
id, c’est le texte déclaré qui sert d’empreinte : modifier le message le réaffiche à tout le monde, et poser unidachète l’inverse — une faute corrigée qui ne rouvre rien.
features
features.scenariospar défauttruefalseretire la fonctionnalité scénarios en entier — nav, boutons de capture, routes, index de recherche. Les scénarios locaux déjà stockés survivent, intacts, pour le jour où elle est réactivée.features.auditpar défauttruefalseretire la page d’audit de schéma : le bloc des réglages, la route#/audit, tout calcul. La ligne de commande l’ignore.features.onboardingpar défautfalsetrueajoute une page « Premier appel » générée (#/first-call) en tête de la nav de référence : le GET le plus simple que le schéma déclare, guidé dans la vraie console — langage, identifiants, Envoyer. Absente quand le schéma ne déclare aucune lecture de ce genre. Voir Authentification & onboarding.features.cipar défauttruefalseretire le panneau « Automatiser ce scénario » — la remise CI. L’export Arazzo du menu du scénario reste.
audit
La configuration des règles de l’audit, lue par la page #/audit comme par apiglow audit : la note publiée et celle de la CI concordent. Une note calculée avec elle porte la mention « Règles personnalisées » partout où elle apparaît. Le guide de l’audit détaille l’ordre de priorité.
audit.rulespar défaut{}- Identifiant de règle →
"error","warning","info"ou"off", pour tout le document.apiglow audit --list-rulesimprime chaque identifiant. audit.overridespar défaut[]- Les mêmes réglages sous des motifs de pointeurs JSON :
{ paths, rules, reason }.*couvre l’intérieur d’un segment,**un nombre quelconque de segments ; la dernière correspondance l’emporte.reasonest un texte libre pour le prochain lecteur.
Une entrée fautive est signalée dans la console du navigateur puis ignorée ; la ligne de commande, elle, refuse de tourner.
branding
branding.productName- Nom affiché dans l’en-tête.
branding.logoUrlpar défautnull- URL d’un logo affiché dans l’en-tête.
tryIt
tryIt.proxyUrlpar défautnull- Gabarit de proxy CORS optionnel,
{{target}}= URL cible encodée. L’app ne fournit aucun proxy — vous l’hébergez. tryIt.requestCredentialspar défaut"same-origin"- Mode credentials des fetch de la console d’essai :
"omit","same-origin"ou"include"."include"est requis pour l’auth par cookie de session cross-origin, avec les contraintes serveur détaillées dans Console d’essai & CORS.
history
history.maxEntriespar défaut500- Purge de l’historique au-delà de ce nombre (le premier seuil atteint l’emporte).
history.maxAgeDayspar défaut30- …ou au-delà de cet âge. Racine uniquement : la rétention est un plafond de stockage navigateur, partagé par toutes les specs.
oauth
oauthpar défaut{}- Par scheme OAuth2 (clé = son nom dans
securitySchemes) :{ clientId }utilisé par les flows dans le navigateur, surchargeable par la variable d’environnementauth.X.clientId. Jamais de client secret — la page hôte est publique.
seo
seo.indexpar défauttruefalseinjecte<meta name="robots" content="noindex">avant le premier rendu. Racine uniquement : une page est servie à une URL, et un crawler la lit sans choisir de spec. C’est une requête aux crawlers de bonne volonté, pas une protection. Ajoutez un en-têteX-Robots-Tagpour couvrir les fichiers non HTML. Voir SEO & CLI bake.
Une capacité n’a aucune clé. Les identifiants fournis par l’hôte passent par une API d’exécution (window.apidoc), pour qu’un jeton ne puisse pas finir écrit dans la config — voir le pont d’identifiants hôte. Le correctif local de schéma d’un lecteur est presque aussi privé : openapi.userOverlay amorce son état d’ouverture, et aucun drapeau ne le désactive. Il ne change que la vue d’un navigateur sur le document, et vos règles hide s’appliquent toujours après lui.
Surcharges par spec (multi-spec)
Dans une installation openapi.specs[], la config racine est le repli et presque toute clé peut être redéclarée sur une entrée. Quatre règles décident de la fusion :
- Les objets de réglages (
tryIt,branding,theme,language,features,oauth) fusionnent clé par clé et la spec gagne. Une clé déclarée ànullgagne aussi, donc une spec peut désactiver le proxy racine.auditfusionne sesrulesde la même façon et additionne sesoverrides, celles de la racine d’abord. - Les listes nommées (
docsPagespar slug,environmentspar nom) fusionnent par identifiant, et la spec gagne. hideetoverlayss’accumulent. Un masquage ne se démasque pas ; les overlays s’appliquent racine d’abord, puis ceux de l’entrée.environmentsLockedest remplacé s’il est déclaré.
Quatre clés font exception. history est racine uniquement : la rétention est un plafond de stockage navigateur commun à toutes les specs. theme.custom est racine uniquement : les thèmes sont injectés une fois au démarrage. seo est racine uniquement : l’indexabilité décrit la page servie, que toutes les specs partagent. Et scenarios va dans l’autre sens — déclarez-les uniquement sur les entrées specs[], puisqu’un scénario référence les opérations d’une spec précise. Chaque cas est nommé en console quand une config se trompe.