openapi: 3.0.0
info:
  version: 1.0.0
  title: Swagger Petstore
  license:
    name: MIT
servers:
  - url: http://petstore.swagger.io/v1
paths: {}
components:
  schemas:
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
    Cat:
      description: A representation of a cat
      allOf:
        - $ref: '#/components/schemas/Pet'
        - type: object
          properties:
            huntingSkill:
              type: string
              description: The measured skill for hunting
              default: lazy
              enum:
                - clueless
                - lazy
                - adventurous
                - aggressive
          required:
            - huntingSkill
    Dog:
      description: A representation of a dog
      allOf:
        - $ref: '#/components/schemas/Pet'
        - type: object
          properties:
            packSize:
              type: integer
              format: int32
              description: the size of the pack the dog is from
              default: 0
              minimum: 0
          required:
            - packSize
    Pet:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        tag:
          type: string
        type:
          type: string
      discriminator:
        propertyName: type
        mapping:
          cat: '#/components/schemas/Cat'
          dog: '#/components/schemas/Dog'
      required:
        - id
        - name
        - type
    Pets:
      type: array
      items:
        type: object
        properties:
          id:
            type: integer
            format: int64
          name:
            type: string
          tag:
            type: string
          type:
            type: string
        discriminator:
          propertyName: type
          mapping:
            cat: '#/components/schemas/Cat'
            dog: '#/components/schemas/Dog'
        required:
          - id
          - name
          - type
    RecursiveByLocal:
      type: object
      properties:
        id:
          type: integer
          format: int64
        children:
          type: array
          items:
            $ref: '#/components/schemas/RecursiveByLocal'
    RecursiveByRemote:
      type: object
      properties:
        id:
          type: integer
          format: int64
        children:
          type: array
          items:
            $ref: '#/components/schemas/RecursiveByRemote'
    RecursiveByUrl:
      type: object
      properties:
        id:
          type: integer
          format: int64
        children:
          type: array
          items:
            $ref: '#/components/schemas/RecursiveByUrl'
