- 首頁
- API Enriched
- 擴充功能
- 擴充功能擴充目錄
擴充功能擴充目錄
docs/specifications/api/*.json 中每個 x-* 擴充功能的真實來源。與
scripts/utils/extension_constants.py 的一致性由
tests/test_extension_catalog.py 強制執行。
此處記錄三類擴充功能:
- 此處注入 — 我們的擴充程式所新增的擴充功能(
x-f5xc-*以及x-ves-cli-*/x-ves-field-*/x-ves-operation-*/ 探索 變體)。這些是下游工具應使用的擴充功能。 - 上游直通 — F5 在來源規格中發出並由我們原樣保留的擴充功能(
x-ves-proto-*、x-displayname等)。 為透明起見而記錄,但不受此儲存庫控制。 - 未來注入 — 尚未發出;在擴充程式開始產生時即記錄於此(初始填充時不適用)。
以下每個條目的格式如下。tests/test_extension_catalog.py 中的一致性測試允許章節內容為簡略形式,只要 ### x-name 標題存在且 Pass-through from upstream: 旗標含有值 yes 或 no 即可。
### x-<name>- **Applied at:** <schema | parameter | operation | path-item | info | response>- **Purpose:** <one sentence>- **Consumers:** <CLI | VSCode | Terraform | Web UI | multiple | N/A>- **Value type:** <string | number | boolean | object | array>- **Value schema:** <JSON Schema snippet, or N/A>- **Injected by:** <scripts/utils/<enricher>.py, or "upstream">- **Driven by config:** <config/<file>.yaml, or "hardcoded", or "upstream">- **Example:** <short snippet>- **Pass-through from upstream:** <yes/no>注入 — 規格層級(info 章節)
Section titled “注入 — 規格層級(info 章節)”x-f5xc-cli-domain
Section titled “x-f5xc-cli-domain”- Applied at: info
- Purpose: 識別豐富化規格的 CLI 網域代稱(例如
http_loadbalancer)。 - 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 titled “x-f5xc-cli-metadata”- Applied at: info
- Purpose: CLI 全域中繼資料區塊(工具名稱、版本提示、網域分組)。
- 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 titled “x-f5xc-upstream-timestamp”- Applied at: info
- Purpose: 建立豐富化檔案所依據的上游來源規格時間戳記。
- 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 titled “x-f5xc-upstream-etag”- Applied at: info
- Purpose: 上游來源規格發佈資產的 ETag。
- 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 titled “x-f5xc-enriched-version”- Applied at: info
- Purpose: 由管線標記於豐富化規格上的語意版本號。
- 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 titled “x-f5xc-glossary”- Applied at: info
- Purpose: 套用於每個網域規格的品牌/術語辭彙表區塊。
- 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 titled “x-f5xc-discovered-at”- Applied at: info
- Purpose: 執行即時 API 探索過程的時間戳記。
- 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 titled “x-f5xc-api-url”- Applied at: info
- Purpose: 探索期間所探測的即時 API 基礎 URL。
- 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 titled “x-f5xc-api-reference-url”- Applied at: info
- Purpose: 此網域的託管 API 參考文件頁面 URL。
- 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 titled “x-f5xc-response-time-ms”- Applied at: info
- Purpose: 探索期間所探測的 API 觀測回應時間(毫秒)。
- 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 titled “x-f5xc-best-practices”- Applied at: info
- Purpose: 針對某網域整理的最佳實務指引。
- 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 titled “x-f5xc-guided-workflows”- Applied at: info
- Purpose: 在網域中完成常見任務的具名逐步工作流程。
- 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 titled “x-f5xc-acronyms”- Applied at: info
- Purpose: 每個網域的縮寫展開對照表。
- 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 titled “x-f5xc-console-navigation”- Applied at: spec info
- Purpose: 全域主控台導覽樹 — 工作區與選單階層。
- 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
注入 — 結構描述層級(元件結構描述)
Section titled “注入 — 結構描述層級(元件結構描述)”x-f5xc-minimum-configuration
Section titled “x-f5xc-minimum-configuration”- Applied at: schema
- Purpose: 成功 POST/PUT 此資源所需的最低可行欄位集合。
- 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 titled “x-f5xc-namespace-profile”- Applied at: info
- Purpose: 提供資源的命名空間限制、建議及分類中繼資料。
- 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 titled “x-f5xc-displayorder”- Applied at: schema
- Purpose: 供 UI/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 titled “x-f5xc-terraform-resource”- Applied at: schema
- Purpose: 對應此結構描述的 Terraform 資源類型名稱。
- 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 titled “x-f5xc-display-name”- Applied at: schema
- Purpose: 資源結構描述的人類可讀顯示名稱(覆蓋自動產生的名稱)。
- 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 titled “x-f5xc-console”- Applied at: schema
- Purpose: 此資源的主控台 UI 導覽、路由及表單結構。
- 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 titled “x-f5xc-action”- Applied at: schema
- Purpose: 標記其操作為動作型(action-style)資源的 schema,例如
approve,以便 codegen 產生動作資源而非 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
注入 — 屬性層級
Section titled “注入 — 屬性層級”x-f5xc-description
Section titled “x-f5xc-description”- Applied at: schema property
- Purpose: 補充上游
description的豐富化屬性說明。 - 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 titled “x-f5xc-validation”- Applied at: schema property
- Purpose: 從上游 protobuf
ves.io.schema.rules衍生的宣告式驗證規則。 - 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 titled “x-f5xc-examples”- Applied at: schema property
- Purpose: 屬性的多個說明性範例值。
- 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 titled “x-f5xc-example”- Applied at: schema property
- Purpose: 單一標準範例值。
- 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 titled “x-f5xc-completion”- Applied at: schema property
- Purpose: Shell 自動完成提示(靜態列舉或動態命令)。
- 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 titled “x-f5xc-defaults”- Applied at: schema property
- Purpose: 在產生的文件與 UI 中顯示的預設值。
- 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 titled “x-f5xc-required-for-operations”- Applied at: schema property
- Purpose: 列出需要此屬性的 HTTP 操作(POST/PUT/…)。
- 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 titled “x-f5xc-required-for”- Applied at: schema property
- Purpose: 列出需要此屬性的具名功能組合。
- 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 titled “x-f5xc-conditions”- Applied at: schema property
- Purpose: 條件式需求(例如當同層欄位等於 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 titled “x-f5xc-deprecated”- Applied at: schema property
- Purpose: 含替代建議的棄用通知。
- 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 titled “x-f5xc-server-default”- Applied at: schema property
- Purpose: 當用戶端省略該屬性時,伺服器所指派的預設值。
- 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 titled “x-f5xc-recommended-value”- Applied at: schema property
- Purpose: 在伺服器預設值不夠理想時,欄位的建議生產環境值。
- 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 titled “x-f5xc-recommended-oneof-variant”- Applied at: schema property
- Purpose: 針對
oneOf區塊,指示建議使用的變體。 - 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 titled “x-f5xc-conflicts-with”- Applied at: schema property
- Purpose: 列出不能與此屬性同時設定的同層屬性。
- 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 titled “x-f5xc-references”- Applied at: schema property
- Purpose: 宣告 ObjectRefType 欄位所參照的資源類型(必須先行存在的資源),包含 oneOf 選擇門控、建立時必填及基數 — 即依賴模型的資源參照維度。
- 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 titled “x-f5xc-field-examples”- Applied at: schema (CreateSpecType)
- Purpose: 每個欄位的建立範例值(欄位路徑至值的扁平對應),衍生自 x-f5xc-minimum-configuration.example_yaml — 為下游表單/工作流程產生提供確定性建立值的唯一真實來源。
- 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 titled “x-f5xc-requires”- Applied at: schema property
- Purpose: 記錄跨欄位依賴關係,其中一個欄位需要另一個欄位被設定。
- 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 titled “x-f5xc-constraints”- Applied at: schema property
- Purpose: 從即時 API 探測或靜態模式衍生的數值/字串限制條件。
- 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 titled “x-f5xc-uniqueness”- Applied at: schema property
- Purpose: 宣告欄位在其範圍內是否必須唯一。
- 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 titled “x-f5xc-console-field”- Applied at: schema property
- Purpose: 此 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
注入 — 操作層級
Section titled “注入 — 操作層級”x-f5xc-required-fields
Section titled “x-f5xc-required-fields”- Applied at: operation
- Purpose: 列出操作本體中必須提供才能成功的欄位。
- 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 titled “x-f5xc-danger-level”- Applied at: operation
- Purpose: 分類操作的影響範圍(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 titled “x-f5xc-confirmation-required”- Applied at: operation
- Purpose: CLI/UI 是否應在執行前提示使用者確認。
- 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 titled “x-f5xc-side-effects”- Applied at: operation
- Purpose: 列出操作可觀察到的副作用(重新啟動、重新設定等)。
- 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 titled “x-f5xc-discovered-response-time”- Applied at: operation
- Purpose: 探索期間此操作的實測回應時間。
- 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 titled “x-f5xc-discovered-rate-limits”- Applied at: operation
- Purpose: 從即時 API 顯示的觀測速率限制標頭/行為。
- 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 titled “x-f5xc-discovered-error-catalog”- Applied at: operation
- Purpose: 即時探索期間觀測到的錯誤回應目錄,含樣本酬載。
- 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
注入 — 索引層級(網域中繼資料)
Section titled “注入 — 索引層級(網域中繼資料)”x-f5xc-category
Section titled “x-f5xc-category”- Applied at: info
- Purpose: 網域的頂層 CLI/UI/文件/Terraform 分組類別。
- 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 titled “x-f5xc-primary-resources”- Applied at: info
- Purpose: 定義網域的主要資源類型清單。
- 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 titled “x-f5xc-critical-resources”- Applied at: info
- Purpose: 需要提高注意等級的資源(生產關鍵)。
- 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 titled “x-f5xc-description-short”- Applied at: info
- Purpose: 簡短(約 60 字元)的網域說明。亦適用於屬性層級的長說明。
- 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 titled “x-f5xc-description-medium”- Applied at: info
- Purpose: 中等長度(約 150 字元)的網域說明。亦適用於屬性層級。
- 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 titled “x-f5xc-description-long”- Applied at: info
- Purpose: 詳細(約 500 字元)的網域說明。
- 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 titled “x-f5xc-complexity”- Applied at: info
- Purpose: 在此網域撰寫設定的相對複雜度層級。
- 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 titled “x-f5xc-requires-tier”- Applied at: info
- Purpose: 所需的最低 F5 XC 訂閱層級。
- 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 titled “x-f5xc-is-preview”- Applied at: info
- Purpose: 將網域標記為預覽/測試版功能。
- 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 titled “x-f5xc-use-cases”- Applied at: info
- Purpose: 此網域支援的具名使用案例。
- 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 titled “x-f5xc-icon”- Applied at: info
- Purpose: 在 UI 中呈現此網域時使用的圖示識別碼。
- 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 titled “x-f5xc-logo-svg”- Applied at: info
- Purpose: 代表該網域品牌標誌的內聯 SVG(或路徑)。
- 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 titled “x-f5xc-related-domains”- Applied at: info
- Purpose: 交叉連結至通常與此網域一起使用的其他網域。
- 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 titled “x-f5xc-doc-section”- Applied at: info
- Purpose: 已呈現文件的文件章節/導覽分組代稱。
- 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
x-ves-proto-package
Section titled “x-ves-proto-package”- Applied at: upstream
- Purpose: 從 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
Section titled “x-ves-proto-file”- Applied at: upstream
- Purpose: 從 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
Section titled “x-ves-proto-message”- Applied at: upstream
- Purpose: 從 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
Section titled “x-ves-proto-service”- Applied at: upstream
- Purpose: 從 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
Section titled “x-ves-proto-rpc”- Applied at: upstream
- Purpose: 從 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
Section titled “x-displayname”- Applied at: upstream
- Purpose: 從 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
Section titled “x-ves-oneof”- Applied at: upstream
- Purpose: 從 F5 上游規格原樣保留。
- Consumers: N/A
- Value type: varies
- Value schema: N/A
- Injected by: upstream
- Driven by config: upstream
- Example: 請參閱 F5 上游文件。
- Pass-through from upstream: yes
x-ves-default
Section titled “x-ves-default”- Applied at: upstream
- Purpose: 從 F5 上游規格原樣保留。
- Consumers: N/A
- Value type: varies
- Value schema: N/A
- Injected by: upstream
- Driven by config: upstream
- Example: 請參閱 F5 上游文件。
- Pass-through from upstream: yes
x-ves-required
Section titled “x-ves-required”- Applied at: upstream
- Purpose: 從 F5 上游規格原樣保留。
- Consumers: N/A
- Value type: varies
- Value schema: N/A
- Injected by: upstream
- Driven by config: upstream
- Example: 請參閱 F5 上游文件。
- Pass-through from upstream: yes
x-f5xc-wire-name
Section titled “x-f5xc-wire-name”- Applied at: schema property
- Purpose: 必須在請求中使用的上游原始屬性索引鍵。緩衝區會重新命名 F5 拼字錯誤的屬性名稱,並在此記錄原始索引鍵,因為 F5 伺服器僅接受原始拼字。
- 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