- Home
- API Enriched
- Estensioni
- Catalogo delle estensioni di arricchimento
Catalogo delle estensioni di arricchimento
Fonte di riferimento autorevole per ogni estensione x-* presente in
docs/specifications/api/*.json. La parità con
scripts/utils/extension_constants.py è verificata da
tests/test_extension_catalog.py.
Sono documentate tre classi di estensioni:
- Iniettate qui — estensioni aggiunte dai nostri arricchitori (
x-f5xc-*ex-ves-cli-*/x-ves-field-*/x-ves-operation-*/ varianti di discovery). Queste sono quelle che gli strumenti downstream devono consumare. - Pass-through upstream — estensioni emesse da F5 nelle specifiche sorgente
e preservate invariate (
x-ves-proto-*,x-displayname, ecc.). Documentate per trasparenza ma non controllate da questo repository. - Iniettate in futuro — non ancora emesse; documentate nel momento in cui un arricchitore inizia a produrle (non applicabile alla popolazione iniziale).
Schema di ogni voce
Sezione intitolata “Schema di ogni voce”Ogni voce sottostante ha esattamente questa forma. Il test di parità in
tests/test_extension_catalog.py tollera che il corpo della sezione sia
ridotto purché l’intestazione ### x-name esista e il flag
Pass-through from upstream: sia presente con valore yes o no.
### x-<name>- **Applied at:** <schema | parameter | operation | path-item | info | response>- **Purpose:** <una frase>- **Consumers:** <CLI | VSCode | Terraform | Web UI | multiple | N/A>- **Value type:** <string | number | boolean | object | array>- **Value schema:** <frammento JSON Schema, oppure N/A>- **Injected by:** <scripts/utils/<enricher>.py, oppure "upstream">- **Driven by config:** <config/<file>.yaml, oppure "hardcoded", oppure "upstream">- **Example:** <breve frammento>- **Pass-through from upstream:** <yes/no>Iniettate — livello spec (sezione info)
Sezione intitolata “Iniettate — livello spec (sezione info)”x-f5xc-cli-domain
Sezione intitolata “x-f5xc-cli-domain”- Applied at: info
- Purpose: Identifica lo slug del dominio CLI (es.
http_loadbalancer) per una spec arricchita. - 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
Sezione intitolata “x-f5xc-cli-metadata”- Applied at: info
- Purpose: Blocco di metadati globali CLI (nome strumento, suggerimenti di versione, raggruppamento dominio).
- 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
Sezione intitolata “x-f5xc-upstream-timestamp”- Applied at: info
- Purpose: Timestamp della spec sorgente upstream da cui è stato costruito il file arricchito.
- 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
Sezione intitolata “x-f5xc-upstream-etag”- Applied at: info
- Purpose: ETag dell’asset di rilascio della spec sorgente upstream.
- 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
Sezione intitolata “x-f5xc-enriched-version”- Applied at: info
- Purpose: Versione semantica applicata alla spec arricchita dalla 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
Sezione intitolata “x-f5xc-glossary”- Applied at: info
- Purpose: Blocco glossario di branding/terminologia applicato a ogni spec di dominio.
- 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
Sezione intitolata “x-f5xc-discovered-at”- Applied at: info
- Purpose: Timestamp di quando è stato eseguito il passaggio di discovery sull’API live.
- 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
Sezione intitolata “x-f5xc-api-url”- Applied at: info
- Purpose: URL base dell’API live esaminata durante la discovery.
- 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
Sezione intitolata “x-f5xc-api-reference-url”- Applied at: info
- Purpose: URL della pagina di documentazione di riferimento API ospitata per questo dominio.
- Consumers: multiple
- Value type: string
- Value schema:
{"type": "string", "format": "uri"} - Injected by: scripts/utils/external_docs_enricher.py
- Driven by config: none (derivato dal nome del dominio)
- 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
Sezione intitolata “x-f5xc-response-time-ms”- Applied at: info
- Purpose: Tempo di risposta osservato (ms) per l’API esaminata durante la discovery.
- 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
Sezione intitolata “x-f5xc-best-practices”- Applied at: info
- Purpose: Linee guida curate sulle best practice per un dominio.
- 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
Sezione intitolata “x-f5xc-guided-workflows”- Applied at: info
- Purpose: Flussi di lavoro guidati passo dopo passo per completare attività comuni in un dominio.
- 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
Sezione intitolata “x-f5xc-acronyms”- Applied at: info
- Purpose: Tabella di espansione degli acronimi per dominio.
- 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
Sezione intitolata “x-f5xc-console-navigation”- Applied at: spec info
- Purpose: Albero di navigazione globale della console — gerarchia di workspace e menu.
- 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
Iniettate — livello schema (schemi dei componenti)
Sezione intitolata “Iniettate — livello schema (schemi dei componenti)”x-f5xc-minimum-configuration
Sezione intitolata “x-f5xc-minimum-configuration”- Applied at: schema
- Purpose: Insieme minimo di campi necessari per eseguire con successo un POST/PUT di questa risorsa.
- 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
Sezione intitolata “x-f5xc-namespace-profile”- Applied at: info
- Purpose: Fornisce metadati di vincolo, raccomandazione e classificazione del namespace per una risorsa.
- 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
Sezione intitolata “x-f5xc-displayorder”- Applied at: schema
- Purpose: Ordinamento suggerito delle proprietà per la presentazione nell’interfaccia utente/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
Sezione intitolata “x-f5xc-terraform-resource”- Applied at: schema
- Purpose: Nome del tipo di risorsa Terraform che corrisponde a questo schema.
- 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
Sezione intitolata “x-f5xc-display-name”- Applied at: schema
- Purpose: Nome visualizzato leggibile dall’utente per uno schema di risorsa (sostituisce la generazione automatica).
- 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
Sezione intitolata “x-f5xc-console”- Applied at: schema
- Purpose: Navigazione dell’interfaccia utente della console, routing e struttura del modulo per questa risorsa.
- 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
Sezione intitolata “x-f5xc-action”- Applied at: schema
- Purpose: Contrassegna uno schema la cui operazione è una risorsa di tipo azione, ad es.
approve, in modo che codegen generi una risorsa di azione anziché 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
Iniettate — livello proprietà
Sezione intitolata “Iniettate — livello proprietà”x-f5xc-description
Sezione intitolata “x-f5xc-description”- Applied at: schema property
- Purpose: Descrizione arricchita della proprietà che integra la
descriptionupstream. - 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
Sezione intitolata “x-f5xc-validation”- Applied at: schema property
- Purpose: Regole di validazione dichiarative derivate dalle
ves.io.schema.rulesprotobuf upstream. - 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
Sezione intitolata “x-f5xc-examples”- Applied at: schema property
- Purpose: Valori di esempio illustrativi multipli per una proprietà.
- 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
Sezione intitolata “x-f5xc-example”- Applied at: schema property
- Purpose: Un singolo valore di esempio canonico.
- 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
Sezione intitolata “x-f5xc-completion”- Applied at: schema property
- Purpose: Suggerimenti per il completamento della shell (enum statico o comando dinamico).
- 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
Sezione intitolata “x-f5xc-defaults”- Applied at: schema property
- Purpose: Valore/i predefinito/i da esporre nella documentazione generata e nelle interfacce utente.
- 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
Sezione intitolata “x-f5xc-required-for-operations”- Applied at: schema property
- Purpose: Elenca le operazioni HTTP (POST/PUT/…) che richiedono questa proprietà.
- 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
Sezione intitolata “x-f5xc-required-for”- Applied at: schema property
- Purpose: Elenca le combinazioni di funzionalità con nome che richiedono questa proprietà.
- 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
Sezione intitolata “x-f5xc-conditions”- Applied at: schema property
- Purpose: Requisiti condizionali (es. obbligatorio quando un campo fratello è uguale a 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
Sezione intitolata “x-f5xc-deprecated”- Applied at: schema property
- Purpose: Avviso di deprecazione con indicazioni sul campo sostitutivo.
- 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
Sezione intitolata “x-f5xc-server-default”- Applied at: schema property
- Purpose: Valore predefinito che il server assegna quando il client omette la proprietà.
- 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
Sezione intitolata “x-f5xc-recommended-value”- Applied at: schema property
- Purpose: Valore di produzione raccomandato per un campo in cui il valore predefinito del server non è ottimale.
- 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
Sezione intitolata “x-f5xc-recommended-oneof-variant”- Applied at: schema property
- Purpose: Per i blocchi
oneOf, indica quale variante è raccomandata. - 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
Sezione intitolata “x-f5xc-conflicts-with”- Applied at: schema property
- Purpose: Elenca le proprietà sorelle che non possono essere impostate insieme a questa.
- 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
Sezione intitolata “x-f5xc-references”- Applied at: schema property
- Purpose: Dichiara il tipo di risorsa referenziata da un campo ObjectRefType (la risorsa a cui punta, che deve esistere preventivamente), con selezione della scelta oneOf, obbligatorietà alla creazione e cardinalità — la dimensione di riferimento alle risorse del modello di dipendenza.
- 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
Sezione intitolata “x-f5xc-field-examples”- Applied at: schema (CreateSpecType)
- Purpose: Valori di esempio per campo alla creazione (mappa piatta field_path → valore) derivati da x-f5xc-minimum-configuration.example_yaml — l’unica fonte deterministica di valori di creazione per la generazione di moduli/flussi di lavoro downstream.
- 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: derivato da x-f5xc-minimum-configuration.example_yaml
- Example:
"x-f5xc-field-examples": {"spec.port": 8080} - Pass-through from upstream: no
x-f5xc-requires
Sezione intitolata “x-f5xc-requires”- Applied at: schema property
- Purpose: Documenta le dipendenze tra campi in cui un campo richiede che un altro sia impostato.
- 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 (sezione dependencies)
- 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
Sezione intitolata “x-f5xc-constraints”- Applied at: schema property
- Purpose: Vincoli numerici/stringa derivati dall’analisi dell’API live o da pattern statici.
- 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
Sezione intitolata “x-f5xc-uniqueness”- Applied at: schema property
- Purpose: Dichiara se un campo deve essere univoco nel proprio ambito.
- 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
Sezione intitolata “x-f5xc-console-field”- Applied at: schema property
- Purpose: Metadati del widget del modulo console per questa proprietà 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
Iniettate — livello operazione
Sezione intitolata “Iniettate — livello operazione”x-f5xc-required-fields
Sezione intitolata “x-f5xc-required-fields”- Applied at: operation
- Purpose: Indica i campi del corpo dell’operazione che devono essere forniti per il successo.
- 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
Sezione intitolata “x-f5xc-danger-level”- Applied at: operation
- Purpose: Classifica il raggio d’azione di un’operazione (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
Sezione intitolata “x-f5xc-confirmation-required”- Applied at: operation
- Purpose: Indica se CLI/UI deve richiedere all’utente una conferma prima dell’esecuzione.
- 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
Sezione intitolata “x-f5xc-side-effects”- Applied at: operation
- Purpose: Elenca gli effetti collaterali osservabili dell’operazione (riavvio, riconfigurazione, ecc.).
- 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
Sezione intitolata “x-f5xc-discovered-response-time”- Applied at: operation
- Purpose: Tempo di risposta misurato empiricamente per questa operazione durante la discovery.
- 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
Sezione intitolata “x-f5xc-discovered-rate-limits”- Applied at: operation
- Purpose: Header di rate limit osservati / comportamento rilevato dall’API live.
- 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
Sezione intitolata “x-f5xc-discovered-error-catalog”- Applied at: operation
- Purpose: Catalogo delle risposte di errore osservate durante la discovery live, con payload di esempio.
- 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
Iniettate — livello indice (metadati di dominio)
Sezione intitolata “Iniettate — livello indice (metadati di dominio)”x-f5xc-category
Sezione intitolata “x-f5xc-category”- Applied at: info
- Purpose: Categoria di raggruppamento di primo livello per CLI / UI / documentazione / Terraform di un dominio.
- 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
Sezione intitolata “x-f5xc-primary-resources”- Applied at: info
- Purpose: Elenco dei tipi di risorsa primari che definiscono il dominio.
- 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
Sezione intitolata “x-f5xc-critical-resources”- Applied at: info
- Purpose: Risorse che richiedono particolare attenzione (critiche in produzione).
- 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
Sezione intitolata “x-f5xc-description-short”- Applied at: info
- Purpose: Descrizione breve del dominio (~60 caratteri). Si applica anche a livello di proprietà per descrizioni lunghe.
- 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
Sezione intitolata “x-f5xc-description-medium”- Applied at: info
- Purpose: Descrizione media del dominio (~150 caratteri). Si applica anche a livello di proprietà.
- 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
Sezione intitolata “x-f5xc-description-long”- Applied at: info
- Purpose: Descrizione lunga del dominio (~500 caratteri).
- 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
Sezione intitolata “x-f5xc-complexity”- Applied at: info
- Purpose: Livello di complessità relativo per la creazione di configurazioni in questo dominio.
- 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
Sezione intitolata “x-f5xc-requires-tier”- Applied at: info
- Purpose: Livello minimo di sottoscrizione F5 XC richiesto.
- 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
Sezione intitolata “x-f5xc-is-preview”- Applied at: info
- Purpose: Contrassegna un dominio come funzionalità in anteprima / beta.
- 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
Sezione intitolata “x-f5xc-use-cases”- Applied at: info
- Purpose: Casi d’uso con nome supportati da questo dominio.
- 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
Sezione intitolata “x-f5xc-icon”- Applied at: info
- Purpose: Identificatore dell’icona da utilizzare per il rendering di questo dominio nell’interfaccia utente.
- 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
Sezione intitolata “x-f5xc-logo-svg”- Applied at: info
- Purpose: SVG inline (o percorso) per un logo del brand che rappresenta il dominio.
- 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
Sezione intitolata “x-f5xc-related-domains”- Applied at: info
- Purpose: Riferimenti incrociati ad altri domini comunemente utilizzati insieme a questo.
- 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
Sezione intitolata “x-f5xc-doc-section”- Applied at: info
- Purpose: Sezione della documentazione / slug di raggruppamento di navigazione per la documentazione renderizzata.
- 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
Pass-through upstream
Sezione intitolata “Pass-through upstream”x-ves-proto-package
Sezione intitolata “x-ves-proto-package”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- 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
Sezione intitolata “x-ves-proto-file”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- 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
Sezione intitolata “x-ves-proto-message”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- 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
Sezione intitolata “x-ves-proto-service”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- 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
Sezione intitolata “x-ves-proto-rpc”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- 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
Sezione intitolata “x-displayname”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- 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
Sezione intitolata “x-ves-oneof”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- Consumers: N/A
- Value type: varies
- Value schema: N/A
- Injected by: upstream
- Driven by config: upstream
- Example: Consultare la documentazione upstream F5.
- Pass-through from upstream: yes
x-ves-default
Sezione intitolata “x-ves-default”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- Consumers: N/A
- Value type: varies
- Value schema: N/A
- Injected by: upstream
- Driven by config: upstream
- Example: Consultare la documentazione upstream F5.
- Pass-through from upstream: yes
x-ves-required
Sezione intitolata “x-ves-required”- Applied at: upstream
- Purpose: Preservato invariato dalla spec upstream F5.
- Consumers: N/A
- Value type: varies
- Value schema: N/A
- Injected by: upstream
- Driven by config: upstream
- Example: Consultare la documentazione upstream F5.
- Pass-through from upstream: yes
x-f5xc-wire-name
Sezione intitolata “x-f5xc-wire-name”- Applied at: schema property
- Purpose: Chiave di proprietà upstream originale che deve essere inviata nella richiesta. La zona di buffer rinomina i nomi di proprietà scritti in modo errato da F5 e registra qui la chiave originale, poiché il server F5 accetta solo la grafia originale.
- 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