Skip to content

HTTP LoadBalancer Enhancements

Enrichment metadata for HTTP load balancer schemas. See OpenAPI Extensions for extension definitions.

All schemas matching viewshttp_loadbalancer.*SpecType receive enrichments:

  • viewshttp_loadbalancerCreateSpecType
  • viewshttp_loadbalancerReplaceSpecType
  • viewshttp_loadbalancerGetSpecType

The x-f5xc-minimum-configuration extension provides comprehensive CLI metadata for creating minimal viable HTTP load balancers.

FieldConstraintDescription
metadata.nameDNS label format: [a-z0-9]([-a-z0-9]*[a-z0-9])?Resource name
metadata.namespaceDNS label formatNamespace
spec.domainsArray, min_items: 1Domains to serve

One of the following load balancer types must be specified:

VariantDescription
spec.httpHTTP only
spec.httpsHTTPS with manual certificate
spec.https_auto_certHTTPS with automatic certificate
spec.http_httpsBoth HTTP and HTTPS

Note: The load balancer type OneOf group is referred to as:

  • lb_type in configuration files (short form in config/minimum_configs.yaml)
  • loadbalancer_type in OpenAPI spec native extensions (native field name)

API Schema Reference: x-ves-oneof-field-loadbalancer_type: ["http", "https", "https_auto_cert", "http_https"]

{
"metadata": {
"name": "example-app",
"namespace": "default"
},
"spec": {
"domains": ["example.com"],
"https_auto_cert": {
"port": 443,
"tls_config": {"default_security": {}}
},
"advertise_on_public_default_vip": {},
"routes": [{"prefix": "/", "origin_pool": {"pool_name": "backend-pool"}}]
}
}

Fields marked with x-f5xc-server-default: true have their default value applied by the F5 XC API server when omitted from requests. HTTP load balancer has a large number of server-applied defaults because most security features and protocol options default to a disabled or safe state.

When https_auto_cert is specified, the server applies these defaults for omitted fields:

FieldDefault ValueTypeDescription
port443integerHTTPS listening port
http_redirectfalsebooleanHTTP to HTTPS redirect
add_hstsfalsebooleanHTTP Strict Transport Security header
tls_config.default_security{}objectTLS 1.2+ with strong ciphers
no_mtls{}objectMutual TLS disabled
default_header{}objectDefault server name header handling
enable_path_normalize{}objectPath normalization enabled
default_loadbalancer{}objectDefault load balancer settings
header_transformation_type.legacy_header_transformation{}objectLegacy header transformation
connection_idle_timeout120000integerConnection idle timeout in milliseconds (2 minutes)
http_protocol_options.http_protocol_enable_v1_v2{}objectHTTP/1.1 and HTTP/2 enabled
coalescing_options.default_coalescing{}objectDefault HTTP/2 connection coalescing

All security features default to disabled when omitted:

FieldDefault ValueDescription
disable_waf{}Web Application Firewall disabled
disable_bot_defense{}Bot defense disabled
disable_rate_limit{}Rate limiting disabled
disable_api_discovery{}API discovery disabled
disable_api_testing{}API testing disabled
disable_api_definition{}API definition disabled
disable_malware_protection{}Malware protection disabled
disable_client_side_defense{}Client-side defense disabled
disable_ip_reputation{}IP reputation disabled
disable_threat_mesh{}Threat mesh disabled
disable_malicious_user_detection{}Malicious user detection disabled
FieldDefault ValueDescription
l7_ddos_protection.mitigation_block{}Block DDoS traffic (default mitigation action)
l7_ddos_protection.default_rps_threshold{}Use default RPS threshold
l7_ddos_protection.clientside_action_none{}No client-side DDoS validation
l7_ddos_protection.ddos_policy_none{}No DDoS policy reference
no_challenge{}No client challenge
user_id_client_ip{}Identify users by client IP
disable_trust_client_ip_headers{}Do not trust client IP headers
FieldDefault ValueTypeDescription
advertise_on_public_default_vip{}objectAdvertise on public default VIP
round_robin{}objectRound-robin load balancing algorithm
add_locationtruebooleanAdd location header to responses
system_default_timeouts{}objectUse system default timeouts
service_policies_from_namespace{}objectInherit service policies from namespace
default_sensitive_data_policy{}objectUse default sensitive data policy

