Pular para o conteúdo

Especificação de Validação

Este documento descreve a estrutura e o conteúdo da especificação de validação publicada pelo projeto api-specs-enriched.

A especificação de validação consolida restrições de validação de API, valores padrão e metadados de configuração em um único arquivo JSON. Essa especificação é gerada a partir das especificações OpenAPI enriquecidas e publicada juntamente com elas.

Local de publicação: docs/specifications/api/validation.json

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"version": "2.1.0",
"generated_at": "2026-01-17T12:00:00Z",
"source": "api-specs-enriched",
"required_fields": { ... },
"enum_values": { ... },
"constraints": { ... },
"patterns": [ ... ],
"conditional_requirements": { ... },
"minimum_configurations": { ... },
"defaults": { ... },
"extensions": { ... }
}

Especifica os campos obrigatórios para cada tipo de operação por recurso.

{
"required_fields": {
"common": {
"all_operations": ["metadata.name", "metadata.namespace"]
},
"resources": {
"origin_pool": {
"create": ["metadata.name", "metadata.namespace", "spec.origin_servers", "spec.port"],
"update": ["metadata.name", "metadata.namespace"],
"minimum_config": ["metadata.name", "metadata.namespace", "spec.origin_servers", "spec.port"]
}
}
}
}

Define os valores permitidos para campos com restrições.

{
"enum_values": {
"loadbalancer_algorithm": {
"description": "Load balancing algorithm for distributing traffic across origin servers",
"values": [
{"value": "ROUND_ROBIN", "description": "Each healthy endpoint selected in round robin order"},
{"value": "LEAST_REQUEST", "description": "Endpoint with fewest active requests selected"},
{"value": "RING_HASH", "description": "Consistent hashing using ring hash of endpoint names"},
{"value": "RANDOM", "description": "Random healthy endpoint selection"},
{"value": "LB_OVERRIDE", "description": "Hash policy inherited from parent load balancer"}
],
"default": "ROUND_ROBIN"
}
}
}

Padrões de validação padrão em nível de tipo e regras baseadas em padrões.

{
"constraints": {
"type_defaults": {
"string": {"minLength": 0, "maxLength": 1024},
"integer": {"minimum": 0, "maximum": 2147483647}
}
}
}

Regras de validação baseadas em padrões de nome de campo com pontuações de confiança.

{
"patterns": [
{
"pattern": "\\bport$",
"constraints": {"minimum": 1, "maximum": 65535},
"confidence": 0.99,
"description": "Valid TCP/UDP port range"
},
{
"pattern": "\\bname$",
"constraints": {
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
},
"confidence": 0.90,
"description": "Kubernetes-style naming convention"
}
]
}

Todos os valores padrão organizados por tipo de recurso em uma estrutura unificada.

{
"defaults": {
"description": "All default values organized by resource type",
"resources": {
"healthcheck": {
"server_applied": {
"jitter": 0,
"jitter_percent": 0
},
"recommended": {
"timeout": 3,
"interval": 15,
"unhealthy_threshold": 1,
"healthy_threshold": 3,
"jitter_percent": 30
},
"oneof_recommended": {
"health_check": "http_health_check"
},
"nested_recommended": {
"http_health_check": {
"path": "/",
"use_http2": false,
"expected_status_codes": ["200"],
"use_origin_server_name": {}
}
}
},
"origin_pool": {
"server_applied": {
"no_tls": {},
"healthcheck": [],
"loadbalancer_algorithm": "ROUND_ROBIN",
"endpoint_selection": "DISTRIBUTED"
},
"recommended": {
"port": 443,
"connection_timeout": 2000,
"http_idle_timeout": 300000
},
"advanced_options": {
"connection_timeout": 2000,
"http_idle_timeout": 300000,
"same_as_endpoint_port": {},
"default_circuit_breaker": {},
"disable_outlier_detection": {}
},
"oneof_choices": {
"port_choice": "port",
"tls_choice": "no_tls",
"circuit_breaker_choice": "default_circuit_breaker"
},
"ui_vs_server": {
"loadbalancer_algorithm": {
"ui_default": "LB_OVERRIDE",
"server_default": "ROUND_ROBIN",
"note": "UI preselects LB_OVERRIDE but server applies ROUND_ROBIN if omitted"
}
}
},
"app_firewall": {
"server_applied": {
"allow_all_response_codes": {},
"default_anonymization": {},
"monitoring": {}
}
}
}
}
}
CategoriaDescriçãoFonte
server_appliedValores que a API aplica quando os campos são omitidosTestes de API em produção
recommendedValores pré-preenchidos no console web F5 XCAnálise de interface
advanced_optionsPadrões aninhados dentro de objetos advanced_optionsDescoberta de API
oneof_choicesSeleções padrão de variante OneOfComportamento da API
oneof_recommendedVariantes OneOf recomendadasPadrões do console
nested_recommendedValores recomendados para esquemas aninhadosAnálise de interface
ui_vs_serverCasos em que os padrões da interface diferem dos padrões da APIAnálise comparativa

