- Inicio
- API Enriched
- Especificación de validación
Especificación de validación
Este documento describe la estructura y los contenidos de la especificación de validación publicada por el proyecto api-specs-enriched.
Descripción general
Sección titulada «Descripción general»La especificación de validación consolida las restricciones de validación de API, los valores predeterminados y los metadatos de configuración en un único archivo JSON. Esta especificación se genera a partir de las especificaciones OpenAPI enriquecidas y se publica junto con ellas.
Ubicación de publicación: docs/specifications/api/validation.json
Estructura de la especificación
Sección titulada «Estructura de la especificación»{ "$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": { ... }}Secciones
Sección titulada «Secciones»required_fields
Sección titulada «required_fields»Especifica los campos requeridos para cada tipo de operación 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"] } } }}enum_values
Sección titulada «enum_values»Define los valores permitidos para los campos con restricciones.
{ "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" } }}constraints
Sección titulada «constraints»Valores predeterminados de validación a nivel de tipo y reglas basadas en patrones.
{ "constraints": { "type_defaults": { "string": {"minLength": 0, "maxLength": 1024}, "integer": {"minimum": 0, "maximum": 2147483647} } }}patterns
Sección titulada «patterns»Reglas de validación basadas en patrones de nombres de campo con puntuaciones de confianza.
{ "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" } ]}defaults
Sección titulada «defaults»Todos los valores predeterminados organizados por tipo de recurso en una estructura 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": {} } } } }}Categorías de valores predeterminados
Sección titulada «Categorías de valores predeterminados»| Categoría | Descripción | Fuente |
|---|---|---|
server_applied | Valores que la API aplica cuando se omiten los campos | Pruebas en API en vivo |
recommended | Valores prellenos en la consola web de F5 XC | Análisis de la interfaz de usuario |
advanced_options | Valores predeterminados anidados dentro de objetos advanced_options | Descubrimiento de API |
oneof_choices | Selecciones predeterminadas de variantes OneOf | Comportamiento de la API |
oneof_recommended | Variantes OneOf recomendadas | Valores predeterminados de la consola |
nested_recommended | Valores recomendados para esquemas anidados | Análisis de la interfaz de usuario |
ui_vs_server | Casos en los que los valores predeterminados de la interfaz difieren de los predeterminados de la API | Análisis comparativo |
conditional_requirements
Sección titulada «conditional_requirements»Campos mutuamente excluyentes y dependencias condicionales.
{ "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": [] } } }}minimum_configurations
Sección titulada «minimum_configurations»Configuraciones mínimas viables con ejemplos funcionales.
{ "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 } } } } }}Mapeo de extensiones OpenAPI
Sección titulada «Mapeo de extensiones OpenAPI»Las especificaciones OpenAPI enriquecidas incorporan metadatos de validación mediante estas extensiones:
| Extensión | Propósito | Ubicación |
|---|---|---|
x-f5xc-required-for | Campos requeridos según el contexto | Propiedades del esquema |
x-f5xc-server-default | Marca los valores predeterminados aplicados por el servidor | Propiedades del esquema |
x-f5xc-recommended-value | Valor predeterminado recomendado | Propiedades del esquema |
x-f5xc-recommended-oneof-variant | Variante OneOf recomendada | Definiciones del esquema |
x-f5xc-conditions | Requisitos condicionales | Propiedades del esquema |
x-f5xc-minimum-configuration | Ejemplos de configuración mínima | Definiciones del esquema |
x-f5xc-validation | Restricciones derivadas del descubrimiento | Propiedades del esquema |
Acceso a los datos
Sección titulada «Acceso a los datos»URLs de publicación
Sección titulada «URLs de publicación»| Fuente | URL |
|---|---|
| GitHub Pages | https://f5-sales-demo.github.io/api-specs-enriched/specifications/api/validation.json |
| Raw GitHub | https://raw.githubusercontent.com/f5-sales-demo/api-specs-enriched/main/docs/specifications/api/validation.json |
Ruta local
Sección titulada «Ruta local»Después de ejecutar la canalización: docs/specifications/api/validation.json
Control de versiones
Sección titulada «Control de versiones»La especificación de validación sigue el versionado semántico en el campo version:
| Tipo de cambio | Incremento de versión | Ejemplo |
|---|---|---|
| Cambios estructurales que rompen la compatibilidad | Mayor | Renombrado de campos, secciones eliminadas |
| Nuevas reglas de validación o recursos | Menor | Nuevos valores predeterminados de recursos |
| Correcciones de errores o actualizaciones de descripción | Parche | Correcciones tipográficas |
Prioridad de reconciliación
Sección titulada «Prioridad de reconciliación»Cuando varias fuentes proporcionan restricciones, la prioridad de reconciliación es:
- Existente - Restricciones en la especificación OpenAPI original (mayor prioridad)
- Descubrimiento - Restricciones del descubrimiento de API en vivo
- Inferido - Restricciones derivadas de la coincidencia de patrones (menor prioridad)
Documentación relacionada
Sección titulada «Documentación relacionada»- Mejoras de Healthcheck - Enriquecimientos del esquema de healthcheck
- Mejoras de Origin Pool - Enriquecimientos del esquema de origin pool
- CLAUDE.md - Instrucciones para el asistente de IA
- DEVELOPMENT.md - Guía del desarrollador
Registro de cambios
Sección titulada «Registro de cambios»| Versión | Fecha | Cambios |
|---|---|---|
| 2.1.2 | 2026-01-18 | Reescrita como referencia de API pura; se añadieron las categorías oneof_recommended y nested_recommended |
| 2.1.0 | 2026-01-18 | Estructura de valores predeterminados unificada que reemplaza las secciones fragmentadas |
| 2.0.0 | 2026-01-15 | Especificación de validación inicial |