Aller au contenu

Catalogue des extensions d'enrichissement

Source de vérité pour chaque extension x-* qui apparaît dans docs/specifications/api/*.json. La parité avec scripts/utils/extension_constants.py est vérifiée par tests/test_extension_catalog.py.

Trois classes d’extensions sont documentées ici :

  • Injectées ici — extensions ajoutées par nos enrichisseurs (x-f5xc-* et x-ves-cli-* / x-ves-field-* / x-ves-operation-* / variantes de découverte). Ce sont celles que les outils en aval doivent consommer.
  • Transmission en amont — extensions émises par F5 dans les spécifications sources et préservées à l’identique (x-ves-proto-*, x-displayname, etc.). Documentées par souci de transparence, mais non contrôlées par ce dépôt.
  • Injectées ultérieurement — pas encore émises ; documentées ici dès qu’un enrichisseur commence à les produire (non applicable lors de la population initiale).

Chaque entrée ci-dessous possède exactement cette forme. Le test de parité dans tests/test_extension_catalog.py tolère que le corps de section soit succinct, à condition que l’en-tête ### x-name existe et que l’indicateur Pass-through from upstream: soit présent avec la valeur yes ou no.

### x-<name>
- **Applied at:** <schema | parameter | operation | path-item | info | response>
- **Purpose:** <une phrase>
- **Consumers:** <CLI | VSCode | Terraform | Web UI | multiple | N/A>
- **Value type:** <string | number | boolean | object | array>
- **Value schema:** <extrait JSON Schema, ou N/A>
- **Injected by:** <scripts/utils/<enricher>.py, ou "upstream">
- **Driven by config:** <config/<file>.yaml, ou "hardcoded", ou "upstream">
- **Example:** <extrait court>
- **Pass-through from upstream:** <yes/no>
  • Applied at: info
  • Purpose: Identifie le slug de domaine CLI (ex. http_loadbalancer) pour une spec enrichie.
  • Consumers: CLI
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: hardcoded
  • Example: "x-f5xc-cli-domain": "http_loadbalancer"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Bloc de métadonnées CLI global (nom de l’outil, indications de version, regroupement de domaine).
  • Consumers: CLI
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/cli_metadata.yaml
  • Example: "x-f5xc-cli-metadata": {"tool": "xcsh", "domain": "http_loadbalancer"}
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Horodatage de la spec source en amont à partir de laquelle le fichier enrichi a été construit.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string", "format": "date-time"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: hardcoded
  • Example: "x-f5xc-upstream-timestamp": "2026-04-21T12:00:00Z"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: ETag de la ressource de version de la spec source en amont.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: hardcoded
  • Example: "x-f5xc-upstream-etag": "\"abc123\""
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Version sémantique apposée sur la spec enrichie par le pipeline.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: hardcoded
  • Example: "x-f5xc-enriched-version": "3.2.1"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Bloc de glossaire de marque/terminologie appliqué à chaque spec de domaine.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/branding.py
  • Driven by config: config/branding.yaml
  • Example: "x-f5xc-glossary": {"XC": "F5 Distributed Cloud"}
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Horodatage indiquant quand la passe de découverte de l’API en direct a été exécutée.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string", "format": "date-time"}
  • Injected by: scripts/utils/discovery_enricher.py
  • Driven by config: config/discovery.yaml
  • Example: "x-f5xc-discovered-at": "2026-04-21T09:15:00Z"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: URL de base de l’API en direct sondée lors de la découverte.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string", "format": "uri"}
  • Injected by: scripts/utils/discovery_enricher.py
  • Driven by config: config/discovery.yaml
  • Example: "x-f5xc-api-url": "https://f5-amer-ent.console.ves.volterra.io"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: URL de la page de documentation de référence API hébergée pour ce domaine.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string", "format": "uri"}
  • Injected by: scripts/utils/external_docs_enricher.py
  • Driven by config: none (derived from domain name)
  • Example: "x-f5xc-api-reference-url": "https://f5-sales-demo.github.io/api-specs-enriched/api-reference/sites/"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Temps de réponse observé (ms) pour l’API sondée lors de la découverte.
  • Consumers: multiple
  • Value type: number
  • Value schema: {"type": "number"}
  • Injected by: scripts/utils/discovery_enricher.py
  • Driven by config: config/discovery.yaml
  • Example: "x-f5xc-response-time-ms": 42
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Recommandations de bonnes pratiques pour un domaine.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "object"}}
  • Injected by: scripts/utils/best_practices_enricher.py
  • Driven by config: config/best_practices.yaml
  • Example: "x-f5xc-best-practices": [{"id": "bp-1", "text": "Prefer HTTPS"}]
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Workflows nommés, pas à pas, pour accomplir des tâches courantes dans un domaine.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "object"}}
  • Injected by: scripts/utils/guided_workflow_enricher.py
  • Driven by config: config/guided_workflows.yaml
  • Example: "x-f5xc-guided-workflows": [{"name": "create-lb", "steps": [...]}]
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Table d’expansion des acronymes par domaine.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object", "additionalProperties": {"type": "string"}}
  • Injected by: scripts/utils/acronym_enricher.py
  • Driven by config: config/acronyms.yaml
  • Example: "x-f5xc-acronyms": {"LB": "Load Balancer"}
  • Pass-through from upstream: no
  • Applied at: spec info
  • Purpose: Arborescence de navigation globale de la console — hiérarchie des espaces de travail et des menus.
  • Consumers: console-catalog, xcsh, browser-automation
  • Value type: object
  • Value schema: {"type": "object", "properties": {"workspaces": "object"}}
  • Injected by: scripts/utils/console_ui_enricher.py
  • Driven by config: config/console_ui.yaml
  • Example: "x-f5xc-console-navigation": {"workspaces": {"web-app-and-api-protection": {"label": "Web App & API Protection", "route_prefix": "/web/workspaces/web-app-and-api-protection"}}}
  • Pass-through from upstream: no

Injectées — niveau schéma (schémas de composants)

Section intitulée « Injectées — niveau schéma (schémas de composants) »
  • Applied at: schema
  • Purpose: Ensemble minimal de champs requis pour effectuer avec succès un POST/PUT de cette ressource.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/minimum_configuration_enricher.py
  • Driven by config: config/minimum_configs.yaml
  • Example: "x-f5xc-minimum-configuration": {"required_fields": ["name"]}
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Fournit des métadonnées de contrainte, de recommandation et de classification de namespace pour une ressource.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object", "properties": {"constraint": {"type": "object"}, "recommendation": {"type": "object"}, "classification": {"type": "object"}}}
  • Injected by: scripts/utils/namespace_profile_enricher.py
  • Driven by config: config/namespace_profile.yaml
  • Example: "x-f5xc-namespace-profile": {"constraint": {"allowed": ["system", "shared", "user"]}, "recommendation": {"default": "shared"}, "classification": {"multi_tenant_pattern": "shared-ref"}}
  • Pass-through from upstream: no
  • Applied at: schema
  • Purpose: Ordre suggéré des propriétés pour la présentation dans l’interface utilisateur/CLI.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_metadata.yaml
  • Example: "x-f5xc-displayorder": ["name", "description", "spec"]
  • Pass-through from upstream: no
  • Applied at: schema
  • Purpose: Nom du type de ressource Terraform correspondant à ce schéma.
  • Consumers: Terraform
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_metadata.yaml
  • Example: "x-f5xc-terraform-resource": "volterra_http_loadbalancer"
  • Pass-through from upstream: no
  • Applied at: schema
  • Purpose: Nom d’affichage lisible par l’humain pour un schéma de ressource (remplace la génération automatique).
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_metadata.yaml
  • Example: "x-f5xc-display-name": "HTTP Load Balancer"
  • Pass-through from upstream: no
  • Applied at: schema
  • Purpose: Navigation dans la console, routage et structure du formulaire pour cette ressource.
  • Consumers: console-catalog, xcsh, vscode-xcsh, browser-automation
  • Value type: object
  • Value schema: {"type": "object", "properties": {"workspace": "string", "menu_path": "array", "route_pattern": "string", "breadcrumbs": "array", "add_action": "object", "form_sections": "array", "metadata": "object"}}
  • Injected by: scripts/utils/console_ui_enricher.py
  • Driven by config: config/console_ui.yaml
  • Example: "x-f5xc-console": {"workspace": "web-app-and-api-protection", "menu_path": ["Manage", "Load Balancers", "HTTP Load Balancers"]}
  • Pass-through from upstream: no
  • Applied at: schema
  • Purpose: Marque un schéma dont l’opération est une ressource de type action, par exemple approve, afin que codegen génère une ressource d’action plutôt que CRUD.
  • Consumers: Terraform
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/utils/schema_override_enricher.py
  • Driven by config: config/schema_overrides.yaml
  • Example: "x-f5xc-action": "approve"
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Description de propriété enrichie qui complète la description en amont.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_descriptions.yaml
  • Example: "x-f5xc-description": "Fully-qualified domain name used for TLS SNI."
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Règles de validation déclaratives dérivées des ves.io.schema.rules protobuf en amont.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/validation_enricher.py
  • Driven by config: config/validation_rules.yaml
  • Example: "x-f5xc-validation": {"min_len": 1, "max_len": 64}
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Plusieurs valeurs d’exemple illustratives pour une propriété.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array"}
  • Injected by: scripts/utils/resource_examples_enricher.py
  • Driven by config: config/resource_examples.yaml
  • Example: "x-f5xc-examples": ["example.com", "api.example.com"]
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Valeur d’exemple canonique unique.
  • Consumers: multiple
  • Value type: string
  • Value schema: {}
  • Injected by: scripts/utils/field_description_enricher.py
  • Driven by config: config/field_descriptions.yaml
  • Example: "x-f5xc-example": "example.com"
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Indications de complétion shell (énumération statique ou commande dynamique).
  • Consumers: CLI
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_metadata.yaml
  • Example: "x-f5xc-completion": {"source": "command", "cmd": "xcsh namespace list"}
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Valeur(s) par défaut à afficher dans la documentation générée et les interfaces utilisateur.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_metadata.yaml
  • Example: "x-f5xc-defaults": {"value": "default"}
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Liste les opérations HTTP (POST/PUT/…) qui nécessitent cette propriété.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_metadata.yaml
  • Example: "x-f5xc-required-for-operations": ["POST", "PUT"]
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Liste les combinaisons de fonctionnalités nommées qui nécessitent cette propriété.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/utils/minimum_configuration_enricher.py
  • Driven by config: config/minimum_configs.yaml
  • Example: "x-f5xc-required-for": ["tls-origin", "mtls"]
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Exigences conditionnelles (ex. requis lorsqu’un champ frère est égal à X).
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "object"}}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_metadata.yaml
  • Example: "x-f5xc-conditions": [{"when": "tls.enabled == true", "require": "cert"}]
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Avis de dépréciation avec des conseils sur le remplacement.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/field_metadata_enricher.py
  • Driven by config: config/field_metadata.yaml
  • Example: "x-f5xc-deprecated": {"since": "3.0.0", "use": "new_field"}
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Valeur par défaut que le serveur attribue lorsque le client omet la propriété.
  • Consumers: multiple
  • Value type: string
  • Value schema: {}
  • Injected by: scripts/utils/default_value_enricher.py
  • Driven by config: config/discovered_defaults.yaml
  • Example: "x-f5xc-server-default": "ROUND_ROBIN"
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Valeur recommandée en production pour un champ dont la valeur par défaut du serveur est sous-optimale.
  • Consumers: multiple
  • Value type: string
  • Value schema: {}
  • Injected by: scripts/utils/default_value_enricher.py
  • Driven by config: config/discovered_defaults.yaml
  • Example: "x-f5xc-recommended-value": "LEAST_REQUEST"
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Pour les blocs oneOf, indique quelle variante est recommandée.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/utils/default_value_enricher.py
  • Driven by config: config/discovered_defaults.yaml
  • Example: "x-f5xc-recommended-oneof-variant": "tls_parameters"
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Liste les propriétés frères qui ne peuvent pas être définies conjointement avec celle-ci.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/utils/conflicts_with_enricher.py
  • Driven by config: hardcoded
  • Example: "x-f5xc-conflicts-with": ["plaintext", "auto_cert"]
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Déclare le type de ressource référencé par un champ ObjectRefType (la ressource vers laquelle il pointe et qui doit exister préalablement), avec gestion des choix oneOf, obligation à la création et cardinalité — la dimension de référence de ressource du modèle de dépendance.
  • Consumers: terraform, cli, mcp, IDE, ai-assistants
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "object", "properties": {"resource_kind": {"type": ["string", "null"]}, "field_path": {"type": "string"}, "gated_by": {"type": ["object", "null"]}, "required": {"type": "boolean"}, "cardinality": {"type": "string"}}}}
  • Injected by: scripts/utils/references_enricher.py
  • Driven by config: config/resource_references.yaml
  • Example: "x-f5xc-references": [{"resource_kind": "app_firewall", "field_path": "app_firewall", "gated_by": {"choice": "waf_choice"}, "required": false, "cardinality": "single"}]
  • Pass-through from upstream: no
  • Applied at: schema (CreateSpecType)
  • Purpose: Valeurs d’exemple par champ pour la création (map plate champ_path → valeur) dérivées de x-f5xc-minimum-configuration.example_yaml — source unique de valeurs de création déterministes pour la génération de formulaires/workflows en aval.
  • Consumers: cli, workflow-generator, sweep, ai-assistants
  • Value type: object
  • Value schema: {"type": "object", "additionalProperties": true}
  • Injected by: scripts/utils/example_field_enricher.py
  • Driven by config: derived from x-f5xc-minimum-configuration.example_yaml
  • Example: "x-f5xc-field-examples": {"spec.port": 8080}
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Documente les dépendances inter-champs où un champ en requiert un autre d’être défini.
  • Consumers: compile_catalog.py, xcsh CLI
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "object", "properties": {"field": {"type": "string"}, "required": {"type": "boolean"}, "reason": {"type": "string"}}}}
  • Injected by: scripts/utils/dependency_enricher.py
  • Driven by config: config/minimum_configs.yaml (dependencies section)
  • Example: "x-f5xc-requires": [{"field": "tls_config", "required": true, "reason": "use_tls requires tls_config sub-field"}]
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Contraintes numériques/de chaîne dérivées du sondage de l’API en direct ou de patterns statiques.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/constraint_enricher.py
  • Driven by config: config/constraint_patterns.yaml
  • Example: "x-f5xc-constraints": {"min": 1, "max": 65535, "source": "live-api"}
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Déclare si un champ doit être unique dans son périmètre.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/uniqueness_enricher.py
  • Driven by config: hardcoded
  • Example: "x-f5xc-uniqueness": {"scope": "namespace"}
  • Pass-through from upstream: no
  • Applied at: schema property
  • Purpose: Métadonnées du widget de formulaire de la console pour cette propriété d’API.
  • Consumers: console-catalog, xcsh, browser-automation
  • Value type: object
  • Value schema: {"type": "object", "properties": {"widget_type": "string", "label": "string", "default": "any", "selector": "string", "form_section": "string", "show_when": "object", "advanced": "boolean"}}
  • Injected by: scripts/utils/console_ui_enricher.py
  • Driven by config: config/console_field_metadata.yaml
  • Example: "x-f5xc-console-field": {"widget_type": "listbox", "default": "HTTPS with Automatic Certificate", "form_section": "domains-and-lb-type"}
  • Pass-through from upstream: no
  • Applied at: operation
  • Purpose: Nomme les champs du corps d’opération qui doivent être fournis pour qu’elle réussisse.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/utils/operation_metadata_enricher.py
  • Driven by config: config/operation_metadata.yaml
  • Example: "x-f5xc-required-fields": ["metadata.name", "spec.domains"]
  • Pass-through from upstream: no
  • Applied at: operation
  • Purpose: Classifie le rayon d’impact d’une opération (low/medium/high/critical).
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string", "enum": ["low", "medium", "high", "critical"]}
  • Injected by: scripts/utils/operation_metadata_enricher.py
  • Driven by config: config/operation_metadata.yaml
  • Example: "x-f5xc-danger-level": "high"
  • Pass-through from upstream: no
  • Applied at: operation
  • Purpose: Indique si la CLI/l’interface utilisateur doit demander une confirmation à l’utilisateur avant d’exécuter.
  • Consumers: multiple
  • Value type: boolean
  • Value schema: {"type": "boolean"}
  • Injected by: scripts/utils/operation_metadata_enricher.py
  • Driven by config: config/operation_metadata.yaml
  • Example: "x-f5xc-confirmation-required": true
  • Pass-through from upstream: no
  • Applied at: operation
  • Purpose: Liste les effets de bord observables de l’opération (redémarrage, reconfiguration, etc.).
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/utils/operation_metadata_enricher.py
  • Driven by config: config/operation_metadata.yaml
  • Example: "x-f5xc-side-effects": ["invalidates-cache"]
  • Pass-through from upstream: no
  • Applied at: operation
  • Purpose: Temps de réponse mesuré empiriquement pour cette opération lors de la découverte.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/discovery_enricher.py
  • Driven by config: config/discovery_enrichment.yaml
  • Example: "x-f5xc-discovered-response-time": {"p50_ms": 40, "p95_ms": 120}
  • Pass-through from upstream: no
  • Applied at: operation
  • Purpose: En-têtes de limite de débit / comportement observés depuis l’API en direct.
  • Consumers: multiple
  • Value type: object
  • Value schema: {"type": "object"}
  • Injected by: scripts/utils/discovery_enricher.py
  • Driven by config: config/discovery_enrichment.yaml
  • Example: "x-f5xc-discovered-rate-limits": {"limit": 100, "window_s": 60}
  • Pass-through from upstream: no
  • Applied at: operation
  • Purpose: Catalogue des réponses d’erreur observées lors de la découverte en direct, avec des exemples de charges utiles.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "object"}}
  • Injected by: scripts/utils/discovery_enricher.py
  • Driven by config: config/discovery_enrichment.yaml
  • Example: "x-f5xc-discovered-error-catalog": [{"status": 400, "reason": "bad_request"}]
  • Pass-through from upstream: no

Injectées — niveau index (métadonnées de domaine)

Section intitulée « Injectées — niveau index (métadonnées de domaine) »
  • Applied at: info
  • Purpose: Catégorie de regroupement de premier niveau pour CLI / interface utilisateur / documentation / Terraform d’un domaine.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-category": "networking"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Liste des types de ressources primaires qui définissent le domaine.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-primary-resources": ["http_loadbalancer"]
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Ressources nécessitant une attention particulière (critiques en production).
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/critical_resources.yaml
  • Example: "x-f5xc-critical-resources": ["tls_certificate"]
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Description courte (~60 caractères) du domaine. S’applique également au niveau propriété pour les descriptions longues.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/utils/property_description_short_enricher.py
  • Driven by config: config/property_description_short.yaml
  • Example: "x-f5xc-description-short": "Layer-7 HTTPS load balancing."
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Description moyenne (~150 caractères) du domaine. S’applique également au niveau propriété.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/utils/property_description_short_enricher.py
  • Driven by config: config/property_description_short.yaml
  • Example: "x-f5xc-description-medium": "HTTP/HTTPS load balancer with advanced routing, WAF, and TLS."
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Description longue (~500 caractères) du domaine.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/utils/description_enricher.py
  • Driven by config: config/domain_descriptions.yaml
  • Example: "x-f5xc-description-long": "Full paragraph describing the domain..."
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Niveau de complexité relatif pour la création de configurations dans ce domaine.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string", "enum": ["low", "medium", "high"]}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-complexity": "medium"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Niveau d’abonnement F5 XC minimum requis.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-requires-tier": "enterprise"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Marque un domaine comme fonctionnalité en aperçu / bêta.
  • Consumers: multiple
  • Value type: boolean
  • Value schema: {"type": "boolean"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-is-preview": false
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Cas d’usage nommés que ce domaine prend en charge.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-use-cases": ["tls-termination", "waf"]
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Identifiant d’icône à utiliser lors du rendu de ce domaine dans une interface utilisateur.
  • Consumers: Web UI
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-icon": "f5xc:load-balancer"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: SVG inline (ou chemin) pour un logo de marque représentant le domaine.
  • Consumers: Web UI
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-logo-svg": "<svg>...</svg>"
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Liens croisés vers d’autres domaines couramment utilisés conjointement avec celui-ci.
  • Consumers: multiple
  • Value type: array
  • Value schema: {"type": "array", "items": {"type": "string"}}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-related-domains": ["origin_pool", "tls_certificate"]
  • Pass-through from upstream: no
  • Applied at: info
  • Purpose: Slug de section de documentation / regroupement de navigation pour les docs rendus.
  • Consumers: multiple
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: scripts/merge_specs.py
  • Driven by config: config/domain_patterns.yaml
  • Example: "x-f5xc-doc-section": "load-balancing"
  • Pass-through from upstream: no
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: "x-ves-proto-package": "ves.io.schema.virtual_host"
  • Pass-through from upstream: yes
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: "x-ves-proto-file": "ves.io/schema/virtual_host/types.proto"
  • Pass-through from upstream: yes
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: "x-ves-proto-message": "ves.io.schema.virtual_host.CreateSpecType"
  • Pass-through from upstream: yes
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: "x-ves-proto-service": "ves.io.schema.virtual_host.API"
  • Pass-through from upstream: yes
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: "x-ves-proto-rpc": "ves.io.schema.api_sec.api_crawler.API.Create"
  • Pass-through from upstream: yes
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: "x-displayname": "Namespace"
  • Pass-through from upstream: yes
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: Voir la documentation F5 en amont.
  • Pass-through from upstream: yes
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: Voir la documentation F5 en amont.
  • Pass-through from upstream: yes
  • Applied at: upstream
  • Purpose: Préservé à l’identique depuis la spec F5 en amont.
  • Consumers: N/A
  • Value type: varies
  • Value schema: N/A
  • Injected by: upstream
  • Driven by config: upstream
  • Example: Voir la documentation F5 en amont.
  • Pass-through from upstream: yes
  • Applied at: schema property
  • Purpose: Clé de propriété d’origine en amont qui doit apparaître sur le réseau. La zone tampon renomme les noms de propriétés mal orthographiés de F5 et enregistre ici la clé d’origine, car le serveur F5 n’accepte que l’orthographe d’origine.
  • Consumers: Terraform
  • Value type: string
  • Value schema: {"type": "string"}
  • Injected by: upstream (f5-sales-demo/api-specs)
  • Driven by config: upstream
  • Example: "blocked_service": {"x-f5xc-wire-name": "blocked_sevice"}
  • Pass-through from upstream: yes