Apidog Docs
🇪🇸 Español
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇪🇸 Español
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇪🇸 Español
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
Learning Center
HomeSupport CenterAPI ReferencesDownloadChangelog
Learning Center
HomeSupport CenterAPI ReferencesDownloadChangelog
  1. Schemas
  • Centro de aprendizaje de Apidog
  • Primeros pasos
    • Introducción a Apidog
    • Conceptos básicos en Apidog
    • Navegación por Apidog
    • Inicio rápido
      • Descripción general
      • Crear un Endpoint
      • Realizar una petición
      • Añadir una aserción
      • Creación de escenarios de prueba
      • Compartir documentación de API
      • Explore Más
    • Migración a Apidog
      • Descripción general
      • Importación manual
      • Importación programada (Vincular fuentes de datos)
      • Opciones de importación
      • Exportar datos
      • Importar desde
        • Importar desde Postman
        • Importar especificación OpenAPI
        • Importar cURL
        • Importar archivos Markdown
        • Importar desde Insomnia
        • Importar desde apiDoc
        • Importar archivo .har
        • Importar WSDL
  • Datos de API mock
    • Descripción general
    • Smart Mock
    • Mock personalizado
    • Secuencia de prioridad de mock
    • Scripts de mock
    • Mock en la nube
    • Mock de Runner autoalojado
    • Idioma de mock (locales)
  • Cuenta y preferencias
    • Configuración de la cuenta
    • Generación de un token de acceso OpenAPI
    • Notificación
    • Configuración de idioma
    • Teclas de acceso rápido
    • Configuración del proxy de red
    • Copia de seguridad de los datos
    • Actualizar Apidog
    • Eliminar cuenta
    • Funciones experimentales
  • Enviar peticiones
    • Descripción general
    • Depuración de SSE
    • Cliente MCP
    • Socket.IO
    • WebSocket
    • Webhook
    • SOAP o WebService
    • GraphQL
    • gRPC
    • Usar agentes proxy de petición para la depuración
    • Crear peticiones
      • Historial de peticiones
      • Conceptos básicos de las peticiones
      • Parámetros y cuerpo
      • Encabezados de petición
      • Configuración de peticiones
      • Depurar peticiones
      • Guardar peticiones como endpoints
      • HTTP/2
    • Autenticación y autorización
      • Descripción general
      • Certificados de CA y de cliente
      • Tipos de autorización
      • Autenticación Digest
      • OAuth 1.0
      • OAuth 2.0
      • Autenticación Hawk
      • Kerberos
      • NTLM
      • Akamai EdgeGrid
    • Respuesta y cookies
      • Visualización de respuestas de API
      • Gestión de cookies
      • Descripción general
  • Desarrollar y depurar APIs
    • Descripción general
    • Generación de peticiones
    • Envío de peticiones
    • Casos de depuración
    • Casos de prueba
    • Valores dinámicos
    • Validación de respuestas
    • Diseño primero vs. petición primero
    • Generación de código
    • Entornos y variables
      • Descripción general
      • Uso de variables
      • Gestión de entornos
    • Secretos de la bóveda
      • Descripción general
      • HashiCorp Vault
      • Azure Key Vault
      • AWS Secrets Manager
    • Módulos de valores dinámicos
      • Aerolínea
      • Animal
      • Color
      • Comercio
      • Empresa
      • Base de datos
      • Tipo de dato
      • Fecha
      • Finanzas
      • Comida
      • Git
      • Hacker
      • Helpers
      • Imagen
      • Internet
      • Ubicación
      • Lorem
      • Música
      • Número
      • Persona
      • Teléfono
      • Ciencia
      • String
      • Sistema
      • Vehículo
      • Word
    • Preprocesadores y postprocesadores
      • Descripción general
      • Aserción
      • Extraer variable
      • Esperar
      • Seguridad
      • Operaciones de base de datos
        • Descripción general
        • MySQL
        • MongoDB
        • Redis
        • Cliente Oracle
      • Uso de scripts
        • Descripción general
        • Scripts de preprocesador
        • Scripts de posprocesador
        • Scripts públicos
        • Referencia de scripts de Postman
        • Llamar a otros lenguajes de programación
        • Uso de bibliotecas JS
        • Visualización de respuestas
        • Ejemplos de scripts
          • Scripts de aserción
          • Uso de variables
          • Modificación de peticiones
          • Otros ejemplos
    • Depuración de APIs
      • Depurador de agentes de IA
      • Depurador A2A
  • Diseñar APIs
    • Descripción general
    • Crear un nuevo proyecto de API
    • Conceptos básicos de endpoints
    • Directrices de diseño de API
    • Módulo
    • Configurar múltiples ejemplos de cuerpo de petición
    • Componentes
    • Campos comunes
    • Parámetros globales
    • Historial de cambios del endpoint
    • Comentarios
    • Gestión de endpoints por lotes
    • API de protocolo personalizado
    • Modo Spec-first (Beta)
    • Esquemas de seguridad
      • Descripción general
      • Crear un esquema de seguridad
      • Usar el esquema de seguridad
      • Esquema de seguridad en la documentación en línea
    • Funciones avanzadas
      • Campos personalizados de endpoint
      • Escenarios de prueba asociados
      • Estado del endpoint
      • Apariencia de las listas de parámetros
      • Identificación única de endpoints
    • Schemas
      • Descripción general
      • Crear un nuevo esquema
      • Crear un esquema
      • Generar esquemas a partir de JSON, etc.
      • oneOf, allOf, anyOf
      • Uso de Discriminator
  • Pruebas de API
    • Descripción general
    • Escenarios de prueba
      • Crear un escenario de prueba
      • Pasar datos entre peticiones
      • Condiciones de control de flujo
      • Sincronizar datos desde endpoints y casos de endpoint
      • Importar endpoints y casos de endpoint desde otros proyectos
      • Exportar escenarios de prueba
    • Informes de prueba
      • Informes de prueba
    • Ejecutar escenarios de prueba
      • Ejecutar un escenario de prueba
      • Ejecutar escenarios de prueba por lotes
      • Pruebas basadas en datos
      • Datos de prueba compartidos
      • Tareas programadas
      • Gestionar el entorno de ejecución de API de otros proyectos
    • Suite de pruebas
      • Descripción general
      • Crear una suite de pruebas
      • Orquestar suite de pruebas
      • Ejecutar conjuntos de pruebas localmente
      • Ejecutar suites de prueba mediante CLI
      • Tareas programadas
    • Probar APIs
      • Pruebas de integración
      • Pruebas de rendimiento
      • Pruebas de extremo a extremo
      • Pruebas de regresión
      • Pruebas de contrato
    • Apidog CLI
      • Descripción general
      • Instalación y ejecución de Apidog CLI
      • Opciones de Apidog CLI
    • CI/CD
      • Descripción general
      • Integrar con Github Actions
      • Integrar con Gitlab
      • Integrar con Jenkins
      • Activar prueba mediante commit de Git
  • Publicar documentación de API
    • Descripción general
    • Tecnologías de API compatibles
    • Uso compartido rápido
    • Visualización de la documentación de API
    • Documentación de Markdown
    • Publicación de sitios de documentación
    • Página de inicio de sesión personalizada
    • Diseños personalizados
    • CSS, JavaScript, HTML personalizados
    • Dominio personalizado
    • Funciones de IA
    • Configuración de SEO
    • Configuración avanzada
      • Búsqueda en la documentación
      • Proxy CORS
      • Integración de Google Analytics
      • Configuración del árbol de carpetas
      • Configuración de visibilidad
      • Incrustación de valores en las URL de documentación
    • Versiones de API
      • Descripción general
      • Crear versiones de API
      • Publicación de versiones de API
      • Compartir endpoints con versiones de API
  • Ramas
    • Descripción general
    • Crear una rama de sprint
    • Prueba de APIs en una rama
    • Diseño de API en una rama
    • Fusionar ramas de sprint
    • Gestión de ramas de sprint
    • AI Branch (Beta)
  • Funciones de IA
    • Descripción general
    • Habilitación de funciones de IA
    • Generación de casos de prueba
    • Modificación de esquemas con IA
    • Comprobación de cumplimiento del endpoint
    • Comprobación de integridad de la documentación de API
    • Nomenclatura de campos con IA
    • Preguntas frecuentes
  • Servidor MCP de Apidog
    • Descripción general
    • Conectar un proyecto de Apidog a la IA
    • Conectar documentación publicada a la IA
    • Conectar archivos OpenAPI a la IA
  • Mejores prácticas
    • Gestión de firmas de API
    • Acceso a APIs protegidas con OAuth 2.0
    • Flujo de trabajo de colaboración
    • Gestión del estado de autenticación
  • Espacio sin conexión
    • Descripción general
  • Administración
    • Gestión de proyectos
      • Gestión de proyectos
      • Configuración de notificaciones
      • Gestión de miembros del proyecto
      • Recursos del proyecto
        • Conexión a la base de datos
        • Conexión con Git
    • Gestión de equipos
      • Gestión de equipos
      • Gestión de miembros del equipo
      • Actividades del equipo
      • Roles y permisos del equipo
      • Recursos del equipo
        • General Runner
        • Variables de equipo
        • Agente proxy de peticiones
      • Colaboraciones en tiempo real
        • Colaboración en equipo
    • Lista de verificación de incorporación
      • Conceptos básicos
      • Guía de incorporación
    • Gestión de la organización
      • Gestión de la organización
      • Rol y permisos de la organización
      • Gestión de planes
        • Administradores de facturación en organizaciones
      • Inicio de sesión único (SSO)
        • Descripción general de SSO
        • Configuración de Microsoft Entra ID
        • Configuración de Okta
        • Configuración de SSO para una organización
        • Gestión de cuentas de usuario
        • Asignar grupos a equipos
      • Aprovisionamiento SCIM
        • Introducción al aprovisionamiento SCIM
        • Microsoft Entra ID
        • Okta
      • Recursos de la organización
        • Runner autohospedado
  • Facturación
    • Descripción general
    • Créditos
    • Actualizar su plan
    • Métodos de pago alternativos
    • Gestión de suscripciones
    • Trasladar equipos de pago a organizaciones
  • Complementos
    • API Hub
    • Plugin Apidog Intellij IDEA
    • Extensión del navegador
      • Chrome
      • Microsoft Edge
    • Proxy de peticiones
      • Proxy de peticiones en la web
      • Proxy de petición en documentos compartidos
      • Proxy de peticiones en el cliente
  • Datos y seguridad
    • Almacenamiento y seguridad de datos
    • Privacidad y seguridad de los datos del usuario
    • Enrutamiento de peticiones y seguridad de datos
  • Referencias
    • Enfoque de diseño de API primero
    • Extensiones de la especificación OpenAPI de Apidog
    • JSONPath
    • XPath
    • Expresiones regulares
    • JSON Schema
    • Formato de archivo CSV
    • Instalación del entorno Java
    • Entorno de implementación de Runner
    • Sintaxis Markdown de Apidog
    • Extensiones Swagger de Apidog
      • Descripción general
      • x-apidog-folder
      • x-apidog-status
      • x-apidog-name
      • x-apidog-maintainer
    • Extensiones JSON Schema de Apidog
      • Descripción general
      • x-apidog-mock
      • x-apidog-orders
      • x-apidog-enum
  • Apidog Europa
    • Apidog Europe
  • Centro de soporte
  1. Schemas

