OpenAPI: How to mark a schema field as required
22 January 2023 (Updated 22 January 2023)
Suppose you have a POST /v1/clients
endpoint that requires a JSON payload where the firstName
and lastName
fields are required, but email
is not. You can describe this with the following OpenAPI schema:
openapi: 3.0.3
info:
title: Client API - OpenAPI 3.0
description: |-
This is a sample API based on the OpenAPI 3.0 specification.
termsOfService: http://swagger.io/terms/
contact:
email: apiteam@swagger.io
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 1.0.11
servers:
- url: https://petstore3.swagger.io/api/v3
tags:
- name: client
description: Client operations
paths:
/clients:
post:
summary: Create a new client
tags:
- client
requestBody:
description: "The new client"
required: true
content:
application/json:
schema:
type: object
properties:
firstName:
type: string
lastName:
type: string
email:
type: string
required:
- firstName
- lastName
responses:
201:
description: Client resource created
content:
application/json:
schema:
type: object
properties:
message:
type: string
Now, if you use a tool like Swagger UI, you’ll see that firstName
and lastName
fields are marked as required, but not email
.
You can paste the above YAML here to see the generated SwaggerUI docs.
Tagged:
OpenAPI
Thanks for your comment 🙏. Once it's approved, it will appear here.
Leave a comment