Types de données complexes
Décrivez des API avec des schémas flexibles via oneOf, anyOf et allOf pour les propriétés optionnelles, le polymorphisme et les formats multiples.
Lorsque votre API accepte plusieurs formats de données, comporte des champs conditionnels ou utilise des modèles d’héritage, les mots-clés de composition de schémas d’OpenAPI vous aident à documenter ces structures flexibles. Avec oneOf, anyOf et allOf, vous pouvez décrire des API qui prennent en charge différents types d’entrée ou combinent plusieurs schémas en modèles de données complets.
Pour les types de données complexes, OpenAPI propose des mots-clés pour combiner des schémas :
allOf: Combine plusieurs schémas (comme la fusion d’objets ou l’extension d’un schéma de base). Fonctionne comme un opérateur « and ».anyOf: Accepte des données correspondant à l’un des schémas fournis. Fonctionne comme un opérateur « or ».oneOf: Accepte des données correspondant exactement à un seul des schémas fournis. Fonctionne comme un opérateur « exclusive-or ».
oneOf et anyOf de la même manière, car la différence pratique influe rarement sur l’utilisation de l’API.Pour des spécifications détaillées de ces mots-clés, consultez la documentation OpenAPI.
not n’est actuellement pas pris en charge.Lorsque vous utilisez allOf, Mintlify applique un prétraitement à votre document OpenAPI afin d’afficher des combinaisons complexes de manière lisible. Par exemple, lorsque vous combinez deux schémas d’objet avec allOf, Mintlify fusionne les propriétés des deux en un seul objet. Cela est particulièrement utile lorsque vous exploitez les components réutilisables d’OpenAPI.
org_with_users:
allOf:
- $ref: '#/components/schemas/Org'
- type: object
properties:
users:
type: array
description: Un tableau contenant tous les utilisateurs de l'organisation
# ...
components:
schemas:
Org:
type: object
properties:
id:
type: string
description: L'identifiant de l'organisationorg_with_usersobjectShow Hide child attributes
idstringL’identifiant de l’organisation
usersobject[]Un tableau contenant l’ensemble des utilisateurs de l’organisation
Les champs typés any ou undefined s’affichent de la même manière que les schémas oneOf, avec un sélecteur qui permet aux utilisateurs de choisir une forme concrète avant d’envoyer une requête. Cela permet au playground d’API de proposer une entrée pertinente même lorsque le schéma ne restreint pas la valeur à un seul type.
Lorsque vous utilisez oneOf ou anyOf, les options s’affichent dans un conteneur à onglets. Indiquez un champ title dans chaque sous-schéma pour nommer vos options. Par exemple, voici comment vous pourriez afficher deux types d’adresses de livraison distincts :
delivery_address:
oneOf:
- title: StreetAddress
type: object
properties:
address_line_1:
type: string
description: L'adresse postale du destinataire
# ...
- title: POBox
type: object
properties:
box_number:
type: string
description: Le numéro de la boîte postale
# ...delivery_addressobjectaddress_line_1stringL’adresse de la résidence