Tyk

Tyk Streams APIs API

The Streams APIs API from Tyk — 2 operation(s) for streams apis.

OpenAPI Specification

tyk-streams-apis-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Tyk Dashboard Admin Additional Permissions Streams APIs API
  version: 5.3.0
  description: 'For Tyk On-Premises installations only, the Dashboard Admin API has two endpoints and is used to set up and provision a Tyk Dashboard instance without the command line.


    In order to use the Dashboard Admin API, you''ll need to get the `admin_secret` value from your Tyk Dashboard configurations.


    The secret you set should then be sent along as a header with each Dashboard Admin API Request in order for it to be successful:


    ```

    admin-auth: <your-secret>

    ```'
servers:
- url: http://localhost/
- url: https://localhost/
security:
- ApiKeyAuth: []
tags:
- name: Streams APIs
paths:
  /api/apis/streams:
    post:
      description: "Create a Streams API Definition in Tyk OAS API format.\n Note that the response includes the newly created Tyk Streams API Definition containing the unique identifier for the API (`ID`). You can provide a value for `ID` in the request body, otherwise Tyk will automatically generate a value."
      operationId: createStreamsApi
      parameters:
      - name: Content-Type
        in: header
        required: true
        description: Content type for streams endpoints should be `application/vnd.tyk.streams.oas`
        schema:
          type: string
          enum:
          - application/vnd.tyk.streams.oas
      requestBody:
        content:
          application/json:
            examples:
              StreamsAPIExample:
                $ref: '#/components/examples/streamsExample'
            schema:
              allOf:
              - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json
              - $ref: '#/components/schemas/XTykApiGateway'
              - $ref: '#/components/schemas/XTykStreaming'
      responses:
        '200':
          content:
            application/json:
              example:
                ID: 4c1c0d8fc885401053ddac4e39ef676b
                Message: API created
                Meta: 665597e0b646b300011acb69
                Status: OK
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: API created.
        '400':
          content:
            application/json:
              example:
                Message: Couldn't read body.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Malformed data.
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: Your license does not support adding/ modifying streams API configuration.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Forbidden
        '409':
          content:
            application/json:
              example:
                Message: Found API with the same ID.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Conflict
        '500':
          content:
            application/json:
              example:
                Message: Error while creating API.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Internal server error.
      summary: Create Streams API.
      tags:
      - Streams APIs
  /api/apis/streams/{apiId}:
    delete:
      description: Deleting a Streams API definition will remove the file from the file store. The API definition will not be unloaded and a separate reload request will need to be made to disable the API endpoint.
      operationId: deleteStreamsApi
      parameters:
      - description: ID of the API you want to delete.
        example: 4c1c0d8fc885401053ddac4e39ef676b
        in: path
        name: apiId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
                Message: API deleted.
                Meta: null
                Status: OK
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Deleted successfully.
        '400':
          content:
            application/json:
              example:
                Message: Could not delete the API.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: 'access denied: You do not have permission to access  /api/apis/streams/{apiId}'
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              example:
                Message: Could not retrieve API detail.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: API not found.
      summary: Delete Streams API.
      tags:
      - Streams APIs
    get:
      description: Get a single Streams API definition.
      operationId: getStreamsAPIDetails
      parameters:
      - description: ID of the API you want to fetch.
        example: 4c1c0d8fc885401053ddac4e39ef676b
        in: path
        name: apiId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              examples:
                streamsAPIExample:
                  $ref: '#/components/examples/streamsExample'
              schema:
                allOf:
                - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json
                - $ref: '#/components/schemas/XTykApiGateway'
                - $ref: '#/components/schemas/XTykStreaming'
          description: Fetched API.
        '400':
          content:
            application/json:
              example:
                Message: Could not retrieve API detail.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Bad request or API not found.
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: 'access denied: You do not have permission to access  /api/apis/streams/{apiId}'
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Forbidden
        '500':
          content:
            application/json:
              example:
                Message: Failed to marshal data for API detail.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Internal server error.
      summary: Get Streams API details.
      tags:
      - Streams APIs
    patch:
      description: Update a Tyk Streams API. You can use this endpoint to update the OAS part of your Tyk Streams API definition. This endpoint allows you to configure the Tyk OAS extension based on the query parameters provided (similar to import).
      operationId: patchApiStreams
      parameters:
      - name: Content-Type
        in: header
        required: true
        description: Content type for streams endpoints should be `application/vnd.tyk.streams.oas`
        schema:
          type: string
          enum:
          - application/vnd.tyk.streams.oas
      - description: ID of the API you want to patch.
        example: 4c1c0d8fc885401053ddac4e39ef676b
        in: path
        name: apiId
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/ListenPath'
      - $ref: '#/components/parameters/CustomDomain'
      - $ref: '#/components/parameters/AllowList'
      - $ref: '#/components/parameters/ValidateRequest'
      - $ref: '#/components/parameters/MockResponse'
      - $ref: '#/components/parameters/Authentication'
      requestBody:
        content:
          application/json:
            examples:
              PatchOASExample:
                $ref: '#/components/examples/streamsExample'
            schema:
              oneOf:
              - allOf:
                - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json
                - $ref: '#/components/schemas/XTykApiGateway'
                - $ref: '#/components/schemas/XTykStreaming'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FormDataFile'
        description: The content of the file should be the OpenAPI document in JSON format.
      responses:
        '200':
          content:
            application/json:
              example:
                Message: API updated
                Meta: null
                Status: OK
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Patched API.
        '400':
          content:
            application/json:
              example:
                Message: Invalid `ID` value
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Malformed request.
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: Failed to update org object to DB.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Forbidden.
        '404':
          content:
            application/json:
              example:
                Message: API not found.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: API not found.
      summary: Patch a single Streams API by ID.
      tags:
      - Streams APIs
    put:
      description: Updating an API definition uses the same signature object as a `POST`. It will first ensure that the API ID being updated is the same as in the `PUT` object.<br/> Updating will completely replace the file descriptor and will not change an API definition that has already been loaded. The hot-reload endpoint will need to be called to push the new definition to live.
      operationId: updateStreamsApi
      parameters:
      - name: Content-Type
        in: header
        required: true
        description: Content type for streams endpoints should be `application/vnd.tyk.streams.oas`
        schema:
          type: string
          enum:
          - application/vnd.tyk.streams.oas
      - description: ID of the API you want to update.
        example: 4c1c0d8fc885401053ddac4e39ef676b
        in: path
        name: apiId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            examples:
              StreamsAPIExample:
                $ref: '#/components/examples/streamsExample'
            schema:
              allOf:
              - $ref: https://raw.githubusercontent.com/TykTechnologies/tyk/refs/heads/master/apidef/oas/schema/3.0.json
              - $ref: '#/components/schemas/XTykApiGateway'
              - $ref: '#/components/schemas/XTykStreaming'
      responses:
        '200':
          content:
            application/json:
              example:
                Message: API updated.
                Meta: null
                Status: OK
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Updated API.
        '400':
          content:
            application/json:
              example:
                Message: The payload should contain x-tyk-api-gateway and/or x-tyk-streaming.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Malformed API data.
        '401':
          content:
            application/json:
              example:
                Message: Not authorised
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                Message: Found API with same url.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              example:
                Message: API definition does not exist
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: API not found.
        '500':
          content:
            application/json:
              example:
                Message: Error while creating API.
                Meta: null
                Status: Error
              schema:
                $ref: '#/components/schemas/ApiResponse'
          description: Internal server error.
      summary: Update Streams API.
      tags:
      - Streams APIs
