Tipos de datos complejos
Describe APIs con esquemas flexibles usando las palabras clave oneOf, anyOf y allOf para propiedades opcionales, polimorfismo y múltiples formatos de datos.
Cuando tu API acepta varios formatos de datos, tiene campos condicionales o utiliza patrones de herencia, las palabras clave de composición de esquemas de OpenAPI te ayudan a documentar estas estructuras flexibles. Con oneOf, anyOf y allOf, puedes describir APIs que admiten diferentes tipos de entrada o combinan múltiples esquemas en modelos de datos completos.
Para tipos de datos complejos, OpenAPI proporciona palabras clave para combinar esquemas:
allOf: Combina varios esquemas (como fusionar objetos o extender un esquema base). Funciona como un operadorand.anyOf: Acepta datos que coincidan con cualquiera de los esquemas proporcionados. Funciona como un operadoror.oneOf: Acepta datos que coincidan exactamente con uno de los esquemas proporcionados. Funciona como un operadorexclusive-or.
oneOf y anyOf de forma idéntica, ya que la diferencia práctica rara vez afecta el uso de la API.Para obtener especificaciones detalladas de estas palabras clave, consulta la documentación de OpenAPI.
not no es compatible actualmente.Cuando usas allOf, Mintlify realiza un preprocesamiento de tu documento de OpenAPI para mostrar combinaciones complejas de forma legible. Por ejemplo, cuando combinas dos esquemas de objeto con allOf, Mintlify unifica las propiedades de ambos en un solo objeto. Esto resulta especialmente útil al aprovechar los componentes reutilizables de OpenAPI.
org_with_users:
allOf:
- $ref: '#/components/schemas/Org'
- type: object
properties:
users:
type: array
description: Una matriz que contiene todos los usuarios de la organización
# ...
components:
schemas:
Org:
type: object
properties:
id:
type: string
description: El ID de la organizaciónorg_with_usersobjectShow Hide child attributes
idstringEl ID de la organización
usersobject[]Una matriz que contiene a todos los usuarios de la organización
Los campos tipados como any o undefined se muestran de la misma manera que los esquemas oneOf, con un selector que permite a las personas elegir una forma concreta antes de enviar una solicitud. Esto permite que el playground de la API presente una entrada significativa incluso cuando el esquema no restringe el valor a un único tipo.
Cuando uses oneOf o anyOf, las opciones aparecen en un contenedor con pestañas. Especifica un campo title en cada subschema para poner nombre a tus opciones. Por ejemplo, así podrías mostrar dos tipos distintos de direcciones de entrega:
delivery_address:
oneOf:
- title: StreetAddress
type: object
properties:
address_line_1:
type: string
description: La dirección postal del destinatario
# ...
- title: POBox
type: object
properties:
box_number:
type: string
description: El número del apartado de correos
# ...delivery_addressobjectaddress_line_1stringLa dirección de la residencia