components:
  schemas:
    Metadata:
      description: Defines a message named Metadata
      type: object
      required:
        - name
        - version
      additionalProperties: false
      properties:
        description:
          type: string
        name:
          type: string
        namespace:
          type: string
        tags:
          items:
            type: string
          type: array
        type:
          enum:
            - REST
            - SWAGGER
            - SOAP
            - GRAPHQL
            - ODATA
          type: string
        version:
          type: string
        labels:
          type: object
          additionalProperties: true
          properties: {}
    Reference:
      type: object
      required:
        - $ref
      additionalProperties: false
      properties:
        $ref:
          description: >-
            Field 'ref' with JSON name '$ref' accepts the value of either 'ref'
            or '$ref' from the YAML file.

            If both 'ref' and '$ref' are specified, the value of '$ref' takes
            priority.
          type: string
    ReferenceList:
      type: array
      minItems: 1
      items:
        $ref: '#/components/schemas/Reference'
    Namespace:
      type: object
      additionalProperties: false
      properties:
        URI:
          type: string
        prefix:
          type: string
    Namespaces:
      type: array
      minItems: 1
      items:
        $ref: '#/components/schemas/Namespace'
    Path:
      type: object
      required:
        - $path
      additionalProperties: false
      properties:
        $path:
          description: >-
            Field 'path' with JSON name '$path' accepts the value of either
            'path' or '$path' from the YAML file.

            If both 'path' and '$path' are specified, the value of '$path' takes
            priority.
          type: string
    AWSLambda:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - InvokeAWSLambda
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            functionName:
              description: Name of the AWS Lambda function
              type: string
            qualifier:
              description: Version of the AWS Lambda function
              type: string
            invocationType:
              type: string
              enum:
                - request-response
                - event
            region:
              type: string
            awsAuthType:
              type: object
              required:
                - accessSecret
              additionalProperties: false
              properties:
                accessSecret:
                  type: string
            tlsConnectionProfile:
              type: string
            input:
              type: string
            output:
              type: string
            clientConfig:
              type: object
              additionalProperties: false
              properties:
                socketTimeout:
                  type: integer
                connectionTimeout:
                  type: integer
                requestTimeout:
                  type: integer
                clientExecutionTimeout:
                  type: integer
                clientRetryCount:
                  type: integer
                connectionExpirationTimeout:
                  type: integer
                enableExpectContinue:
                  type: boolean
                enableGzip:
                  type: boolean
                enableHostPrefixInjection:
                  type: boolean
                maxConnectionIdleTime:
                  type: integer
                responseMetadataCacheSize:
                  type: boolean
                serverRetryCount:
                  type: integer
                enableThrottledRetries:
                  type: boolean
                enableKeepAlive:
                  type: boolean
                enableResponseMetadataCache:
                  type: boolean
                signatureAlgorithm:
                  type: string
                tcpSendBufferSizeHint:
                  type: integer
                tcpReceiveBufferSizeHint:
                  type: integer
            extensions:
              type: object
              properties:
                webm-gateway:
                  type: object
                  additionalProperties: false
                  properties:
                    apiVersion:
                      type: string
                    spec:
                      type: object
                      additionalProperties: false
                      properties:
                        condition:
                          type: string
                        lambdaConfig:
                          type: object
                          additionalProperties: false
                          properties:
                            alias:
                              type: string
                        request_processing:
                          $ref: '#/components/schemas/InvokeRequestProcessingSchema'
                        response_processing:
                          $ref: '#/components/schemas/InvokeResponseProcessingSchema'
                        namespaces:
                          $ref: '#/components/schemas/Namespaces'
    Api:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - API
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          required:
            - api-spec
            - policy-sequence
          additionalProperties: false
          properties:
            api-spec:
              $ref: '#/components/schemas/Path'
            uriSchemes:
              $ref: '#/components/schemas/Reference'
            properties:
              $ref: '#/components/schemas/Reference'
            cors:
              $ref: '#/components/schemas/Reference'
            scopes:
              $ref: '#/components/schemas/ReferenceList'
            policy-sequence:
              $ref: '#/components/schemas/ReferenceList'
    CORS:
      description: The CORS related information is captured in the message CORS
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - CORS
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          required:
            - rules
          properties:
            rules:
              type: array
              minItems: 1
              items:
                type: object
                required:
                  - action
                  - originList
                additionalProperties: false
                properties:
                  action:
                    type: string
                    enum:
                      - allow
                      - deny
                  originList:
                    description: Multiple instances of allowed origins can be given
                    type: array
                    minItems: 1
                    items:
                      type: string
                  allowCredentials:
                    description: Credential can be allowed or not allowed
                    type: boolean
                  allowMethods:
                    description: Multiple instances allowed methods can be given
                    type: array
                    minItems: 1
                    items:
                      type: string
                    uniqueItems: true
                  allowHeaders:
                    description: Multiple instances of allowed headers can be given
                    minItems: 1
                    items:
                      type: string
                    type: array
                  maxAge:
                    description: Single instance of maximum age can be given
                    maximum: 4294967295
                    minimum: 0
                    type: integer
                  exposeHeaders:
                    type: object
                    additionalProperties: false
                    properties:
                      predefined:
                        type: boolean
                      custom:
                        type: string
                      backend:
                        type: boolean
    Quota:
      type: object
      properties:
        apiVersion:
          type: string
          default: api.ibm.com/v1
        kind:
          enum:
            - Quota
          type: string
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            maxRequest:
              type: integer
            interval:
              type: string
            onLimitReach:
              type: string
            x-webm-config:
              type: object
              properties:
                notification:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    notifyAfter:
                      type: string
                    message:
                      type: string
                    email:
                      type: array
                      items:
                        type: string
                alertConfiguration:
                  type: object
                  properties:
                    frequency:
                      type: string
                    message:
                      type: string
      required:
        - kind
        - apiVersion
        - metadata
        - spec
    Product:
      type: object
      properties:
        apiVersion:
          type: string
          default: api.ibm.com/v1
        kind:
          enum:
            - Product
          type: string
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            info:
              type: object
              properties:
                categories:
                  type: array
                  items:
                    type: string
                contact:
                  type: object
                  properties:
                    name:
                      type: string
                    email:
                      type: string
                    url:
                      type: string
                license:
                  type: object
                  properties:
                    name:
                      type: string
                    url:
                      type: string
                termsOfService:
                  type: string
                summary:
                  type: string
            apis:
              type: array
              items:
                type: object
                properties:
                  $ref:
                    type: string
            plans:
              type: array
              items:
                type: object
                properties:
                  $ref:
                    type: string
            x-portal-config:
              type: object
              properties:
                visibility:
                  type: object
                  properties:
                    view:
                      type: object
                      properties:
                        type:
                          type: string
                        orgs:
                          type: array
                          items:
                            type: string
                        tags:
                          type: array
                          items:
                            type: string
                        enabled:
                          type: boolean
                    subscribe:
                      type: object
                      properties:
                        type:
                          type: string
                        orgs:
                          type: array
                          items:
                            type: string
                        tags:
                          type: array
                          items:
                            type: string
                        enabled:
                          type: boolean
      required:
        - kind
        - apiVersion
        - metadata
        - spec
    Plan:
      type: object
      properties:
        apiVersion:
          type: string
          default: api.ibm.com/v1
        kind:
          enum:
            - Plan
          type: string
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            pricing:
              type: object
              properties:
                value:
                  type: integer
                currency:
                  type: string
            isApprovalRequired:
              type: boolean
            qos:
              type: object
              properties:
                withQuota:
                  type: array
                  items:
                    type: object
                    oneOf:
                      - required:
                          - $ref
                        properties:
                          $ref:
                            type: string
                        additionalProperties: false
                      - required:
                          - unlimited
                        properties:
                          unlimited:
                            type: object
                        additionalProperties: false
                withRateLimit:
                  type: array
                  items:
                    type: object
                    properties:
                      maxRequest:
                        type: integer
                      interval:
                        type: string
                      alertConfiguration:
                        type: string
                        enum:
                          - once
                          - always
                      alertMessage:
                        type: string
                      name:
                        type: string
            x-datapower-config:
              type: object
              properties:
                withAssemblyCountLimit:
                  type: array
                  items:
                    type: object
                    properties:
                      maxRequest:
                        type: string
                      hard-limit:
                        type: boolean
                      cache-only:
                        type: boolean
                      is-client:
                        type: boolean
                      use-api-name:
                        type: boolean
                      use-app-id:
                        type: boolean
                      use-client-id:
                        type: boolean
                      dynamic-value:
                        type: integer
                      weight:
                        type: integer
                      auto-decrement:
                        type: boolean
                      name:
                        type: string
                withAssemblyRateLimit:
                  type: array
                  items:
                    type: object
                    properties:
                      maxRequest:
                        type: integer
                      interval:
                        type: string
                      cache-only:
                        type: boolean
                      is-client:
                        type: boolean
                      use-api-name:
                        type: boolean
                      use-app-id:
                        type: boolean
                      use-client-id:
                        type: boolean
                      dynamic-value:
                        type: integer
                      weight:
                        type: integer
                      name:
                        type: string
                withAssemblyQuotaLimit:
                  type: array
                  items:
                    type: object
                    properties:
                      maxRequest:
                        type: integer
                      interval:
                        type: string
                      hard-limit:
                        type: boolean
                      cache-only:
                        type: boolean
                      is-client:
                        type: boolean
                      use-api-name:
                        type: boolean
                      use-app-id:
                        type: boolean
                      use-client-id:
                        type: boolean
                      dynamic-value:
                        type: integer
                      weight:
                        type: integer
                      name:
                        type: string
                apis:
                  type: array
                  items:
                    type: object
                    properties:
                      $ref:
                        type: string
                      operations:
                        type: array
                        items:
                          type: object
                          required:
                            - path
                            - method
                          properties:
                            operationId:
                              type: string
                            path:
                              type: string
                            method:
                              type: string
                            withQuota:
                              type: array
                              items:
                                oneOf:
                                  - type: object
                                    required:
                                      - unlimited
                                    additionalProperties: false
                                    properties:
                                      unlimited:
                                        type: object
                                        additionalProperties: false
                                        properties: {}
                                  - type: object
                                    required:
                                      - name
                                      - maxRequest
                                      - interval
                                    additionalProperties: false
                                    properties:
                                      name:
                                        type: string
                                      onLimitReach:
                                        type: string
                                        enum:
                                          - block
                                          - allow
                                      maxRequest:
                                        type: integer
                                      interval:
                                        type: string
      required:
        - kind
        - apiVersion
        - metadata
        - spec
    StagedPolicySequence:
      description: >-
        The policy sequence related information is captured in the message
        policy sequence
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        apiVersion:
          type: string
          default: api.ibm.com/v1
        kind:
          enum:
            - StagedPolicySequence
          type: string
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          required:
            - routing
          properties:
            transport:
              $ref: '#/components/schemas/ReferenceList'
            security:
              $ref: '#/components/schemas/ReferenceList'
            monitoring:
              $ref: '#/components/schemas/ReferenceList'
            routing:
              $ref: '#/components/schemas/ReferenceList'
            req-processing:
              $ref: '#/components/schemas/ReferenceList'
            res-processing:
              $ref: '#/components/schemas/ReferenceList'
            error-handling:
              $ref: '#/components/schemas/ReferenceList'
    Scope:
      description: The message identifies the scope
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - Scope
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          required:
            - policy-sequence
            - resources
          additionalProperties: false
          properties:
            policy-sequence:
              $ref: '#/components/schemas/ReferenceList'
            resources:
              description: Multiple instances of resources can be given
              type: array
              items:
                description: Multiple instances of methods for each resource can be given
                type: object
                required:
                  - methods
                  - path
                additionalProperties: false
                properties:
                  methods:
                    type: array
                    minItems: 1
                    items:
                      type: string
                      enum:
                        - get
                        - post
                        - put
                        - delete
                        - patch
                        - head
                        - keep
                  path:
                    type: string
    ValidateAPISpecification:
      description: >-
        The validate API Specification related information is captured in the
        message validateAPISpecification.
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - ValidateAPISpecification
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          oneOf:
            - type: object
              additionalProperties: false
              properties:
                input:
                  type: string
                  enum:
                    - request
                validate:
                  type: object
                  additionalProperties: false
                  properties:
                    request:
                      type: array
                      items:
                        oneOf:
                          - type: object
                            additionalProperties: false
                            properties:
                              schema:
                                type: object
                                required:
                                  - validate
                                additionalProperties: false
                                properties:
                                  validate:
                                    type: boolean
                          - type: object
                            additionalProperties: false
                            properties:
                              query:
                                type: boolean
                          - type: object
                            additionalProperties: false
                            properties:
                              path:
                                type: boolean
                          - type: object
                            additionalProperties: false
                            properties:
                              header:
                                type: boolean
                          - type: object
                            additionalProperties: false
                            properties:
                              cookie:
                                type: boolean
                          - type: object
                            additionalProperties: false
                            properties:
                              contentType:
                                type: boolean
                extensions:
                  type: object
                  properties:
                    webm-gateway:
                      type: object
                      additionalProperties: false
                      properties:
                        apiVersion:
                          type: string
                        spec:
                          type: object
                          additionalProperties: false
                          properties:
                            validate:
                              type: array
                              items:
                                oneOf:
                                  - type: object
                                    additionalProperties: false
                                    properties:
                                      custom-headers:
                                        type: object
                                        additionalProperties: false
                                        properties:
                                          condition:
                                            type: string
                                  - type: object
                                    additionalProperties: false
                                    properties:
                                      schema:
                                        type: object
                                        additionalProperties: false
                                        properties:
                                          feature:
                                            type: array
                                            items:
                                              type: object
                                              additionalProperties: false
                                              properties:
                                                name:
                                                  type: string
                                                value:
                                                  type: boolean
            - type: object
              additionalProperties: false
              properties:
                input:
                  type: string
                  enum:
                    - response
                validate:
                  type: object
                  additionalProperties: false
                  properties:
                    response:
                      type: array
                      items:
                        oneOf:
                          - type: object
                            additionalProperties: false
                            properties:
                              schema:
                                type: object
                                required:
                                  - validate
                                additionalProperties: false
                                properties:
                                  validate:
                                    type: boolean
                          - type: object
                            additionalProperties: false
                            properties:
                              header:
                                type: boolean
                          - type: object
                            additionalProperties: false
                            properties:
                              contentType:
                                type: boolean
                extensions:
                  type: object
                  properties:
                    webm-gateway:
                      type: object
                      additionalProperties: false
                      properties:
                        apiVersion:
                          type: string
                        spec:
                          type: object
                          additionalProperties: false
                          properties:
                            validate:
                              type: array
                              items:
                                type: object
                                additionalProperties: false
                                properties:
                                  custom-headers:
                                    type: object
                                    additionalProperties: false
                                    properties:
                                      condition:
                                        type: string
            - type: object
              additionalProperties: false
              properties:
                input:
                  type: string
                  enum:
                    - message
                validate:
                  oneOf:
                    - type: object
                      required:
                        - openApiSchemaRef
                      additionalProperties: false
                      properties:
                        openApiSchemaRef:
                          type: object
                          additionalProperties: false
                          properties:
                            schemaReference:
                              type: string
                            failureStatusCode:
                              type: string
                            failureStatusMessage:
                              type: string
                    - type: object
                      required:
                        - file
                      additionalProperties: false
                      properties:
                        file:
                          type: object
                          required:
                            - $path
                            - failureStatusCode
                          additionalProperties: false
                          properties:
                            $path:
                              type: string
                            failureStatusCode:
                              type: string
                            failureStatusMessage:
                              type: string
    Project:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      properties:
        apiVersion:
          type: string
          default: api.ibm.com/v1
        kind:
          enum:
            - Project
          type: string
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          properties:
            api:
              $ref: '#/components/schemas/ReferenceList'
          type: object
    UriSchemes:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - URISchemes
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          required:
            - uriSchemes
          additionalProperties: false
          properties:
            uriSchemes:
              description: Multiple instance of protocol can be given
              type: array
              minItems: 1
              items:
                type: string
                enum:
                  - http
                  - https
    Telemetry:
      description: The Telemetry information is captured
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - Telemetry
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            attributes:
              type: object
              additionalProperties:
                type: string
            verbosity:
              type: array
              minItems: 1
              items:
                type: object
                additionalProperties: false
                properties:
                  level:
                    type: string
                  onSuccessTrimTo:
                    type: string
                  inboundLevel:
                    type: string
                    enum:
                      - basic
                      - none
                      - normal
                      - detailed
                  outboundLevel:
                    type: string
                    enum:
                      - basic
                      - none
                      - normal
                      - detailed
                  scope:
                    type: object
                    properties:
                      $ref:
                        description: >-
                          Field 'ref' with JSON name '$ref' accepts the value of
                          either 'ref' or '$ref' from the YAML file.

                          If both 'ref' and '$ref' are specified, the value of
                          '$ref' takes priority.
                        type: string
    Properties:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - Properties
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          required:
            - values
          additionalProperties: false
          properties:
            values:
              type: object
              additionalProperties:
                type: string
    LoadBalancer:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - LoadBalancer
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            input:
              type: string
            output:
              type: string
            roundRobinHttp:
              type: object
              additionalProperties: false
              properties:
                verb:
                  type: string
                endpoints:
                  type: array
                  minItems: 1
                  items:
                    type: object
                    required:
                      - endpoint
                    additionalProperties: false
                    properties:
                      suspendTimeout:
                        type: integer
                      endpoint:
                        type: object
                        additionalProperties: false
                        properties:
                          name:
                            type: string
                          tlsClientProfile:
                            type: string
                          url:
                            type: string
                          urlType:
                            type: string
                          version:
                            type: string
                          timeout:
                            type: integer
                          compression:
                            type: boolean
                          chunkedUploads:
                            type: boolean
                          persistentConnection:
                            type: boolean
            extensions:
              type: object
              properties:
                webm-gateway:
                  type: object
                  additionalProperties: false
                  properties:
                    apiVersion:
                      type: string
                    spec:
                      type: object
                      additionalProperties: false
                      properties:
                        endpoints:
                          type: array
                          items:
                            type: object
                            additionalProperties: false
                            properties:
                              name:
                                type: string
                              connectionTimeout:
                                type: integer
                              sslConfig:
                                type: object
                                additionalProperties: false
                                properties:
                                  keyStoreAlias:
                                    type: string
                                  keyAlias:
                                    type: string
                                  trustStoreAlias:
                                    type: string
                              serviceRegistryParameters:
                                type: array
                                items:
                                  type: object
                                  additionalProperties: false
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
    SetAuthorization:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - SetAuthorization
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          oneOf:
            - type: object
              required:
                - basic
              additionalProperties: false
              properties:
                basic:
                  type: object
                  required:
                    - static
                  additionalProperties: false
                  properties:
                    static:
                      type: object
                      required:
                        - username
                        - password
                      additionalProperties: false
                      properties:
                        username:
                          type: string
                        password:
                          type: string
            - type: object
              required:
                - basic
              additionalProperties: false
              properties:
                basic:
                  type: object
                  required:
                    - useIncoming
                  additionalProperties: false
                  properties:
                    useIncoming:
                      type: object
                      additionalProperties: false
                      properties: {}
            - type: object
              required:
                - oAuth2
              additionalProperties: false
              properties:
                oAuth2:
                  type: object
                  required:
                    - token
                  additionalProperties: false
                  properties:
                    token:
                      type: string
            - type: object
              required:
                - oAuth2
              additionalProperties: false
              properties:
                oAuth2:
                  type: object
                  required:
                    - useIncoming
                  additionalProperties: false
                  properties:
                    useIncoming:
                      type: object
                      additionalProperties: false
                      properties: {}
            - type: object
              required:
                - oAuth2
              additionalProperties: false
              properties:
                oAuth2:
                  type: object
                  required:
                    - getNewToken
                  additionalProperties: false
                  properties:
                    getNewToken:
                      type: object
                      required:
                        - clientId
                        - clientSecret
                      properties:
                        serverAlias:
                          type: string
                        clientId:
                          type: string
                        clientSecret:
                          type: string
    Invoke:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - Invoke
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            input:
              type: string
            output:
              type: string
            cache:
              type: object
              additionalProperties: false
              properties:
                expire:
                  type: object
                  additionalProperties: false
                  properties:
                    static:
                      type: object
                      additionalProperties: false
                      properties:
                        seconds:
                          type: integer
                scope:
                  type: object
                  additionalProperties: false
                  properties:
                    narrowScope:
                      type: object
                      additionalProperties: false
                      properties: {}
            endpoint:
              type: object
              additionalProperties:
                type: object
                additionalProperties: false
                properties:
                  verb:
                    type: string
                  status_exception:
                    type: object
                    additionalProperties: false
                    properties:
                      pattern:
                        type: integer
                  target:
                    type: object
                    additionalProperties: false
                    properties:
                      tlsClientProfile:
                        type: string
                      url:
                        type: string
                      urlType:
                        type: string
                      version:
                        type: string
                      timeout:
                        type: integer
                      compression:
                        type: boolean
                      chunkedUploads:
                        type: boolean
                      persistentConnection:
                        type: boolean
            extensions:
              type: object
              additionalProperties: false
              properties:
                webm-gateway:
                  type: object
                  additionalProperties: false
                  properties:
                    apiVersion:
                      type: string
                    spec:
                      type: object
                      additionalProperties: false
                      properties:
                        endpoint:
                          type: object
                          additionalProperties:
                            type: object
                            additionalProperties: false
                            properties:
                              target:
                                type: object
                                additionalProperties: false
                                properties:
                                  connectionTimeout:
                                    type: integer
                              sslConfig:
                                type: object
                                additionalProperties: false
                                properties:
                                  keyStoreAlias:
                                    type: string
                                  keyAlias:
                                    type: string
                                  trustStoreAlias:
                                    type: string
                              serviceRegistryParameters:
                                type: array
                                items:
                                  type: object
                                  additionalProperties: false
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
    GlobalPolicy:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - GlobalPolicy
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          required:
            - policy-sequence
          additionalProperties: false
          properties:
            filter-api-type:
              type: array
              minItems: 1
              items:
                type: string
            filter-http-methods:
              type: array
              minItems: 1
              items:
                type: string
                enum:
                  - GET
                  - POST
                  - PUT
                  - DELETE
                  - PATCH
                  - HEAD
            filter-attributes:
              type: string
            policy-sequence:
              $ref: '#/components/schemas/ReferenceList'
    InboundBulkHead:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - InboundBulkHead
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            maxConcurrentCalls:
              type: integer
            enableBulkheadForCallbacks:
              type: object
              additionalProperties: false
              properties:
                maxConcurrentCallbacks:
                  type: integer
            retryAfterResponseHeader:
              type: object
              additionalProperties: false
              properties:
                retryAfterValue:
                  type: integer
    SetMediaType:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - SetMediaType
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            defaultAcceptHeader:
              type: string
            defaultContentType:
              type: string
    InboundMessaging:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - InboundMessaging
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            alias:
              type: string
            source:
              type: array
              items:
                type: object
                additionalProperties: false
                properties:
                  name:
                    type: string
                  type:
                    type: string
                    enum:
                      - QUEUE
                      - TOPIC
                  selector:
                    type: array
                    items:
                      type: string
                  resource:
                    type: string
                  httpMethod:
                    type: string
                    enum:
                      - GET
                      - POST
                      - PUT
                      - DELETE
                  contentType:
                    type: string
    IAM:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - IAM
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            accessControl:
              type: array
              items:
                type: array
                items:
                  oneOf:
                    - type: object
                      additionalProperties: false
                      properties:
                        httpBasic:
                          type: object
                          additionalProperties: false
                          properties:
                            applicationSecurity:
                              type: object
                              additionalProperties: false
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - authorize
                                    - identify
                                    - authenticate
                            credentialLocation:
                              type: object
                              properties:
                                httpHeader:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                            credentialRegistry:
                              type: array
                              items:
                                type: string
                            userGroupAuthorization:
                              type: object
                              additionalProperties: false
                              properties:
                                requiredGroups:
                                  type: array
                                  items:
                                    type: string
                    - type: object
                      additionalProperties: false
                      properties:
                        apiKey:
                          type: object
                          additionalProperties: false
                          properties:
                            applicationSecurity:
                              type: object
                              additionalProperties: false
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - authorize
                                    - identify
                                    - authenticate
                            credentialLocation:
                              type: object
                              properties:
                                httpHeader:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                    - type: object
                      additionalProperties: false
                      properties:
                        oauth:
                          type: object
                          additionalProperties: false
                          properties:
                            applicationSecurity:
                              type: object
                              additionalProperties: false
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - authorize
                                    - identify
                                    - authenticate
                            credentialLocation:
                              type: object
                              properties:
                                httpHeader:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                            providers:
                              type: array
                              items:
                                type: string
                            introspectionCredentials:
                              type: object
                              additionalProperties: false
                              properties:
                                idHeader:
                                  type: string
                                secretheader:
                                  type: string
                            audClaim:
                              type: array
                              items:
                                type: string
                            requiredScopes:
                              type: array
                              items:
                                type: object
                                additionalProperties: false
                                properties:
                                  provider:
                                    type: string
                                  scopes:
                                    type: array
                                    items:
                                      type: string
                    - type: object
                      additionalProperties: false
                      properties:
                        jwt:
                          type: object
                          additionalProperties: false
                          properties:
                            applicationSecurity:
                              type: object
                              additionalProperties: false
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - authorize
                                    - identify
                                    - authenticate
                            credentialLocation:
                              type: object
                              properties:
                                httpHeader:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                            providers:
                              type: array
                              items:
                                type: string
                            requiredClaims:
                              type: array
                              items:
                                type: object
                                additionalProperties: false
                                properties:
                                  provider:
                                    type: string
                                  claims:
                                    type: array
                                    items:
                                      type: object
                                      additionalProperties: false
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                    - type: object
                      additionalProperties: false
                      properties:
                        hostname:
                          type: object
                          additionalProperties: false
                          properties:
                            applicationSecurity:
                              type: object
                              additionalProperties: false
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - authorize
                                    - identify
                                    - authenticate
                    - type: object
                      additionalProperties: false
                      properties:
                        ipAddress:
                          type: object
                          additionalProperties: false
                          properties:
                            applicationSecurity:
                              type: object
                              additionalProperties: false
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - authorize
                                    - identify
                                    - authenticate
                    - type: object
                      additionalProperties: false
                      properties:
                        certificate:
                          type: object
                          additionalProperties: false
                          properties:
                            applicationSecurity:
                              type: object
                              additionalProperties: false
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - authorize
                                    - identify
                                    - authenticate
                            credentialLocation:
                              type: object
                              properties:
                                httpHeader:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                    - type: object
                      additionalProperties: false
                      properties:
                        payloadElement:
                          type: object
                          additionalProperties: false
                          properties:
                            name:
                              type: string
                    - type: object
                      additionalProperties: false
                      properties:
                        httpHeaders:
                          type: object
                          additionalProperties: false
                          properties:
                            applicationSecurity:
                              type: object
                              additionalProperties: false
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - authorize
                                    - identify
                                    - authenticate
                            credentialLocation:
                              type: array
                              items:
                                type: string
            extensions:
              type: object
              properties:
                lw-gateway:
                  type: object
                  additionalProperties: false
                  properties:
                    apiVersion:
                      type: string
                    spec:
                      type: object
                      additionalProperties: false
                      properties:
                        securityNamespace:
                          type: string
                        accessControl:
                          type: object
                          additionalProperties: false
                          properties:
                            payloadElement:
                              type: array
                              items:
                                type: object
                                additionalProperties: false
                                properties:
                                  name:
                                    type: string
                                  applicationSecurity:
                                    type: object
                                    additionalProperties: false
                                    properties:
                                      mode:
                                        type: string
                                        enum:
                                          - authorize
                                          - identify
                                          - authenticate
                                  credentialLocation:
                                    oneOf:
                                      - type: object
                                        additionalProperties: false
                                        properties:
                                          regex:
                                            type: string
                                      - type: object
                                        additionalProperties: false
                                        properties:
                                          jsonata:
                                            type: string
                webm-gateway:
                  type: object
                  additionalProperties: false
                  properties:
                    apiVersion:
                      type: string
                    spec:
                      type: object
                      additionalProperties: false
                      properties:
                        authenticationMode:
                          type: string
                          enum:
                            - ANY
                            - ALL
                        allowAnonymous:
                          type: object
                          additionalProperties: false
                          properties: {}
                        triggerPolicyViolation:
                          type: boolean
                        accessControl:
                          type: object
                          additionalProperties: false
                          properties:
                            kerberos:
                              type: object
                              additionalProperties: false
                              properties:
                                applicationSecurity:
                                  type: object
                                  additionalProperties: false
                                  properties:
                                    mode:
                                      type: string
                                      enum:
                                        - authorize
                                        - identify
                                        - authenticate
                                servicePrincipleName:
                                  type: string
                                servicePrinciplePassword:
                                  type: string
                            openIdConnect:
                              type: object
                              additionalProperties: false
                              properties:
                                applicationSecurity:
                                  type: object
                                  additionalProperties: false
                                  properties:
                                    mode:
                                      type: string
                                      enum:
                                        - authorize
                                        - identify
                                        - authenticate
                            payloadElement:
                              type: object
                              additionalProperties: false
                              properties:
                                applicationSecurity:
                                  type: object
                                  additionalProperties: false
                                  properties:
                                    mode:
                                      type: string
                                      enum:
                                        - authorize
                                        - identify
                                        - authenticate
                                payLoadIdentifier:
                                  type: array
                                  items:
                                    oneOf:
                                      - type: object
                                        additionalProperties: false
                                        properties:
                                          jPath:
                                            type: string
                                      - type: object
                                        additionalProperties: false
                                        properties:
                                          xpath:
                                            type: string
                                          namespaces:
                                            type: array
                                            items:
                                              type: object
                                              additionalProperties: false
                                              properties:
                                                prefix:
                                                  type: string
                                                URI:
                                                  type: string
                                      - type: object
                                        additionalProperties: false
                                        properties:
                                          regex:
                                            type: string
    AuthorizeUser:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - AuthorizeUser
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              type: boolean
            users:
              type: array
              items:
                type: string
            groups:
              type: array
              items:
                type: string
            teams:
              type: array
              items:
                type: string
    SetContextVariable:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - SetContextVariable
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              description: Can be enabled or disabled
              type: boolean
            condition:
              type: string
            namespaces:
              $ref: '#/components/schemas/Namespaces'
            variable:
              description: Multiple instances of variable can be given
              type: array
              items:
                description: The message specified the information related to Variable
                additionalProperties: false
                type: object
                properties:
                  name:
                    type: string
                  value:
                    type: string
    WebMethodsISService:
      description: >-
        The Context Variablemrelated information is captured in the message
        WebMethodsISService.
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - WebMethodsISService
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              type: boolean
            condition:
              type: string
            alias:
              type: string
            services:
              description: Multiple instances of Service can be given
              type: array
              items:
                description: The message specified the information related to Service
                type: object
                additionalProperties: false
                properties:
                  complyToISSpec:
                    type: boolean
                  name:
                    type: string
                  runAs:
                    type: string
                    enum:
                      - developer
                      - administrator
                      - default
                      - replicator
    LogInvocation:
      description: >-
        The Log Invocation related information is captured in the message
        LogInvocation
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - Log
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              type: boolean
            logRequestHeaders:
              type: boolean
              default: false
            logResponseHeaders:
              type: boolean
              default: false
            logRequestPayload:
              type: boolean
              default: false
            logResponsePayload:
              type: boolean
              default: false
            compressPayloads:
              type: boolean
              default: false
            logGenerationFrequency:
              type: string
              enum:
                - always
                - onfailure
                - onsuccess
            destination:
              $ref: '#/components/schemas/DestinationsList'
    MonitorTraffic:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - MonitorTraffic
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              type: boolean
            condition:
              description: Single instance of condition can be given
              type: string
            applications:
              description: Multiple instance of application can be given
              type: array
              items:
                type: string
            alert-configuration:
              description: >-
                Field 'alert_configuration' with JSON name 'alert-configuration'
                accepts the value of either 'alert_configuration' or
                'alert-configuration' from the YAML file.

                If both 'alert_configuration' and 'alert-configuration' are
                specified, the value of 'alert-configuration' takes priority.

                Multiple instances of alert configuration can be given with JSON
                name "alert-configuration".
              type: object
              additionalProperties: false
              properties:
                frequency:
                  type: string
                  enum:
                    - always
                    - once
                interval:
                  type: string
                message:
                  type: string
            notify-on-breach:
              $ref: '#/components/schemas/DestinationsList'
    DestinationsList:
      type: array
      items:
        oneOf:
          - type: string
          - type: object
            additionalProperties: false
            properties:
              email:
                type: array
                items:
                  type: string
                  format: email
          - type: object
            additionalProperties: false
            properties:
              log-file:
                type: object
                additionalProperties: false
                properties:
                  level:
                    type: string
                    enum:
                      - info
                      - debug
                      - warn
                      - error
    ServiceResultCache:
      description: >-
        The Service Result Cache related information is captured in the message
        ServiceResultCache
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - CacheServiceResult
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            condition:
              description: Single instance of condition can be given
              type: string
            enabled:
              description: Can be enabled or disabled
              type: boolean
            maxSize:
              description: single instance pf maximum size can be given
              type: string
            ttl:
              description: Single instance of ttl can be given
              type: string
    OutboundAlias:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - OutboundAlias
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          required:
            - alias
          additionalProperties: false
          properties:
            alias:
              type: string
    OutboundAnonymous:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - OutboundAnonymous
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: true
    XslSchema:
      type: array
      items:
        type: object
        additionalProperties: false
        properties:
          $path:
            type: string
          content:
            type: string
          feature:
            type: array
            items:
              type: object
              additionalProperties: false
              properties:
                name:
                  type: string
                value:
                  type: string
    RequestTransformationsSchema:
      description: Single instance of transformation can be given
      type: object
      additionalProperties: false
      properties:
        set:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
              value:
                type: string
        remove:
          type: array
          items:
            type: string
        setPayload:
          type: object
          additionalProperties: false
          properties:
            content-types:
              type: array
              items:
                type: object
                additionalProperties:
                  type: string
            default-ContentType:
              type: string
            xsl:
              $ref: '#/components/schemas/XslSchema'
    ResponseTransformationsSchema:
      type: object
      additionalProperties: false
      properties:
        abortAPIExecutionForFailure:
          type: boolean
        copyEntireResponse:
          type: boolean
        set:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              key:
                type: string
              value:
                type: string
    InvokeRequestProcessingSchema:
      description: >-
        Field 'request_processing' with JSON name 'request-processing' accepts
        the value of either 'request_processing' or 'request-processing' from
        the YAML file.

        If both 'request_processing' and 'request-processing' are specified, the
        value of 'request-processing' takes priority.

        Single instances of request processing can be given with JSON name
        "request-processing".
      type: object
      additionalProperties: false
      required:
        - transformations
      properties:
        transformations:
          $ref: '#/components/schemas/RequestTransformationsSchema'
    InvokeResponseProcessingSchema:
      description: >-
        Field 'response_processing' with JSON name 'response-processing' accepts
        the value of either 'response_processing' or 'response-processing' from
        the YAML file.

        If both 'response_processing' and 'response-processing' are specified,
        the value of 'response-processing' takes priority.

        Single instances of response processing can be given with JSON name
        "response-processing".
      type: object
      additionalProperties: false
      required:
        - transformations
      properties:
        transformations:
          $ref: '#/components/schemas/ResponseTransformationsSchema'
    HTTPInvoke:
      description: >-
        The HTTP Invoke related information is captured in the message
        HTTPInvoke
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - HTTPInvoke
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              description: Can be enabled or disabled
              type: boolean
            condition:
              type: string
            endpoint:
              $ref: '#/components/schemas/Reference'
            namespaces:
              $ref: '#/components/schemas/Namespaces'
            request_processing:
              $ref: '#/components/schemas/InvokeRequestProcessingSchema'
            response_processing:
              $ref: '#/components/schemas/InvokeResponseProcessingSchema'
    InvokeMessagingExtension:
      description: >-
        The Messaging Extension related information is captured in the message
        MessagingExtension.
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - InvokeMessagingExtension
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              description: Can be enabled or disabled
              type: boolean
            condition:
              description: Single instance of conidition can be given
              type: string
            messageConfig:
              $ref: '#/components/schemas/Reference'
            namespaces:
              $ref: '#/components/schemas/Namespaces'
            request_processing:
              $ref: '#/components/schemas/InvokeRequestProcessingSchema'
            response_processing:
              $ref: '#/components/schemas/InvokeResponseProcessingSchema'
    DataMasking:
      description: >-
        The Data Masking related information is captured in the message Data
        masking
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - DataMasking
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            applyForPayload:
              description: Apply for pay load can be enabled or disabled
              type: boolean
            applyForTransactionLogging:
              description: Apply for transaction logging can be enabled or disabled
              type: boolean
            enabled:
              description: Can be enabled or disabled
              type: boolean
            matchApplications:
              description: Multiple instance of match applications can be given
              type: array
              items:
                type: string
            transformations:
              description: single instance of transformation can be given
              type: object
              additionalProperties: false
              properties:
                remove:
                  type: array
                  items:
                    type: object
                    additionalProperties: false
                    properties:
                      jpath:
                        type: string
                      regex:
                        type: string
                      xpath:
                        type: string
                setMask:
                  type: array
                  items:
                    type: object
                    additionalProperties: false
                    properties:
                      jPath:
                        type: string
                      maskValue:
                        type: string
                      namespaces:
                        $ref: '#/components/schemas/Namespaces'
                      regex:
                        type: string
                      xPath:
                        type: string
    ReqeuestProcessingTransformationsSchema:
      allOf:
        - $ref: '#/components/schemas/RequestTransformationsSchema'
        - type: object
          additionalProperties: false
          properties:
            namespaces:
              $ref: '#/components/schemas/Namespaces'
            setMethod:
              type: string
            webMethodsISService:
              $ref: '#/components/schemas/ReferenceList'
    RequestProcessing:
      description: >-
        The Request Processing related information is captured in the message
        RequestProcessing
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - TransformRequest
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              description: Can be enabled or disabled
              type: boolean
            condition:
              description: Single instance of condition can be given
              type: string
            transformations:
              $ref: '#/components/schemas/ReqeuestProcessingTransformationsSchema'
    ResponseProcessingTransformationsSchema:
      allOf:
        - $ref: '#/components/schemas/RequestTransformationsSchema'
        - type: object
          additionalProperties: false
          properties:
            namespaces:
              $ref: '#/components/schemas/Namespaces'
            setStatus:
              type: object
              additionalProperties: false
              properties:
                code:
                  type: string
                message:
                  type: string
            webMethodsISService:
              $ref: '#/components/schemas/ReferenceList'
    ResponseProcessing:
      description: >-
        The Response Processing related information is captured in the message
        RequestProcessing
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - TransformResponse
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              description: Can be enabled or disabled
              type: boolean
            condition:
              description: Single instance of condition can be given
              type: string
            transformations:
              $ref: '#/components/schemas/ResponseProcessingTransformationsSchema'
    Route:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - Route
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          oneOf:
            - type: object
              description: Routing info for conditional routing
              additionalProperties: false
              properties:
                default-endpoint:
                  $ref: '#/components/schemas/Reference'
                conditional-endpoints:
                  type: array
                  items:
                    type: object
                    additionalProperties: false
                    properties:
                      condition:
                        type: string
                      endpoint:
                        $ref: '#/components/schemas/Reference'
            - type: object
              description: Routing info for content based routing
              additionalProperties: false
              properties:
                default-endpoint:
                  $ref: '#/components/schemas/Reference'
                content-based-endpoints:
                  type: array
                  items:
                    type: object
                    additionalProperties: false
                    properties:
                      payloadIdentifier:
                        oneOf:
                          - type: object
                            additionalProperties: false
                            properties:
                              jPath:
                                type: string
                          - type: object
                            additionalProperties: false
                            properties:
                              xpath:
                                type: string
                              namespaces:
                                type: array
                                items:
                                  type: object
                                  additionalProperties: false
                                  properties:
                                    prefix:
                                      type: string
                                    URI:
                                      type: string
                          - type: object
                            additionalProperties: false
                            properties:
                              regex:
                                type: string
                      endpoint:
                        $ref: '#/components/schemas/Reference'
            - type: object
              description: Routing info for dynamic routing
              additionalProperties: false
              properties:
                default-endpoint:
                  $ref: '#/components/schemas/Reference'
                dynamic-endpoints:
                  type: object
                  additionalProperties: false
                  properties:
                    useHeader:
                      type: object
                      additionalProperties: false
                      properties:
                        name:
                          type: string
                        $ref:
                          type: string
                    useContext:
                      $ref: '#/components/schemas/Reference'
            - type: object
              description: Routing info for mock routing
              additionalProperties: false
              properties:
                mock-endpoint:
                  type: object
                  additionalProperties: false
                  properties:
                    enabled:
                      type: boolean
                    $ref:
                      type: string
    MessageConfig:
      description: >-
        The MessageConfig related information is captured in the message
        MessageConfig.
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - MessageConfig
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            connectionAlias:
              type: string
            destination:
              type: object
              additionalProperties: false
              properties:
                name:
                  type: string
                type:
                  type: string
                  enum:
                    - queue
                    - topic
            replyTo:
              type: object
              additionalProperties: false
              properties:
                name:
                  type: string
                type:
                  type: string
                  enum:
                    - queue
                    - topic
            ttl:
              type: string
            timeToWait:
              type: string
            deliveryMode:
              type: string
              enum:
                - persistent
                - non_persistent
            property:
              type: array
              items:
                description: message properties includes key and value
                type: object
                additionalProperties: false
                properties:
                  key:
                    type: string
                  value:
                    type: string
    HTTPEndpoint:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - HTTPEndpoint
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            url:
              type: string
            method:
              type: string
            connectTimeout:
              maximum: 4294967295
              minimum: 0
              type: integer
            readTimeout:
              maximum: 4294967295
              minimum: 0
              type: integer
            serviceRegistryParameters:
              type: array
              items:
                description: >-
                  The message specified the information related to SSL
                  Configuration
                type: object
                additionalProperties: false
                properties:
                  name:
                    type: string
                  value:
                    type: string
            sslConfig:
              type: object
              additionalProperties: false
              properties:
                keyAlias:
                  type: string
                keyStoreAlias:
                  type: string
                trustStoreAlias:
                  type: string
    MockEndpoint:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - MockEndpoint
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            config:
              type: array
              minItems: 1
              items:
                type: object
                additionalProperties: false
                required:
                  - condition
                  - response
                properties:
                  condition:
                    type: string
                  response:
                    $ref: '#/components/schemas/Reference'
    MockResponse:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - MockResponse
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            code:
              type: integer
            data:
              type: array
              minItems: 1
              items:
                type: object
                additionalProperties: false
                properties:
                  content:
                    type: string
                  contentType:
                    type: string
            headers:
              type: array
              items:
                type: object
                additionalProperties: false
                properties:
                  key:
                    type: string
                  value:
                    type: string
    ErrorProcessingTransformationsSchema:
      description: Single instance of transformation can be given
      type: object
      additionalProperties: false
      properties:
        set:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
              value:
                type: string
        remove:
          type: array
          items:
            type: string
        setPayload:
          type: object
          additionalProperties: false
          properties:
            content-types:
              type: array
              items:
                type: object
                additionalProperties:
                  type: string
            default-content-type:
              type: string
            xsl:
              $ref: '#/components/schemas/XslSchema'
        namespaces:
          $ref: '#/components/schemas/Namespaces'
        sendNativeError:
          type: boolean
    ErrorProcessing:
      description: >-
        The Conditional Error Handling related information is captured in the
        message ConditionalErrorProcessing.
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - ErrorProcessing
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            enabled:
              description: Can be enabled or disabled
              type: boolean
            condition:
              description: Single instance of condition can be given
              type: string
            pre-processing:
              description: "Field 'pre_processing' with JSON name 'pre-processing' accepts the value of either 'pre_processing' or 'pre-processing' from the YAML file.\r\nIf both 'pre_processing' and 'pre-processing' are specified, the value of 'pre-processing' takes priority.\r\nMultiple instances of pre processing can be given with JSON name \"pre-processing\"."
              type: object
              additionalProperties: false
              properties:
                webMethodsISService:
                  $ref: '#/components/schemas/ReferenceList'
                xsl:
                  $ref: '#/components/schemas/XslSchema'
            transformations:
              $ref: '#/components/schemas/ErrorProcessingTransformationsSchema'
            post-processing:
              description: "Field 'post_processing' with JSON name 'post-processing' accepts the value of either 'post_processing' or 'post-processing' from the YAML file.\r\nIf both 'post_processing' and 'post-processing' are specified, the value of 'post-processing' takes priority.\r\nMultiple instances of post processing can be given with JSON name 'post-processing\"."
              type: object
              additionalProperties: false
              properties:
                webMethodsISService:
                  $ref: '#/components/schemas/ReferenceList'
                xsl:
                  $ref: '#/components/schemas/XslSchema'
    Set:
      description: >-
        The Throttling Policy related information is captured in the message
        ThrottlingPolicy
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - Set
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          required:
            - messageHeader
          properties:
            messageHeader:
              type: object
              properties:
                action:
                  type: string
                  enum:
                    - combine
                    - set
                    - add
                valueType:
                  type: string
                headerName:
                  type: string
                value:
                  type: string
    RateLimitDefinition:
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - RateLimitDef
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          properties:
            consumerSpecific:
              type: boolean
            dynamicValue:
              type: string
            max:
              type: integer
            intervalLen:
              type: integer
            intervalUnit:
              type: string
              enum:
                - second
                - minute
                - hour
                - day
                - week
                - calendarweek
                - calendarmonth
            extensions:
              type: object
              properties:
                lw-gateway:
                  type: object
                  additionalProperties: false
                  properties:
                    weightExpr:
                      type: string
                    dynamicValue:
                      type: string
    RateLimit:
      description: >-
        The Throttling Policy related information is captured in the message
        ThrottlingPolicy
      type: object
      required:
        - kind
        - apiVersion
        - metadata
        - spec
      additionalProperties: false
      properties:
        kind:
          enum:
            - RateLimit
          type: string
        apiVersion:
          type: string
          default: api.ibm.com/v1
        metadata:
          $ref: '#/components/schemas/Metadata'
        spec:
          type: object
          additionalProperties: false
          properties:
            target:
              type: string
            limits:
              type: array
              minItems: 1
              items:
                type: object
                additionalProperties: false
                required:
                  - limitDef
                properties:
                  limitDef:
                    type: object
                    additionalProperties: false
                    required:
                      - name
                      - definition
                    properties:
                      name:
                        type: string
                      definition:
                        $ref: '#/components/schemas/Reference'
            extensions:
              type: object
              properties:
                webm-gateway:
                  type: object
                  additionalProperties: false
                  properties:
                    apiVersion:
                      type: string
                    spec:
                      type: object
                      additionalProperties: false
                      required:
                        - destination
                      properties:
                        destination:
                          $ref: '#/components/schemas/DestinationsList'
                lwgw-gateway:
                  type: object
                  additionalProperties: false
                  properties:
                    apiVersion:
                      type: string
                    spec:
                      type: object
                      additionalProperties: false
                      properties:
                        limits:
                          type: array
                          minItems: 1
                          items:
                            oneOf:
                              - type: object
                                additionalProperties: false
                                required:
                                  - globalLimit
                                properties:
                                  globalLimit:
                                    type: object
                                    additionalProperties: false
                                    required:
                                      - name
                                      - operation
                                    properties:
                                      name:
                                        type: string
                                      operation:
                                        type: string
                              - type: object
                                additionalProperties: false
                                required:
                                  - planLimit
                                properties:
                                  planLimit:
                                    type: object
                                    additionalProperties: false
                                    required:
                                      - name
                                      - operation
                                    properties:
                                      name:
                                        type: string
                                      operation:
                                        type: string
    KindEnums:
      description: >-
        Defines an enumeration named KindEnums. This enum defines the unique
        kind name which identifies assets
      type: string
      enum:
        - API
        - Scope
        - Project
        - StagedPolicySequence
        - InvokeAWSLambda
        - ValidateAPISpecification
        - CORS
        - Quota
        - Plan
        - Product
        - URISchemes
        - properties
        - Telemetry
        - Properties
        - LoadBalancer
        - SetAuthorization
        - Invoke
        - GlobalPolicy
        - InboundBulkHead
        - SetMediaType
        - InboundMessaging
        - IAM
        - AuthorizeUser
        - SetContextVariable
        - WebMethodsISService
        - Log
        - MonitorTraffic
        - CacheServiceResult
        - OutboundAlias
        - OutboundAnonymous
        - HTTPInvoke
        - InvokeMessagingExtension
        - DataMasking
        - TransformRequest
        - TransformResponse
        - Route
        - MessageConfig
        - HTTPEndpoint
        - MockEndpoint
        - MockResponse
        - ErrorProcessing
        - Set
        - RateLimitDef
        - RateLimit
    AssetDiscriminator:
      oneOf:
        - $ref: '#/components/schemas/AWSLambda'
        - $ref: '#/components/schemas/Api'
        - $ref: '#/components/schemas/CORS'
        - $ref: '#/components/schemas/Product'
        - $ref: '#/components/schemas/Plan'
        - $ref: '#/components/schemas/Quota'
        - $ref: '#/components/schemas/StagedPolicySequence'
        - $ref: '#/components/schemas/Project'
        - $ref: '#/components/schemas/Scope'
        - $ref: '#/components/schemas/ValidateAPISpecification'
        - $ref: '#/components/schemas/UriSchemes'
        - $ref: '#/components/schemas/Telemetry'
        - $ref: '#/components/schemas/Properties'
        - $ref: '#/components/schemas/Invoke'
        - $ref: '#/components/schemas/LoadBalancer'
        - $ref: '#/components/schemas/SetAuthorization'
        - $ref: '#/components/schemas/GlobalPolicy'
        - $ref: '#/components/schemas/InboundBulkHead'
        - $ref: '#/components/schemas/SetMediaType'
        - $ref: '#/components/schemas/InboundMessaging'
        - $ref: '#/components/schemas/AuthorizeUser'
        - $ref: '#/components/schemas/IAM'
        - $ref: '#/components/schemas/SetContextVariable'
        - $ref: '#/components/schemas/WebMethodsISService'
        - $ref: '#/components/schemas/LogInvocation'
        - $ref: '#/components/schemas/MonitorTraffic'
        - $ref: '#/components/schemas/ServiceResultCache'
        - $ref: '#/components/schemas/OutboundAlias'
        - $ref: '#/components/schemas/OutboundAnonymous'
        - $ref: '#/components/schemas/HTTPInvoke'
        - $ref: '#/components/schemas/InvokeMessagingExtension'
        - $ref: '#/components/schemas/DataMasking'
        - $ref: '#/components/schemas/RequestProcessing'
        - $ref: '#/components/schemas/ResponseProcessing'
        - $ref: '#/components/schemas/Route'
        - $ref: '#/components/schemas/MessageConfig'
        - $ref: '#/components/schemas/HTTPEndpoint'
        - $ref: '#/components/schemas/MockEndpoint'
        - $ref: '#/components/schemas/MockResponse'
        - $ref: '#/components/schemas/ErrorProcessing'
        - $ref: '#/components/schemas/RateLimitDefinition'
        - $ref: '#/components/schemas/RateLimit'
        - $ref: '#/components/schemas/Set'
      discriminator:
        propertyName: kind
        mapping:
          AWSLambda: '#/components/schemas/AWSLambda'
          Api: '#/components/schemas/Api'
          CORS: '#/components/schemas/CORS'
          Product: '#/components/schemas/Product'
          Plan: '#/components/schemas/Plan'
          Quota: '#/components/schemas/Quota'
          StagedPolicySequence: '#/components/schemas/StagedPolicySequence'
          Project: '#/components/schemas/Project'
          Scope: '#/components/schemas/Scope'
          ValidateAPISpecification: '#/components/schemas/ValidateAPISpecification'
          UriSchemes: '#/components/schemas/UriSchemes'
          Telemetry: '#/components/schemas/Telemetry'
          Properties: '#/components/schemas/Properties'
          Invoke: '#/components/schemas/Invoke'
          LoadBalancer: '#/components/schemas/LoadBalancer'
          SetAuthorization: '#/components/schemas/SetAuthorization'
          GlobalPolicy: '#/components/schemas/GlobalPolicy'
          InboundBulkHead: '#/components/schemas/InboundBulkHead'
          SetMediaType: '#/components/schemas/SetMediaType'
          InboundMessaging: '#/components/schemas/InboundMessaging'
          AuthorizeUser: '#/components/schemas/AuthorizeUser'
          IAM: '#/components/schemas/IAM'
          SetContextVariable: '#/components/schemas/SetContextVariable'
          WebMethodsISService: '#/components/schemas/WebMethodsISService'
          LogInvocation: '#/components/schemas/LogInvocation'
          MonitorTraffic: '#/components/schemas/MonitorTraffic'
          ServiceResultCache: '#/components/schemas/ServiceResultCache'
          OutboundAlias: '#/components/schemas/OutboundAlias'
          OutboundAnonymous: '#/components/schemas/OutboundAnonymous'
          HTTPInvoke: '#/components/schemas/HTTPInvoke'
          InvokeMessagingExtension: '#/components/schemas/InvokeMessagingExtension'
          DataMasking: '#/components/schemas/DataMasking'
          RequestProcessing: '#/components/schemas/RequestProcessing'
          ResponseProcessing: '#/components/schemas/ResponseProcessing'
          Route: '#/components/schemas/Route'
          MessageConfig: '#/components/schemas/MessageConfig'
          HTTPEndpoint: '#/components/schemas/HTTPEndpoint'
          MockEndpoint: '#/components/schemas/MockEndpoint'
          MockResponse: '#/components/schemas/MockResponse'
          ErrorProcessing: '#/components/schemas/ErrorProcessing'
          RateLimitDefinition: '#/components/schemas/RateLimitDefinition'
          RateLimit: '#/components/schemas/RateLimit'
          Set: '#/components/schemas/Set'
info:
  title: OpenAPI Spec for Studio APIs.
  version: ''
openapi: 3.0.1
paths: null
