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

Byte Commander picture Byte Commander · Oct 28, 2016 · Viewed 9.2k times · Source

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?

Answer

Helen picture Helen · Nov 15, 2016

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" ]