Skip to content

Configuration Reference

All pipeline behavior is controlled by two YAML files in config/.

api:
base_url: "https://example-tenant.console.ves.volterra.io"
tenant: "example-tenant"
namespace: "example-namespace"
timeout: 30
retries: 3
retry_delay: 2
FieldDescription
base_urlF5 XC console API base URL. Override with F5XC_API_URL env var.
tenantTenant name used in API paths.
namespaceDefault namespace for CRUD operations.
timeoutHTTP request timeout in seconds.
retriesNumber of retry attempts on failure.
retry_delaySeconds between retries.
download:
url: "https://docs.cloud.f5.com/docs-v2/downloads/f5-distributed-cloud-open-api.zip"
output_dir: "specs/original"
etag_cache: ".etag_cache"
FieldDescription
urlURL of the official F5 XC OpenAPI spec bundle (ZIP).
output_dirWhere extracted specs are stored.
etag_cacheFile that stores the HTTP ETag for conditional downloads.

Ten categories corresponding to the OpenAPI schema constraint types. Each can be independently enabled/disabled.

validation_categories:
string_length:
enabled: true
keywords: ["minLength", "maxLength"]
description: "Validate string length boundaries"
CategoryKeywords
string_lengthminLength, maxLength
patternpattern
numeric_boundsminimum, maximum, exclusiveMinimum, exclusiveMaximum
required_fieldsrequired
enum_valuesenum
array_boundsminItems, maxItems, uniqueItems
object_structureadditionalProperties, properties, propertyNames
compositiononeOf, anyOf, allOf
dependenciesdependentRequired, dependentSchemas
data_typestype, format
schemathesis:
enabled: true
max_examples: 100
hypothesis_phases:
- generate
- target
stateful_testing: true
base_url_override: null
auth_header: "Authorization"
auth_prefix: "APIToken"
FieldDescription
enabledToggle Schemathesis testing.
max_examplesMaximum number of generated test cases per operation.
hypothesis_phasesHypothesis phases to run (generate, target).
stateful_testingEnable stateful link-based testing across operations.
base_url_overrideOverride the API base URL for tests. null uses api.base_url.
auth_headerHTTP header name for authentication.
auth_prefixToken prefix format (requests are sent as APIToken <token>).
reconciliation:
priority:
- existing
- discovery
- inferred
fix_strategies:
tighter_spec: "relax"
looser_spec: "tighten"
missing_constraint: "add"
extra_constraint: "remove"
FieldDescription
priorityOrder of preference when multiple data sources disagree.
fix_strategiesMaps each discrepancy type to its fix action. See Fixes Applied.
spectral:
enabled: true
ruleset: "spectral-pipeline.yaml"
auto_fix:
oas3-api-servers: true
info-contact: true
operation-tags: true
oas3-unused-component: true
operation-operationId-unique: true
oas3-valid-schema-example: true
no-script-tags-in-markdown: true
gate:
max_errors: null
max_warnings: null
contact:
name: "F5 Distributed Cloud"
url: "https://docs.cloud.f5.com"
email: "support@f5.com"
servers:
- url: "https://{tenant}.console.ves.volterra.io"
description: "F5 Distributed Cloud API"
variables:
tenant:
default: "example-tenant"
description: "Your F5 XC tenant name"
security_scheme:
type: "apiKey"
in: "header"
name: "Authorization"
description: "F5 XC API Token (format: APIToken <token>)"
FieldDescription
enabledToggle Spectral linting entirely.
rulesetWhich Spectral config file to use (pipeline uses spectral-pipeline.yaml).
auto_fixMap of rule name to boolean. true means the reconciler will fix violations.
gate.max_errorsMaximum allowed errors in the post-reconcile gate. null disables the check.
gate.max_warningsMaximum allowed warnings. null disables the check.
contactContact info injected into info.contact by the info-contact fixer.
serversServers array injected by the oas3-api-servers fixer.
security_schemeSecurity scheme definition injected into every spec.
reports:
output_dir: "reports"
formats:
- json
- html
- markdown
include_examples: true
max_examples_per_issue: 5
release:
output_dir: "release"
include_changelog: true
include_validation_report: true
version_from: "git"
FieldDescription
output_dirDirectory for release artifacts.
include_changelogInclude CHANGELOG.md in the release package.
include_validation_reportInclude the validation report in the release package.
version_fromVersion source. git derives version from spec metadata date + patch number.

Defines the baseline endpoints used for live API validation. Each entry maps a logical resource name to its spec file, API group, and CRUD paths.

endpoints:
healthcheck:
resource: healthchecks
domain_file: docs-cloud-f5-com.0124.public.ves.io.schema.healthcheck.ves-swagger.json
api_group: config
crud_operations:
create: POST /api/config/namespaces/{namespace}/healthchecks
read: GET /api/config/namespaces/{namespace}/healthchecks/{name}
list: GET /api/config/namespaces/{namespace}/healthchecks
update: PUT /api/config/namespaces/{namespace}/healthchecks/{name}
delete: DELETE /api/config/namespaces/{namespace}/healthchecks/{name}
test_priority: high
description: "Health check configurations for origin monitoring"
FieldDescription
resourceAPI resource name (used in URL paths).
domain_fileFilename of the OpenAPI spec in specs/original/.
api_groupAPI group prefix (config, web, etc.).
crud_operationsHTTP method and path for each CRUD operation.
test_priorityhigh, medium, or low — controls test execution order.
descriptionHuman-readable description of the resource.

10 endpoints across three domains:

EndpointDomainPriority
healthcheckVirtualhigh
origin_poolVirtualhigh
app_firewallVirtualhigh
service_policyVirtualmedium
api_definitionAPI Securityhigh
api_discoveryAPI Securitymedium
api_groupsAPI Securitymedium
code_base_integrationAPI Securitylow
data_typeData Privacymedium
sensitive_data_policyData Privacymedium

To add a new endpoint for validation:

  1. Find the spec filename in specs/original/ (format: docs-cloud-f5-com.NNNN.*.ves-swagger.json)
  2. Add an entry under endpoints: following the structure above
  3. Add the domain file mapping under domain_files: with a priority number
  4. Add the endpoint name to test_order: in the desired position