Skip to content

Configuration Reference

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

api:
timeout: 30
retries: 3
FieldDescription
timeoutHTTP request timeout in seconds.
retriesNumber of retry attempts on failure.
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.
validation:
input_dir: "specs/transformed"

Live tests resolve their semantic domains from the corrected transform output. Raw files in specs/original/ remain the immutable upstream landing bytes and are never presented as the corrected intermediate API contract.

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:
examples_per_operation: 1
FieldDescription
examples_per_operationExact number of generated test cases per configured operation.

Generation is derandomized and uses only Hypothesis’s generation phase, so an unchanged spec and configuration produce the same example sequence. Requests are sent to F5XC_API_URL with the APIToken authorization scheme.

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