Fields marked with x-f5xc-conflicts-with indicate OneOf patterns. Only one field from each group can be specified.

Group NameFieldsDescription
lb_typehttp, https, https_auto_cert, http_httpsLoad balancer protocol type
advertisingadvertise_on_public_default_vip, advertise_on_public, advertise_custom, do_not_advertiseHow to advertise the load balancer
load_balancing_algorithmround_robin, least_request, ring_hash, randomTraffic distribution algorithm
Group NameFieldsDescription
tls_configdefault_security, medium_security, low_security, custom_securityTLS security level
mtlsno_mtls, use_mtlsMutual TLS enabled or disabled
Group NameFieldsDescription
http_protocolhttp_protocol_enable_v1_only, http_protocol_enable_v1_v2, http_protocol_enable_v2_onlyHTTP protocol versions
header_transformationlegacy_header_transformation, proper_header_transformation, preserve_case_header_transformationHTTP header transformation type
server_name_headerdefault_header, append_server_name_header, pass_through_server_name_headerServer name header handling
Group NameFieldsDescription
path_normalizeenable_path_normalize, disable_path_normalizePath normalization enabled or disabled
loadbalancer_choicenon_default_loadbalancer, default_loadbalancerDefault or non-default load balancer
coalescingdefault_coalescing, disable_coalescing, enable_for_same_originHTTP/2 connection coalescing options
Group NameFieldsDescription
wafdisable_waf, enable_wafWeb Application Firewall
bot_defensedisable_bot_defense, enable_bot_defenseBot detection and mitigation
rate_limitdisable_rate_limit, enable_rate_limitRate limiting
api_discoverydisable_api_discovery, enable_api_discoveryAPI discovery
api_testingdisable_api_testing, enable_api_testingAPI testing
api_definitiondisable_api_definition, enable_api_definitionAPI definition
malware_protectiondisable_malware_protection, enable_malware_protectionMalware protection
client_side_defensedisable_client_side_defense, enable_client_side_defenseClient-side defense
ip_reputationdisable_ip_reputation, enable_ip_reputationIP reputation
threat_meshdisable_threat_mesh, enable_threat_meshThreat mesh
malicious_user_detectiondisable_malicious_user_detection, enable_malicious_user_detectionMalicious user detection
Group NameFieldsDescription
ddos_mitigationmitigation_block, mitigation_challenge, mitigation_noneDDoS mitigation action
ddos_rps_thresholddefault_rps_threshold, custom_rps_thresholdRequests per second threshold
ddos_clientside_actionclientside_action_none, clientside_action_javascript, clientside_action_captchaClient-side DDoS validation action
ddos_policyddos_policy_none, ddos_policy_refDDoS policy reference or none
Group NameFieldsDescription
challengeno_challenge, js_challenge, captcha_challengeClient challenge type for bot detection
user_identificationuser_id_client_ip, user_identificationUser identification method
client_ip_headersdisable_trust_client_ip_headers, enable_trust_client_ip_headersTrust client IP headers or not
timeoutssystem_default_timeouts, custom_timeoutsUse system default or custom timeouts
service_policies_sourceservice_policies_from_namespace, active_service_policiesService policies from namespace or active list
sensitive_data_policydefault_sensitive_data_policy, custom_sensitive_data_policyUse default or custom sensitive data policy

OneOf Variant Recommendations (Future Extension)

Section titled “OneOf Variant Recommendations (Future Extension)”

Status: Not yet applied to http_loadbalancer schemas.

Unlike healthcheck, which includes x-f5xc-recommended-oneof-variant to indicate the most common choice for OneOf groups, http_loadbalancer currently lacks this extension.

Healthcheck (implemented):

viewshealthcheckCreateSpecType:
x-f5xc-recommended-oneof-variant:
health_check: "http_health_check"

HTTP LoadBalancer (not yet implemented):

viewshttp_loadbalancerCreateSpecType:
x-f5xc-recommended-oneof-variant: null # Would indicate recommended lb_type variant

