Forum Discussion

ayushi's avatar
ayushi
Occasional Visitor
5 years ago

how to have different required fields for the create (put) and update api?

I have a schema defined say star which has name as required field. But i want this field to be required in create body request but not in update body request. What is the correct way to do without redundant code?

Star:
title: Star
description: star found
required:
- name
properties:
id:
description: the id for the star
type: string
format: uuid4
readOnly: true
x-go-name: ID
name:
description: name of the star
type: string
x-go-name: Star

  • HKosova's avatar
    HKosova
    SmartBear Alumni (Retired)

    Define the base "Star" model where the "name" property is optional. Then define another model, say, "NewStar", as allOf of the base model and the required list. Use the base "Star" model in the update request and the "NewStar" model in the create request.

    Star:
      type: object
      properties:
        ...
    NewStar:
      allOf:
        - $ref: '#/definitions/Star'   # or '#/components/schemas/Star' if you use OAS3
        - required:
            - name