openapi: 3.0.3
info:
  title: ''
  version: ''
paths: {}
components:
  schemas:
    AdjacentlyTagged:
      oneOf:
      - type: object
        properties:
          t:
            type: string
            enum:
            - A
          c:
            type: integer
        required:
        - t
        - c
      - type: object
        properties:
          t:
            type: string
            enum:
            - C
          c:
            type: object
            properties:
              test:
                type: integer
            required:
            - test
        required:
        - t
        - c
      - type: object
        properties:
          t:
            type: string
            enum:
            - D
          c:
            oneOf:
            - type: object
              properties:
                Days:
                  type: integer
              required:
              - Days
            - type: object
              properties:
                Months:
                  type: integer
              required:
              - Months
        required:
        - t
        - c
      - type: object
        properties:
          t:
            type: string
            enum:
            - B
            - E
        required:
        - t
    Duration:
      oneOf:
      - type: object
        properties:
          Days:
            type: integer
        required:
        - Days
      - type: object
        properties:
          Months:
            type: integer
        required:
        - Months
    ExternallyTagged:
      oneOf:
      - type: object
        properties:
          A:
            type: integer
        required:
        - A
      - type: object
        properties:
          C:
            type: object
            properties:
              test:
                type: integer
            required:
            - test
        required:
        - C
      - type: object
        properties:
          D:
            oneOf:
            - type: object
              properties:
                Days:
                  type: integer
              required:
              - Days
            - type: object
              properties:
                Months:
                  type: integer
              required:
              - Months
        required:
        - D
      - type: string
        enum:
        - B
        - E
    Foo:
      type: object
      properties:
        externally_tagged:
          $ref: '#/components/schemas/ExternallyTagged'
        externally_tagged_inline:
          oneOf:
          - type: object
            properties:
              A:
                type: integer
            required:
            - A
          - type: object
            properties:
              C:
                type: object
                properties:
                  test:
                    type: integer
                required:
                - test
            required:
            - C
          - type: object
            properties:
              D:
                oneOf:
                - type: object
                  properties:
                    Days:
                      type: integer
                  required:
                  - Days
                - type: object
                  properties:
                    Months:
                      type: integer
                  required:
                  - Months
            required:
            - D
          - type: string
            enum:
            - B
            - E
        internally_tagged:
          $ref: '#/components/schemas/InternallyTagged'
        internally_tagged_inline:
          oneOf:
          - type: object
            properties:
              test:
                type: integer
              type:
                type: string
                enum:
                - C
            required:
            - test
            - type
          - allOf:
            - type: object
              properties:
                type:
                  type: string
                  enum:
                  - D
              required:
              - type
            - oneOf:
              - type: object
                properties:
                  Days:
                    type: integer
                required:
                - Days
              - type: object
                properties:
                  Months:
                    type: integer
                required:
                - Months
          - type: object
            properties:
              type:
                type: string
                enum:
                - B
                - E
            required:
            - type
        adjacently_tagged:
          $ref: '#/components/schemas/AdjacentlyTagged'
        adjacently_tagged_inline:
          oneOf:
          - type: object
            properties:
              t:
                type: string
                enum:
                - A
              c:
                type: integer
            required:
            - t
            - c
          - type: object
            properties:
              t:
                type: string
                enum:
                - C
              c:
                type: object
                properties:
                  test:
                    type: integer
                required:
                - test
            required:
            - t
            - c
          - type: object
            properties:
              t:
                type: string
                enum:
                - D
              c:
                oneOf:
                - type: object
                  properties:
                    Days:
                      type: integer
                  required:
                  - Days
                - type: object
                  properties:
                    Months:
                      type: integer
                  required:
                  - Months
            required:
            - t
            - c
          - type: object
            properties:
              t:
                type: string
                enum:
                - B
                - E
            required:
            - t
        untagged:
          $ref: '#/components/schemas/Untagged'
        untagged_inline:
          oneOf:
          - type: integer
          - type: object
            properties:
              test:
                type: integer
            required:
            - test
          - oneOf:
            - type: object
              properties:
                Days:
                  type: integer
              required:
              - Days
            - type: object
              properties:
                Months:
                  type: integer
              required:
              - Months
      required:
      - externally_tagged
      - externally_tagged_inline
      - internally_tagged
      - internally_tagged_inline
      - adjacently_tagged
      - adjacently_tagged_inline
      - untagged
      - untagged_inline
    InternallyTagged:
      oneOf:
      - type: object
        properties:
          test:
            type: integer
          type:
            type: string
            enum:
            - C
        required:
        - test
        - type
      - allOf:
        - type: object
          properties:
            type:
              type: string
              enum:
              - D
          required:
          - type
        - oneOf:
          - type: object
            properties:
              Days:
                type: integer
            required:
            - Days
          - type: object
            properties:
              Months:
                type: integer
            required:
            - Months
      - type: object
        properties:
          type:
            type: string
            enum:
            - B
            - E
        required:
        - type
    Untagged:
      oneOf:
      - type: integer
      - type: object
        properties:
          test:
            type: integer
        required:
        - test
      - oneOf:
        - type: object
          properties:
            Days:
              type: integer
          required:
          - Days
        - type: object
          properties:
            Months:
              type: integer
          required:
          - Months