swagger-typescript-api icon indicating copy to clipboard operation
swagger-typescript-api copied to clipboard

Making fields required during use of allOf

Open brookjordan opened this issue 4 years ago • 0 comments

Sometime we have data structures which can be inherited in every way except for whether or not parts of them are required. For example, if you POST a request then this may have empty fields filled in with defaults, and the returned data could be always fully returned. Having required work on parts from an schema while using anyOf would be fantastic, and appears to be intended: https://github.com/OAI/OpenAPI-Specification/issues/1870

Example:

schemas:
  UserCreate:
    type: object
    required:
    - email
    properties:
      name: string
      email: string
      image: string
  UserResponse:
    allOf:
    - $ref: '#/components/schemas/UserCreate'
    - type: object
      required:
      - id
      - image
      properties:
        id: string

Right now this outputs:

export interface UserCreate {
  name?: string;
  email: string;
  image?: string;
}

export type UserResponse = UserCreate & {
  id: string;
}

But I would expect something more like:

export interface UserCreate {
  name?: string;
  email: string;
  image?: string;
}

export type UserResponse = UserCreate & {
  id: string;
  image: string;
}

brookjordan avatar Jun 23 '21 03:06 brookjordan