The answer depends on which version of OpenAPI you use.
OpenAPI 3.0 supports oneOf
, so it's possible to define multiple schemas for array items:
openapi: 3.0.0
...
paths:
/something:
get:
responses:
'200':
description: success
content:
application/json:
schema:
type: array
items:
oneOf: # <---------
- type: array
items:
type: object
properties:
prop1:
type: string
prop2:
type: string
- type: object
properties:
key:
type: integer
required:
- key
OpenAPI 2.0 does not support oneOf
or mixed types. The most you can do is use the typeless schema, which means the array items can be anything - objects, arrays or primitives - but you can't specify the exact types.
swagger: '2.0'
...
paths:
/:
get:
produces:
- application/json
responses:
'200':
description: success
schema:
type: array
items: {} # <---------
# Example to display in Swagger UI:
example:
- - prop1: hello
prop2: hello again
- prop1: bye
prop2: bye again
- key: 123