oneOf, allOf, anyOf

oneOf, anyOf y allOf son palabras clave de la especificación JSON Schema que se utilizan para definir estructuras de datos compuestas. Son, esencialmente, operadores lógicos aplicados a la validación de datos. Apidog admite plenamente estas funciones de JSON Schema, lo que le ayuda a crear documentación de API y reglas de validación de datos más precisas.

Conceptos básicos#

allOf
allOf significa que los datos deben satisfacer simultáneamente todas las condiciones de los subesquemas, lo que equivale a la operación AND en las operaciones lógicas. Al igual que la expresión «tanto... como...» en el lenguaje cotidiano, todas las condiciones deben cumplirse simultáneamente para que la validación se apruebe.
anyOf
oneOf

Tabla de comparación lógica#

Palabra claveOperación lógicaRequisito de condiciónCaso de uso típico
allOfANDDebe satisfacer todas las condiciones simultáneamenteHerencia, extensión
anyOfORDebe satisfacer al menos una condiciónCombinaciones opcionales
oneOfXORDebe satisfacer exactamente una condiciónOpciones mutuamente excluyentes

Uso en Apidog#

1. Uso del editor visual#

1
Paso 1: Crear esquemas de datos
En su proyecto, haga clic en "Schemas" y, a continuación, en "New Schema".
Crear un nuevo esquema
2
Paso 2: Añadir composición de esquemas
En el panel de edición del esquema de datos, al seleccionar el tipo, haga clic en "Schema Composition" y elija oneOf, anyOf o allOf. Defina estructuras de datos específicas para cada subesquema.
Añadir composición de esquemas

