2017-09-28 10 views
1

Je cherche à représenter l'objet JSON suivant OpenAPI:Spécifier plusieurs types pour additionalProperties par Swagger/OpenAPI

{ 
    "name": "Bob", 
    "age": 4, 
    ... 
} 

Le nombre de propriétés et les noms de propriétés ne sont pas totalement prédéterminés, donc je cherche à utiliser additionalProperties . Cependant, je ne sais pas trop comment cela serait représenté par OpenAPI/Swagger 2.0. J'ai essayé ceci:

Person: 
    type: object 
    additionalProperties: 
    type: 
     - int 
     - string 

ou l'équivalent JSON:

{ 
    "Person": { 
    "type": "object", 
    "additionalProperties": { 
     "type": ["int", "string"] 
    } 
    } 
} 

mais cela ne fonctionne pas tout à fait. Est-il possible de conserver la structure de l'objet JSON que je veux représenter, spécifiquement pour les chaînes et les entiers, et non les types d'objets arbitraires? OpenAPI/Swagger 2.0 ne prend pas en charge les valeurs multi-types.

+0

@Helen Il est pas tout à fait arbitraire; Je sais que ce sera une chaîne ou un int, mais pas booléens ou null ou d'autres objets. – sle

+0

En relation: [Tableau de modèles Swagger-Editor avec types distincts] (https://stackoverflow.com/q/41904148/113116) – Helen

Répondre

0

Le plus que vous pouvez faire est d'utiliser le typeless schema, ce qui signifie que les propriétés supplémentaires peuvent être quelque chose - chaînes, nombres, booléens, et ainsi de suite - mais vous ne pouvez pas spécifier les types exacts.

Person: 
    type: object 
    additionalProperties: {} 

Cela équivaut à:

Person: 
    type: object 


Vous pouvez passer à OpenAPI 3.0, qui prend en charge oneOf afin que vous puissiez utiliser:

Person: 
    type: object 
    additionalProperties: 
    oneOf: 
     - type: string 
     - type: integer