Byte Commander
Byte Commander

Reputation: 6736

Require array to contain at least one element in Swagger Schema Object definition

I'm having a Schema Object definition like this in my swagger.yaml:

User:
  type: object
  properties:
    username:
      type: string
      description: the user name
    colors:
      type: array
      items: {
        type: string,
        enum: [ "red", "blue", "green" ]
      }
      description: user must have one or more colors associated
  required:
    - username
    - colors

However, the generated server still happily accepts POST requests using this schema object as required body parameter that do not contain any colors field.

Can I configure Swagger in a way that the color field is always required in a User schema object and ideally also must contain at least one or more items from the enum?

Upvotes: 17

Views: 20488

Answers (1)

Helen
Helen

Reputation: 97677

Use minItems: 1. Additionally you can enforce uniqueItems within the array.

    colors:
      type: array
      minItems: 1
      uniqueItems: true
      items:
        type: string
        enum: [ "red", "blue", "green" ]

Upvotes: 25

Related Questions