To add this extension for http_loadbalancer:

  1. Observe F5 XC console default selections (e.g., which lb_type is preselected in the UI)
  2. Add configuration to config/discovered_defaults.yaml
  3. Re-run enrichment pipeline to apply extension

Expected structure when added:

viewshttp_loadbalancerCreateSpecType:
x-f5xc-recommended-oneof-variant:
loadbalancer_type: "https_auto_cert" # Example - requires verification

This extension would enable downstream tools to preselect the most commonly used variant when presenting configuration options to users.

Fields marked with x-f5xc-constraints include validation constraints discovered from API analysis.

FieldminItemsmaxItemsuniqueItems
spec.domains1-false
spec.routes1256false
spec.blocked_clients1128true
spec.trusted_clients1128true
spec.data_guard_rules1256true
FieldMinimumMaximumDefaultDescription
spec.https_auto_cert.port165535443HTTPS port number
spec.https_auto_cert.connection_idle_timeout10003600000120000Connection idle timeout (milliseconds, 1s to 1h)
FieldValuesDefaultDescription
spec.https_auto_cert.tls_configdefault_security, medium_security, low_security, custom_securitydefault_securityTLS security level
spec.https_auto_cert.header_transformation_typelegacy_header_transformation, proper_header_transformation, preserve_case_header_transformationlegacy_header_transformationHTTP header transformation
spec.https_auto_cert.http_protocol_optionshttp_protocol_enable_v1_only, http_protocol_enable_v1_v2, http_protocol_enable_v2_onlyhttp_protocol_enable_v1_v2HTTP protocol versions
spec.https_auto_cert.coalescing_optionsdefault_coalescing, disable_coalescing, enable_for_same_origindefault_coalescingHTTP/2 connection coalescing
spec.load_balancing_algorithmround_robin, least_request, ring_hash, randomround_robinLoad balancing algorithm
spec.l7_ddos_protection.mitigationmitigation_block, mitigation_challenge, mitigation_nonemitigation_blockLayer 7 DDoS mitigation action
spec.l7_ddos_protection.rps_thresholddefault_rps_threshold, custom_rps_thresholddefault_rps_thresholdRPS threshold for DDoS detection
spec.l7_ddos_protection.clientside_actionclientside_action_none, clientside_action_javascript, clientside_action_captchaclientside_action_noneClient-side DDoS validation
spec.challengeno_challenge, js_challenge, captcha_challengeno_challengeClient challenge type
spec.advertisingadvertise_on_public_default_vip, advertise_on_public, advertise_custom, do_not_advertiseadvertise_on_public_default_vipLoad balancer advertising

The enrichment pipeline adds x-f5xc-guided-workflows metadata at the spec level. These workflows provide step-by-step deployment guidance consumed by AI assistants and CLI tools.

A 5-step workflow for creating a fully configured HTTP load balancer with backend origin pool (defined in config/guided_workflows.yaml):

StepActionResourceRequired FieldsOptional
1Create Origin Poolorigin_poolname, origin_servers, portNo
2Configure Health Checkhealthcheckname, http_health_checkYes
3Attach Health Check--Yes
4Create HTTP Load Balancerhttp_loadbalancername, domains, http.portNo
5Verify Deployment--No

Prerequisites: Valid namespace in target tenant, backend application reachable via IP or DNS, SSL certificate (optional for HTTPS).

A 7-step workflow for creating HTTPS load balancer with SSL/TLS termination:

StepActionResourceRequired FieldsOptional
1Upload SSL Certificatecertificatename, certificate_chain, private_keyNo
2Create Origin Poolorigin_poolname, origin_serversNo
3Configure Health Checkhealthcheck-Yes
4Configure WAF Policyapp_firewall-Yes
5Create HTTPS Load Balancerhttp_loadbalancername, domains, https.tls_parametersNo
6Attach WAF Policy--Yes
7Verify HTTPS Deployment--No

Prerequisites: Valid namespace in target tenant, SSL certificate and private key, backend application reachable.