components:
  schemas:
    XTykStreaming:
      properties:
        x-tyk-streaming:
          type: object
          properties:
            streams:
              type: object
              additionalProperties: true
    XTykApiGateway:
      properties:
        x-tyk-api-gateway:
          $ref: '#/components/schemas/XTykAPIGateway'
      type: object
    Operation:
      properties:
        allow:
          $ref: '#/components/schemas/Allowance'
        block:
          $ref: '#/components/schemas/Allowance'
        cache:
          $ref: '#/components/schemas/CachePlugin'
        circuitBreaker:
          $ref: '#/components/schemas/CircuitBreaker'
        doNotTrackEndpoint:
          $ref: '#/components/schemas/TrackEndpoint'
        enforceTimeout:
          $ref: '#/components/schemas/EnforceTimeout'
        ignoreAuthentication:
          $ref: '#/components/schemas/Allowance'
        internal:
          $ref: '#/components/schemas/Internal'
        mockResponse:
          $ref: '#/components/schemas/MockResponse'
        postPlugins:
          $ref: '#/components/schemas/EndpointPostPlugins'
        rateLimit:
          $ref: '#/components/schemas/RateLimitEndpoint'
        requestSizeLimit:
          $ref: '#/components/schemas/RequestSizeLimit'
        trackEndpoint:
          $ref: '#/components/schemas/TrackEndpoint'
        transformRequestBody:
          $ref: '#/components/schemas/TransformBody'
        transformRequestHeaders:
          $ref: '#/components/schemas/TransformHeaders'
        transformRequestMethod:
          $ref: '#/components/schemas/TransformRequestMethod'
        transformResponseBody:
          $ref: '#/components/schemas/TransformBody'
        transformResponseHeaders:
          $ref: '#/components/schemas/TransformHeaders'
        urlRewrite:
          $ref: '#/components/schemas/URLRewrite'
        validateRequest:
          $ref: '#/components/schemas/ValidateRequest'
        virtualEndpoint:
          $ref: '#/components/schemas/VirtualEndpoint'
      type: object
    Scopes:
      nullable: true
      properties:
        claimName:
          type: string
        scopeToPolicyMapping:
          items:
            $ref: '#/components/schemas/ScopeToPolicy'
          type: array
      type: object
    Provider:
      properties:
        clientToPolicyMapping:
          items:
            $ref: '#/components/schemas/ClientToPolicy'
          type: array
        issuer:
          type: string
      type: object
    Cache:
      nullable: true
      properties:
        cacheAllSafeRequests:
          type: boolean
        cacheByHeaders:
          items:
            type: string
          type: array
        cacheResponseCodes:
          items:
            type: integer
          type: array
        controlTTLHeaderName:
          type: string
        enableUpstreamCacheControl:
          type: boolean
        enabled:
          type: boolean
        timeout:
          format: int64
          type: integer
      type: object
    PluginConfigData:
      nullable: true
      properties:
        enabled:
          type: boolean
        value:
          additionalProperties: {}
          nullable: true
          type: object
      type: object
    BooleanQueryParam:
      enum:
      - true
      - false
      example: true
      type: boolean
    Internal:
      nullable: true
      properties:
        enabled:
          type: boolean
      type: object
    URLRewriteTrigger:
      properties:
        condition:
          type: string
        rewriteTo:
          type: string
        rules:
          items:
            $ref: '#/components/schemas/URLRewriteRule'
          type: array
      type: object
    ValidateRequest:
      nullable: true
      properties:
        enabled:
          type: boolean
        errorResponseCode:
          type: integer
      type: object
    GatewayTags:
      nullable: true
      properties:
        enabled:
          type: boolean
        tags:
          items:
            type: string
          nullable: true
          type: array
      type: object
    MockResponse:
      nullable: true
      properties:
        body:
          type: string
        code:
          type: integer
        enabled:
          type: boolean
        fromOASExamples:
          $ref: '#/components/schemas/FromOASExamples'
        headers:
          $ref: '#/components/schemas/Headers'
      type: object
    SecuritySchemes:
      additionalProperties: {}
      type: object
    Header:
      properties:
        name:
          type: string
        value:
          type: string
      type: object
    URLRewriteRule:
      properties:
        in:
          type: string
        name:
          type: string
        negate:
          type: boolean
        pattern:
          type: string
      type: object
    PinnedPublicKeys:
      items:
        $ref: '#/components/schemas/PinnedPublicKey'
      nullable: true
      type: array
    TrafficLogs:
      nullable: true
      properties:
        enabled:
          type: boolean
      type: object
    CertificatePinning:
      nullable: true
      properties:
        domainToPublicKeysMapping:
          $ref: '#/components/schemas/PinnedPublicKeys'
        enabled:
          type: boolean
      type: object
    EndpointPostPlugins:
      items:
        $ref: '#/components/schemas/EndpointPostPlugin'
      type: array
    AuthSources:
      properties:
        cookie:
          $ref: '#/components/schemas/AuthSource'
        header:
          $ref: '#/components/schemas/AuthSource'
        query:
          $ref: '#/components/schemas/AuthSource'
      type: object
    IDExtractor:
      nullable: true
      properties:
        config:
          $ref: '#/components/schemas/IDExtractorConfig'
        enabled:
          type: boolean
        source:
          type: string
        with:
          type: string
      type: object
    CircuitBreaker:
      nullable: true
      properties:
        coolDownPeriod:
          type: integer
        enabled:
          type: boolean
        halfOpenStateEnabled:
          type: boolean
        sampleSize:
          type: integer
        threshold:
          format: double
          type: number
      type: object
    CustomPluginAuthentication:
      nullable: true
      properties:
        AuthSources:
          $ref: '#/components/schemas/AuthSources'
        config:
          $ref: '#/components/schemas/AuthenticationPlugin'
        enabled:
          type: boolean
      type: object
    Test:
      nullable: true
      properties:
        serviceDiscovery:
          $ref: '#/components/schemas/ServiceDiscovery'
      type: object
    Headers:
      items:
        $ref: '#/components/schemas/Header'
      type: array
    EventHandlers:
      items:
        $ref: '#/components/schemas/EventHandler'
      type: array
    TransformBody:
      nullable: true
      properties:
        body:
          type: string
        enabled:
          type: boolean
        format:
          type: string
        path:
          type: string
      type: object
    ClientToPolicy:
      properties:
        clientId:
          type: string
        policyId:
          type: string
      type: object
    ClientCertificates:
      nullable: true
      properties:
        allowlist:
          items:
            type: string
          nullable: true
          type: array
        enabled:
          type: boolean
      type: object
    PostAuthenticationPlugin:
      nullable: true
      properties:
        plugins:
          $ref: '#/components/schemas/CustomPlugins'
      type: object
    PinnedPublicKey:
      properties:
        domain:
          type: string
        publicKeys:
          items:
            type: string
          nullable: true
          type: array
      type: object
    ApiResponse:
      properties:
        ID:
          type: string
        Message:
          type: string
        Meta: {}
        Status:
          type: string
      type: object
    EnforceTimeout:
      nullable: true
      properties:
        enabled:
          type: boolean
        value:
          type: integer
      type: object
    URLRewrite:
      nullable: true
      properties:
        enabled:
          type: boolean
        pattern:
          type: string
        rewriteTo:
          type: string
        triggers:
          items:
            $ref: '#/components/schemas/URLRewriteTrigger'
          type: array
      type: object
    HMAC:
      nullable: true
      properties:
        AuthSources:
          $ref: '#/components/schemas/AuthSources'
        allowedAlgorithms:
          items:
            type: string
          type: array
        allowedClockSkew:
          format: double
          type: number
        enabled:
          type: boolean
      type: object
    CustomPlugin:
      properties:
        enabled:
          type: boolean
        functionName:
          type: string
        path:
          type: string
        rawBodyOnly:
          type: boolean
        requireSession:
          type: boolean
      type: object
    Upstream:
      properties:
        certificatePinning:
          $ref: '#/components/schemas/CertificatePinning'
        mutualTLS:
          $ref: '#/components/schemas/MutualTLS'
        rateLimit:
          $ref: '#/components/schemas/RateLimit'
        serviceDiscovery:
          $ref: '#/components/schemas/ServiceDiscovery'
        test:
          $ref: '#/components/schemas/Test'
        url:
          type: string
      type: object
    CustomPlugins:
      items:
        $ref: '#/components/schemas/CustomPlugin'
      type: array
    OIDC:
      nullable: true
      properties:
        AuthSources:
          $ref: '#/components/schemas/AuthSources'
        enabled:
          type: boolean
        providers:
          items:
            $ref: '#/components/schemas/Provider'
          type: array
        scopes:
          $ref: '#/components/schemas/Scopes'
        segregateByClientId:
          type: boolean
      type: object
    RequestSizeLimit:
      nullable: true
      properties:
        enabled:
          type: boolean
        value:
          format: int64
          type: integer
      type: object
    PostPlugin:
      nullable: true
      properties:
        plugins:
          $ref: '#/components/schemas/CustomPlugins'
      type: object
    ListenPath:
      properties:
        strip:
          type: boolean
        value:
          type: string
      type: object
    Allowance:
      nullable: true
      properties:
        enabled:
          type: boolean
        ignoreCase:
          type: boolean
      type: object
    ServiceDiscovery:
      nullable: true
      properties:
        cache:
          $ref: '#/components/schemas/ServiceDiscoveryCache'
        cacheTimeout:
          format: int64
          type: integer
        dataPath:
          type: string
        enabled:
          type: boolean
        endpointReturnsList:
          type: boolean
        parentDataPath:
          type: string
        portDataPath:
          type: string
        queryEndpoint:
          type: string
        targetPath:
          type: string
        useNestedQuery:
          type: boolean
        useTargetList:
          type: boolean
      type: object
    PluginBundle:
      nullable: true
      properties:
        enabled:
          type: boolean
        path:
          type: string
      type: object
    Info:
      properties:
        dbId:
          type: string
        expiration:
          type: string
        id:
          type: string
        name:
          type: string
        orgId:
          type: string
        state:
          $ref: '#/components/schemas/State'
        versioning:
          $ref: '#/components/schemas/Versioning'
      type: object
    MultipartFile:
      format: binary
      nullable: true
      type: string
    EndpointPostPlugin:
      properties:
        enabled:
          type: boolean
        functionName:
          type: string
        name:
          type: string
        path:
          type: string
      type: object
    State:
      properties:
        active:
          type: boolean
        internal:
          type: boolean
      type: object
    Authentication:
      nullable: true
      properties:
        baseIdentityProvider:
          type: string
        custom:
          $ref: '#/components/schemas/CustomPluginAuthentication'
        enabled:
          type: boolean
        hmac:
          $ref: '#/components/schemas/HMAC'
        oidc:
          $ref: '#/components/schemas/OIDC'
        securitySchemes:
          $ref: '#/components/schemas/SecuritySchemes'
        stripAuthorizationData:
          type: boolean
      type: object
    CORS:
      nullable: true
      properties:
        allowCredentials:
          type: boolean
        allowedHeaders:
          items:
            type: string
          type: array
        allowedMethods:
          items:
            type: string
          type: array
        allowedOrigins:
          items:
            type: string
          type: array
        debug:
          type: boolean
        enabled:
          type: boolean
        exposedHeaders:
          items:
            type: string
          type: array
        maxAge:
          type: integer
        optionsPassthrough:
          type: boolean
      type: object
    FromOASExamples:
      nullable: true
      properties:
        code:
          type: integer
        contentType:
          type: string
        enabled:
          type: boolean
        exampleName:
          type: string
      type: object
    DetailedActivityLogs:
      nullable: true
      properties:
        enabled:
          type: boolean
      type: object
    TrackEndpoint:
      nullable: true
      properties:
        enabled:
          type: boolean
      type: object
    ServiceDiscoveryCache:
      nullable: true
      properties:
        enabled:
          type: boolean
        timeout:
          format: int64
          type: integer
      type: object
    Server:
      properties:
        authentication:
          $ref: '#/components/schemas/Authentication'
        clientCertificates:
          $ref: '#/components/schemas/ClientCertificates'
        customDomain:
          $ref: '#/components/schemas/Domain'
        detailedActivityLogs:
          $ref: '#/components/schemas/DetailedActivityLogs'
        detailedTracing:
          $ref: '#/components/schemas/DetailedTracing'
        eventHandlers:
          $ref: '#/components/schemas/EventHandlers'
        gatewayTags:
          $ref: '#/components/schemas/GatewayTags'
        listenPath:
          $ref: '#/components/schemas/ListenPath'
      type: object
    RateLimit:
      nullable: true
      properties:
        enabled:
          type: boolean
        per:
          $ref: '#/components/schemas/TimeReadableDuration'
        rate:
          type: integer
      type: object
    AuthSource:
      nullable: true
      properties:
        enabled:
          type: boolean
        name:
          type: string
      type: object
    ScopeToPolicy:
      properties:
        policyId:
          type: string
        scope:
          type: string
      type: object
    DomainToCertificate:
      properties:
        certificate:
          type: string
        domain:
          type: string
      type: object
    TransformHeaders:
      nullable: true
      properties:
        add:
          $ref: '#/components/schemas/Headers'
        enabled:
          type: boolean
        remove:
          items:
            type: string
          type: array
      type: object
    TimeReadableDuration:
      format: int64
      type: integer
    XTykAPIGateway:
      properties:
        info:
          $ref: '#/components/schemas/Info'
        middleware:
          $ref: '#/components/schemas/Middleware'
        server:
          $ref: '#/components/schemas/Server'
        upstream:
          $ref: '#/components/schemas/Upstream'
      type: object
    PluginConfig:
      nullable: true
      properties:
        bundle:
          $ref: '#/components/schemas/PluginBundle'
        data:
          $ref: '#/components/schemas/PluginConfigData'
        driver:
          type: string
      type: object
    DetailedTracing:
      nullable: true
      properties:
        enabled:
          type: boolean
      type: object
    Middleware:
      nullable: true
      properties:
        global:
          $ref: '#/components/schemas/Global'
        operations:
          $ref: '#/components/schemas/Operations'
      type: object
    ResponsePlugin:
      nullable: true
      properties:
        plugins:
          $ref: '#/components/schemas/CustomPlugins'
      type: object
    AuthenticationPlugin:
      nullable: true
      properties:
        enabled:
          type: boolean
        functionName:
          type: string
        idExtractor:
          $ref: '#/components/schemas/IDExtractor'
        path:
          type: string
        rawBodyOnly:
          type: boolean
      type: object
    CachePlugin:
      nullable: true
      properties:
        cacheByRegex:
          type: string
        cacheResponseCodes:
          items:
            type: integer
          type: array
        enabled:
          type: boolean
        timeout:
          format: int64
          type: integer
      type: object
    MutualTLS:
      nullable: true
      properties:
        domainToCertificateMapping:
          items:
            $ref: '#/components/schemas/DomainToCertificate'
          nullable: true
          type: array
        en

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tyk/refs/heads/main/openapi/tyk-streams-apis-api-openapi.yml