peat-psuwit
6 years agoNew Member
How to make an "all optional" schema from a schema in OpenAPI 3
Suppose I have an OpenAPI 3.0 schema like this:
components: schemas: Device: type: object properties: id: type: string readOnly: true name: type: string owner: type: string required: - id - name - owner
This works fine for a POST request's body. However, if I want to use this schema for a PATCH request's body, it wouldn't make sense as now the request body is required to have all properties in it. So, my question is, is it possible to make a schema that inherits from this schema, but with all required properties optional?
Required properties of a base schema cannot be made optional. In other words, you can only add constraints but not remove them.
You need to do it the other way round - define a base schema with optional properties, then "inherit" from that schema and mark the properties in question as required.
components: schemas: # Schema for PATCH BaseDevice: type: object properties: id: type: string readOnly: true name: type: string owner: type: string # Schema for POST Device: allOf: - $ref: '#/components/schemas/BaseDevice' required: - id - name - owner