- Accueil
- API Enriched
- Extensions
- Catalogue des extensions d'enrichissement
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-*etx-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).
Schéma d’entrée
Section intitulée « Schéma d’entrée »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>Injectées — niveau spec (section info)
Section intitulée « Injectées — niveau spec (section info) »x-f5xc-cli-domain
Section intitulée « x-f5xc-cli-domain »- 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
x-f5xc-cli-metadata
Section intitulée « x-f5xc-cli-metadata »- 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
x-f5xc-upstream-timestamp
Section intitulée « x-f5xc-upstream-timestamp »- 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
x-f5xc-upstream-etag
Section intitulée « x-f5xc-upstream-etag »- 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
x-f5xc-enriched-version
Section intitulée « x-f5xc-enriched-version »- 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
x-f5xc-glossary
Section intitulée « x-f5xc-glossary »- 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
x-f5xc-discovered-at
Section intitulée « x-f5xc-discovered-at »- 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
x-f5xc-api-url
Section intitulée « x-f5xc-api-url »- 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
x-f5xc-api-reference-url
Section intitulée « x-f5xc-api-reference-url »- 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
x-f5xc-response-time-ms
Section intitulée « x-f5xc-response-time-ms »- 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
x-f5xc-best-practices
Section intitulée « x-f5xc-best-practices »- 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
x-f5xc-guided-workflows
Section intitulée « x-f5xc-guided-workflows »- 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
x-f5xc-acronyms
Section intitulée « x-f5xc-acronyms »- 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
x-f5xc-console-navigation
Section intitulée « x-f5xc-console-navigation »- 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) »x-f5xc-minimum-configuration
Section intitulée « x-f5xc-minimum-configuration »- 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
x-f5xc-namespace-profile
Section intitulée « x-f5xc-namespace-profile »- 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
x-f5xc-displayorder
Section intitulée « x-f5xc-displayorder »- 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
x-f5xc-terraform-resource
Section intitulée « x-f5xc-terraform-resource »- 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
x-f5xc-display-name
Section intitulée « x-f5xc-display-name »- 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
x-f5xc-console
Section intitulée « x-f5xc-console »- 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
x-f5xc-action
Section intitulée « x-f5xc-action »- 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
Injectées — niveau propriété
Section intitulée « Injectées — niveau propriété »x-f5xc-description
Section intitulée « x-f5xc-description »- Applied at: schema property
- Purpose: Description de propriété enrichie qui complète la
descriptionen 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
x-f5xc-validation
Section intitulée « x-f5xc-validation »- Applied at: schema property
- Purpose: Règles de validation déclaratives dérivées des
ves.io.schema.rulesprotobuf 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
x-f5xc-examples
Section intitulée « x-f5xc-examples »- 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
x-f5xc-example
Section intitulée « x-f5xc-example »- 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
x-f5xc-completion
Section intitulée « x-f5xc-completion »- 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
x-f5xc-defaults
Section intitulée « x-f5xc-defaults »- 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
x-f5xc-required-for-operations
Section intitulée « x-f5xc-required-for-operations »- 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
x-f5xc-required-for
Section intitulée « x-f5xc-required-for »- 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
x-f5xc-conditions
Section intitulée « x-f5xc-conditions »- 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
x-f5xc-deprecated
Section intitulée « x-f5xc-deprecated »- 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
x-f5xc-server-default
Section intitulée « x-f5xc-server-default »- 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
x-f5xc-recommended-value
Section intitulée « x-f5xc-recommended-value »- 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
x-f5xc-recommended-oneof-variant
Section intitulée « x-f5xc-recommended-oneof-variant »- 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
x-f5xc-conflicts-with
Section intitulée « x-f5xc-conflicts-with »- 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
x-f5xc-references
Section intitulée « x-f5xc-references »- 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
x-f5xc-field-examples
Section intitulée « x-f5xc-field-examples »- 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
x-f5xc-requires
Section intitulée « x-f5xc-requires »- 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
x-f5xc-constraints
Section intitulée « x-f5xc-constraints »- 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
x-f5xc-uniqueness
Section intitulée « x-f5xc-uniqueness »- 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
x-f5xc-console-field
Section intitulée « x-f5xc-console-field »- 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
Injectées — niveau opération
Section intitulée « Injectées — niveau opération »x-f5xc-required-fields
Section intitulée « x-f5xc-required-fields »- 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
x-f5xc-danger-level
Section intitulée « x-f5xc-danger-level »- 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
x-f5xc-confirmation-required
Section intitulée « x-f5xc-confirmation-required »- 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
x-f5xc-side-effects
Section intitulée « x-f5xc-side-effects »- 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
x-f5xc-discovered-response-time
Section intitulée « x-f5xc-discovered-response-time »- 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
x-f5xc-discovered-rate-limits
Section intitulée « x-f5xc-discovered-rate-limits »- 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
x-f5xc-discovered-error-catalog
Section intitulée « x-f5xc-discovered-error-catalog »- 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) »x-f5xc-category
Section intitulée « x-f5xc-category »- 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
x-f5xc-primary-resources
Section intitulée « x-f5xc-primary-resources »- 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
x-f5xc-critical-resources
Section intitulée « x-f5xc-critical-resources »- 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
x-f5xc-description-short
Section intitulée « x-f5xc-description-short »- 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
x-f5xc-description-medium
Section intitulée « x-f5xc-description-medium »- 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
x-f5xc-description-long
Section intitulée « x-f5xc-description-long »- 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
x-f5xc-complexity
Section intitulée « x-f5xc-complexity »- 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
x-f5xc-requires-tier
Section intitulée « x-f5xc-requires-tier »- 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
x-f5xc-is-preview
Section intitulée « x-f5xc-is-preview »- 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
x-f5xc-use-cases
Section intitulée « x-f5xc-use-cases »- 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
x-f5xc-icon
Section intitulée « x-f5xc-icon »- 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
x-f5xc-logo-svg
Section intitulée « x-f5xc-logo-svg »- 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
x-f5xc-related-domains
Section intitulée « x-f5xc-related-domains »- 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
x-f5xc-doc-section
Section intitulée « x-f5xc-doc-section »- 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
Transmission en amont
Section intitulée « Transmission en amont »x-ves-proto-package
Section intitulée « x-ves-proto-package »- 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
x-ves-proto-file
Section intitulée « x-ves-proto-file »- 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
x-ves-proto-message
Section intitulée « x-ves-proto-message »- 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
x-ves-proto-service
Section intitulée « x-ves-proto-service »- 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
x-ves-proto-rpc
Section intitulée « x-ves-proto-rpc »- 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
x-displayname
Section intitulée « x-displayname »- 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
x-ves-oneof
Section intitulée « x-ves-oneof »- 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
x-ves-default
Section intitulée « x-ves-default »- 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
x-ves-required
Section intitulée « x-ves-required »- 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
x-f5xc-wire-name
Section intitulée « x-f5xc-wire-name »- 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