Campos mutuamente exclusivos e dependências condicionais.

{
"conditional_requirements": {
"resources": {
"healthcheck": {
"mutually_exclusive": [
{
"fields": ["spec.http_health_check", "spec.tcp_health_check", "spec.udp_icmp_health_check"],
"reason": "Choose exactly one health check type"
}
],
"conditional": []
}
}
}
}

Configurações mínimas viáveis com exemplos funcionais.

{
"minimum_configurations": {
"resources": {
"origin_pool": {
"description": "Backend origin servers for load balancing",
"example": {
"metadata": {"name": "backend-pool", "namespace": "default"},
"spec": {
"origin_servers": [{"public_name": {"dns_name": "backend1.example.com"}}],
"port": 8080
}
}
}
}
}
}

As especificações OpenAPI enriquecidas incorporam metadados de validação usando estas extensões:

ExtensãoFinalidadeLocalização
x-f5xc-required-forCampos obrigatórios específicos por contextoPropriedades de esquema
x-f5xc-server-defaultMarca padrões aplicados pelo servidorPropriedades de esquema
x-f5xc-recommended-valueValor padrão recomendadoPropriedades de esquema
x-f5xc-recommended-oneof-variantVariante OneOf recomendadaDefinições de esquema
x-f5xc-conditionsRequisitos condicionaisPropriedades de esquema
x-f5xc-minimum-configurationExemplos de configuração mínimaDefinições de esquema
x-f5xc-validationRestrições derivadas de descobertaPropriedades de esquema
FonteURL
GitHub Pageshttps://f5-sales-demo.github.io/api-specs-enriched/specifications/api/validation.json
GitHub Rawhttps://raw.githubusercontent.com/f5-sales-demo/api-specs-enriched/main/docs/specifications/api/validation.json

Após executar o pipeline: docs/specifications/api/validation.json

A especificação de validação segue versionamento semântico no campo version:

Tipo de AlteraçãoIncremento de VersãoExemplo
Alterações estruturais incompatíveisMajorRenomeação de campos, remoção de seções
Novas regras de validação ou recursosMinorNovos padrões de recursos
Correções de bugs ou atualizações de descriçãoPatchCorreções tipográficas

Quando múltiplas fontes fornecem restrições, a prioridade de reconciliação é:

  1. Existente - Restrições na especificação OpenAPI original (maior prioridade)
  2. Descoberta - Restrições provenientes de descoberta de API em produção
  3. Inferido - Restrições derivadas de correspondência de padrões (menor prioridade)
VersãoDataAlterações
2.1.22026-01-18Reescrito como referência pura de API; adicionadas categorias oneof_recommended e nested_recommended
2.1.02026-01-18Estrutura unificada de padrões substituindo seções fragmentadas
2.0.02026-01-15Especificação de validação inicial