Downstream tools use these workflows to guide users through multi-step deployments:

  • xcsh CLI: Presents workflows as interactive guided commands (e.g., xcsh deploy http-lb)
  • VS Code extension: Shows workflow steps in a sidebar panel with progress tracking
  • AI assistants: Follow workflow steps sequentially, creating each resource and validating dependencies

These vendor extensions are added to the standard OpenAPI schema to convey F5 XC-specific metadata.

Type: string

Indicates the domain classification for CLI and tooling organization.

viewshttp_loadbalancerCreateSpecType:
type: object
x-f5xc-cli-domain: "virtual"

Type: object

Provides comprehensive metadata for creating minimal viable configurations. Includes:

  • Description
  • Required fields with constraints
  • Mutually exclusive groups
  • Example configurations (YAML, JSON)
  • curl command examples
viewshttp_loadbalancerCreateSpecType:
type: object
x-f5xc-minimum-configuration:
description: "HTTP/HTTPS load balancer for distributing traffic across origin pools"
required_fields:
- "metadata.name"
- "metadata.namespace"
- "spec.domains"
mutually_exclusive_groups:
- name: "lb_type"
fields: ["spec.http", "spec.https", "spec.https_auto_cert", "spec.http_https"]
reason: "Choose exactly one load balancer type"
example_yaml: |
...
example_json: |
...
example_curl: |
...

Type: boolean

When true, indicates the accompanying default value is enforced by the F5 XC API server. Fields with this extension can be safely omitted from API requests — the server applies the default automatically.

disable_waf:
type: object
default: {}
x-f5xc-server-default: true

Type: array of strings

Lists field names that are mutually exclusive with the current field, indicating OneOf patterns.

advertise_custom:
type: object
x-f5xc-conflicts-with:
- advertise_on_public
- advertise_on_public_default_vip
- do_not_advertise

Type: object

Provides validation constraints including array size limits, integer ranges, uniqueness requirements, and discovery metadata.

routes:
type: array
x-f5xc-constraints:
constraintType: "array"
minItems: 1
maxItems: 256
uniqueItems: false
metadata:
source: "discovery"
confidence: 0.99
validatedAt: "2026-01-19T12:00:00Z"
port:
type: integer
x-f5xc-constraints:
constraintType: "number"
minimum: 1
maximum: 65535
metadata:
source: "discovery"
confidence: 0.99

x-f5xc-description-short and x-f5xc-description-medium

Section titled “x-f5xc-description-short and x-f5xc-description-medium”

Type: string

Provides alternative description lengths for different use cases:

  • x-f5xc-description-short: 60 characters max (CLI columns, badges)
  • x-f5xc-description-medium: 150 characters max (tooltips, summaries)
domains:
type: array
description: "List of domains the load balancer will serve"
x-f5xc-description-short: "Domains to serve"
x-f5xc-description-medium: "List of domains for which the load balancer accepts traffic"

Type: any (matches field type)

Provides concrete field examples for documentation and tooling.

name:
type: string
x-f5xc-example: "example-app"
domains:
type: array
x-f5xc-example: ["example.com", "www.example.com"]

Type: array of strings

Indicates context-specific requirements using flags: minimum_config, create, update, read.

metadata.name:
type: string
x-f5xc-required-for: ["minimum_config", "create"]
metadata.uid:
type: string
x-f5xc-required-for: ["read"]
FileContent
docs/specifications/api/virtual.jsonAll http_loadbalancer schemas with enrichments
docs/specifications/api/openapi.jsonMerged specification with all schemas
FilePurpose
config/minimum_configs.yamlSource of minimum configuration metadata
config/constraint_patterns.yamlConstraint pattern definitions
config/guided_workflows.yamlGuided workflow step definitions
config/domain_descriptions.yamlDomain-level description metadata
  • viewshttp_loadbalancerCreateSpecType - Create operation schema
  • viewshttp_loadbalancerReplaceSpecType - Update operation schema
  • viewshttp_loadbalancerGetSpecType - Read operation schema
VersionDateChanges
2.0.462026-04-18Added server-applied defaults, guided workflow integration, and expanded minimum config section
2.0.452026-01-20Initial http_loadbalancer enrichments documentation