openapi: 3.0.3
info:
  title: apibuilder swagger
  version: 0.16.74
  description: Specification of swagger using the apibuilder format
components:
  schemas:
    IoApibuilderSwaggerV0ModelsXml:
      type: object
      properties:
        name:
          type: string
        namespace:
          type: string
        prefix:
          type: string
        attribute:
          type: boolean
        wrapped:
          type: boolean
    IoApibuilderSwaggerV0ModelsExternalDocumentation:
      type: object
      required:
      - url
      properties:
        description:
          type: string
        url:
          type: string
    IoApibuilderSwaggerV0ModelsParameter:
      description: 'TODO: This might need to be a complex union type, given the different
        requirements based on the ''in'' property. http://swagger.io/specification/#parameterObject'
      type: object
      required:
      - name
      - in
      - required
      properties:
        name:
          type: string
        in:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsParameterInType'
        description:
          type: string
        required:
          type: boolean
        schema:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsSchema'
        type:
          type: string
        format:
          type: string
        allowEmptyValue:
          type: boolean
        items:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsItems'
        collectionFormat:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsCollectionFormatType'
        default:
          type: object
          additionalProperties: true
        maximum:
          type: integer
          format: int64
        exclusiveMaximum:
          type: boolean
        minimum:
          type: integer
          format: int64
        exclusiveMinimum:
          type: boolean
        maxLength:
          type: integer
          format: int32
        minLength:
          type: integer
          format: int32
        pattern:
          type: string
        maxItems:
          type: integer
          format: int32
        minItems:
          type: integer
          format: int32
        uniqueItems:
          type: boolean
        enum:
          type: array
          items:
            type: object
            additionalProperties: true
        multipleOf:
          type: integer
          format: int64
    IoApibuilderSwaggerV0ModelsContact:
      type: object
      properties:
        name:
          type: string
        url:
          type: string
        email:
          type: string
    IoApibuilderSwaggerV0ModelsTag:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        description:
          type: string
        externalDocs:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsExternalDocumentation'
    IoApibuilderSwaggerV0ModelsOperation:
      type: object
      required:
      - responses
      properties:
        tags:
          type: array
          items:
            type: string
        summary:
          type: string
        description:
          type: string
        externalDocs:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsExternalDocumentation'
        operationId:
          type: string
        consumes:
          type: array
          items:
            type: string
        produces:
          type: array
          items:
            type: string
        parameters:
          type: array
          items:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0UnionsParameterOrRef'
        responses:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0UnionsResponseOrRef'
        schemes:
          type: array
          items:
            type: string
        deprecated:
          type: boolean
        security:
          type: array
          items:
            type: object
            additionalProperties:
              type: array
              items:
                type: string
    IoApibuilderSwaggerV0ModelsLicense:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        url:
          type: string
    IoApibuilderSwaggerV0ModelsHeader:
      description: 'TODO: Can this be a union type with items?'
      type: object
      required:
      - type
      properties:
        description:
          type: string
        type:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsItemsType'
        format:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsFormatType'
        items:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsItems'
          description: 'NOTE: This is required if type is ''array'''
        collectionFormat:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsCollectionFormatType'
        default:
          type: object
          additionalProperties: true
        maximum:
          type: integer
          format: int64
        exclusiveMaximum:
          type: boolean
        minimum:
          type: integer
          format: int64
        exclusiveMinimum:
          type: boolean
        maxLength:
          type: integer
          format: int32
        minLength:
          type: integer
          format: int32
        pattern:
          type: string
        maxItems:
          type: integer
          format: int32
        minItems:
          type: integer
          format: int32
        uniqueItems:
          type: boolean
        enum:
          type: array
          items:
            type: object
            additionalProperties: true
        multipleOf:
          type: integer
          format: int64
    IoApibuilderSwaggerV0ModelsInfo:
      type: object
      required:
      - title
      - version
      properties:
        title:
          type: string
        description:
          type: string
        termsOfService:
          type: string
        contact:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsContact'
        license:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsLicense'
        version:
          type: string
    IoApibuilderSwaggerV0ModelsSwagger:
      type: object
      required:
      - swagger
      - info
      - paths
      properties:
        swagger:
          type: string
        info:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsInfo'
        host:
          type: string
        basePath:
          type: string
        schemes:
          type: array
          items:
            type: string
        consumes:
          type: array
          items:
            type: string
        produces:
          type: array
          items:
            type: string
        paths:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsPathItem'
        definitions:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsSchema'
        parameters:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsParameter'
        responses:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsResponse'
        securityDefinitions:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsSecurityScheme'
        security:
          type: object
          additionalProperties:
            type: string
        tags:
          type: array
          items:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsTag'
        externalDocs:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsExternalDocumentation'
    IoApibuilderSwaggerV0ModelsSecurityScheme:
      description: 'TODO: Consider making this a union type of the three different
        schemes (and their required fields)'
      type: object
      required:
      - type
      properties:
        type:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsSecuritySchemeType'
        description:
          type: string
        name:
          description: Required for apiKey
          type: string
        in:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsApiKeyInType'
          description: Required for apiKey
        flow:
          description: Required for oauth2
          type: string
        authorizationUrl:
          description: Required for oauth2
          type: string
        tokenUrl:
          description: Required for oauth2
          type: string
        scopes:
          description: Required for oauth2
          type: object
          additionalProperties:
            type: string
    IoApibuilderSwaggerV0ModelsPathItem:
      type: object
      properties:
        ref:
          description: 'TODO: Needs to be named ''$ref'''
          type: string
        get:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsOperation'
        put:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsOperation'
        post:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsOperation'
        delete:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsOperation'
        options:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsOperation'
        head:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsOperation'
        patch:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsOperation'
        parameters:
          type: array
          items:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0UnionsParameterOrRef'
    IoApibuilderSwaggerV0ModelsItems:
      type: object
      required:
      - type
      properties:
        type:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsItemsType'
        format:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsFormatType'
        items:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsItems'
          description: 'NOTE: This is required if type is ''array'''
        collectionFormat:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsCollectionFormatType'
        default:
          type: object
          additionalProperties: true
        maximum:
          type: integer
          format: int64
        exclusiveMaximum:
          type: boolean
        minimum:
          type: integer
          format: int64
        exclusiveMinimum:
          type: boolean
        maxLength:
          type: integer
          format: int32
        minLength:
          type: integer
          format: int32
        pattern:
          type: string
        maxItems:
          type: integer
          format: int32
        minItems:
          type: integer
          format: int32
        uniqueItems:
          type: boolean
        enum:
          type: array
          items:
            type: object
            additionalProperties: true
        multipleOf:
          type: integer
          format: int64
    IoApibuilderSwaggerV0ModelsReference:
      type: object
      required:
      - ref
      properties:
        ref:
          description: 'TODO: Needs to be named ''$ref'''
          type: string
    IoApibuilderSwaggerV0ModelsSchema:
      type: object
      properties:
        ref:
          description: 'TODO: Needs to be named ''$ref'''
          type: string
        format:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0EnumsFormatType'
        title:
          type: string
        description:
          type: string
        default:
          type: object
          additionalProperties: true
        multipleOf:
          type: integer
          format: int64
        maximum:
          type: integer
          format: int64
        exclusiveMaximum:
          type: boolean
        minimum:
          type: integer
          format: int64
        exclusiveMinimum:
          type: boolean
        maxLength:
          type: integer
          format: int32
        minLength:
          type: integer
          format: int32
        pattern:
          type: string
        maxItems:
          type: integer
          format: int32
        minItems:
          type: integer
          format: int32
        uniqueItems:
          type: boolean
        maxProperties:
          type: integer
          format: int32
        minProperties:
          type: integer
          format: int32
        required:
          type: array
          items:
            type: string
        enum:
          type: array
          items:
            type: object
            additionalProperties: true
        type:
          type: array
          items:
            type: string
        items:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsSchema'
          description: 'TODO: figure out if this also needs to support boolean (http://json-schema.org/latest/json-schema-validation.html#rfc.section.5.9).
            It''s possible that a uni-directional approach may allow us to avoid supporting
            this odd type.'
        allOf:
          type: array
          items:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsSchema'
        properties:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsSchema'
        additionalProperties:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsSchema'
          description: 'TODO: figure out if this also needs to support boolean (http://json-schema.org/latest/json-schema-validation.html#rfc.section.5.18).
            It''s possible that a uni-directional approach may allow us to avoid supporting
            this odd type.'
        discriminator:
          type: string
        readOnly:
          type: boolean
        xml:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsXml'
        externalDocs:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsExternalDocumentation'
        example:
          type: object
          additionalProperties: true
    IoApibuilderSwaggerV0ModelsResponse:
      type: object
      required:
      - description
      properties:
        description:
          type: string
        schema:
          $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsSchema'
        headers:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsHeader'
        examples:
          type: object
          additionalProperties: true
    IoApibuilderSwaggerV0EnumsApiKeyInType:
      type: string
      enum:
      - query
      - header
    IoApibuilderSwaggerV0EnumsItemsType:
      type: string
      enum:
      - string
      - number
      - integer
      - boolean
      - array
    IoApibuilderSwaggerV0EnumsCollectionFormatType:
      type: string
      enum:
      - csv
      - ssv
      - tsv
      - pipes
    IoApibuilderSwaggerV0EnumsSecuritySchemeType:
      type: string
      enum:
      - basic
      - apiKey
      - oauth2
    IoApibuilderSwaggerV0EnumsParameterInType:
      type: string
      enum:
      - query
      - header
      - path
      - formData
      - body
    IoApibuilderSwaggerV0EnumsFormatType:
      type: string
      enum:
      - binary
      - byte
      - date
      - date-time
      - double
      - float
      - int32
      - int64
      - password
    IoApibuilderSwaggerV0UnionsParameterOrRef:
      oneOf:
      - $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsParameter'
      - $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsReference'
    IoApibuilderSwaggerV0UnionsResponseOrRef:
      oneOf:
      - $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsResponse'
      - $ref: '#/components/schemas/IoApibuilderSwaggerV0ModelsReference'