2. Uso del editor de código JSON Schema#

También puede editar directamente el código JSON Schema en el panel de edición del esquema de datos para definir estos patrones de composición lógica.
Editor de código JSON Schema

Aplicación en la documentación de API#

Definición de parámetros de petición#

Al definir parámetros de petición de endpoint, puede utilizar estos patrones de composición para describir estructuras de parámetros complejas:
1
Acceda a la página de edición de la API.
2
En la sección "Request Parameters", seleccione Body y elija el tipo JSON.
3
En la estructura de datos, haga clic en "Reference Schema", o seleccione la "Schema Composition" adecuada según la lógica de negocio, o defina un JSON Schema personalizado.
Composición de esquemas de parámetros de petición

Definición de datos de respuesta#

Del mismo modo, puede utilizar esta composición de esquemas en los datos de respuesta:
1
En la sección "Response", añada ejemplos de respuesta.
2
Utilice la composición de esquemas para describir diferentes formatos de respuesta.
Composición de esquemas de respuesta

Ejemplos prácticos de uso#

Ejemplo de allOf (operación AND)#

El uso de allOf le permite combinar varios esquemas de datos, lo que exige que los datos satisfagan todas las condiciones simultáneamente. Es como decir «la información del usuario debe incluir información básica AND información de contacto»:
{
  "allOf": [
    {
      "description": "Basic user information",
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" }
      },
      "required": ["id", "name"]
    },
    {
      "description": "Contact information", 
      "type": "object",
      "properties": {
        "email": { "type": "string", "format": "email" },
        "phone": { "type": "string" }
      },
      "required": ["email"]
    }
  ]
}
Resultado: Los datos finales deben contener los campos id, name y email, mientras que phone es opcional. Todas las restricciones de los subesquemas se combinan y ejecutan, como se muestra a continuación:
Resultado del ejemplo de allOf

Ejemplo de anyOf (operación OR)#

El uso de anyOf proporciona varias rutas de validación opcionales: los usuarios pueden elegir uno o varios métodos. Es como decir «los usuarios pueden iniciar sesión mediante nombre de usuario/contraseña OR correo electrónico/contraseña OR teléfono/código de verificación»:
{
  "type": "object",
  "properties": {
    "login": {
      "anyOf": [
        {
          "description": "Username/password login",
          "properties": {
            "username": { "type": "string" },
            "password": { "type": "string" }
          },
          "required": ["username", "password"]
        },
        {
          "description": "Email/password login",
          "properties": {
            "email": { "type": "string", "format": "email" },
            "password": { "type": "string" }
          },
          "required": ["email", "password"]
        },
        {
          "description": "Phone/verification code login",
          "properties": {
            "phone": { "type": "string" },
            "verifyCode": { "type": "string" }
          },
          "required": ["phone", "verifyCode"]
        }
      ]
    }
  }
}
Resultado: Los usuarios pueden proporcionar información para uno o varios métodos de inicio de sesión, siempre que al menos un método satisfaga los requisitos de validación, como se muestra a continuación:
Resultado del ejemplo de anyOf

Ejemplo de oneOf (operación XOR)#

El uso de oneOf garantiza que los usuarios solo puedan elegir un método de pago y que no puedan proporcionar varios métodos simultáneamente. Es como decir «el método de pago debe ser tarjeta de crédito XOR PayPal XOR transferencia bancaria: exactamente una de estas opciones»:
{
  "type": "object", 
  "properties": {
    "payment": {
      "oneOf": [
        {
          "description": "Credit card payment",
          "type": "object",
          "properties": {
            "type": { "const": "credit_card" },
            "cardNumber": { "type": "string" },
            "expiryDate": { "type": "string" }
          },
          "required": ["type", "cardNumber", "expiryDate"],
          "additionalProperties": false
        },
        {
          "description": "PayPal payment", 
          "type": "object",
          "properties": {
            "type": { "const": "paypal" },
            "email": { "type": "string", "format": "email" }
          },
          "required": ["type", "email"],
          "additionalProperties": false
        },
        {
          "description": "Bank transfer",
          "type": "object", 
          "properties": {
            "type": { "const": "bank_transfer" },
            "accountNumber": { "type": "string" },
            "routingNumber": { "type": "string" }
          },
          "required": ["type", "accountNumber", "routingNumber"],
          "additionalProperties": false
        }
      ]
    }
  }
}
Resultado: Los usuarios deben elegir exactamente un método de pago: no pueden proporcionar varios métodos simultáneamente ni tampoco omitirlos todos, como se muestra a continuación:
Resultado del ejemplo de oneOf

Prácticas recomendadas#

Al elegir patrones de composición, primero aclare su lógica de negocio:
Si necesita combinar/heredar varios esquemas → Use allOf (operación AND)
Si necesita combinaciones opcionales flexibles → Use anyOf (operación OR)
Si necesita opciones estrictamente mutuamente excluyentes → Use oneOf (operación XOR)
Modified at 2026-06-09 08:52:14
Previous
Generar esquemas a partir de JSON, etc.
Next
Uso de Discriminator
Built with