Kong Event Gateway Virtual Clusters API

Virtual clusters are the primary way clients interact with the Event Gateway proxy. They allow you to isolate clients from each other when connecting to the same backend cluster, and provide each client with modified view while still appearing as a standard Kafka cluster.

Operations 5

GET /v1/event-gateways/{gatewayId}/virtual-clusters List all virtual clusters #
POST /v1/event-gateways/{gatewayId}/virtual-clusters Create Virtual Cluster #
GET /v1/event-gateways/{gatewayId}/virtual-clusters/{virtualClusterId} Get a Virtual Cluster #
PUT /v1/event-gateways/{gatewayId}/virtual-clusters/{virtualClusterId} Update Virtual Cluster #
DELETE /v1/event-gateways/{gatewayId}/virtual-clusters/{virtualClusterId} Delete Virtual Cluster #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kong-event-gateway-virtual-clusters-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kong-event-gateway-virtual-clusters-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Konnect API - Go SDK Event Gateway Virtual Clusters API
  version: 3.14.0
  description: The Konnect platform API
  contact:
    name: Kong Inc
    url: https://konghq.com
    email: support@konghq.com
  x-extensions-note: "This API uses the `x-expression` vendor extension to indicate that a string property is a DSL expression.\nSupported types:\n\n\n  - `boolean`: An expression evaluates to boolean. For example, `context.topic.name == 'my-topic'`\n  - `string`: A template string expression that evaluates to a string or a literal string value. For example,\n    `${context.topic.name.substring(0, context.topic.name.length-4)}` or `my-literal-value`\n\nAdditionally, `x-sensitive` flag indicates that a field contains sensitive information. When the value\nof the field is provided in plain text, it's encrypted at rest and it's never returned in API responses.\nWhen the value is an expression, the expression itself is stored and returned in API responses.\n\n`x-min-runtime-version` indicates the minimum Event Gateway runtime version required to use a certain policy or\npolicy feature. The runtime version can be configured at the Event Gateway entity level. It must be a string\ncontaining a semantic version in the `MAJOR.MINOR` format, e.g., `\"1.1\"`.\n"
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  x-oas-source: kong/platform-api@
  x-oas-source-link: https://github.com/Kong/platform-api/commit/
servers:
- url: https://global.api.konghq.com
- url: https://us.api.konghq.com
- url: https://eu.api.konghq.com
- url: https://au.api.konghq.com
security:
- personalAccessToken: []
- systemAccountAccessToken: []
- konnectAccessToken: []
- serviceAccessToken: []
tags:
- name: Event Gateway Virtual Clusters
  description: 'Virtual clusters are the primary way clients interact with the Event Gateway proxy. They allow you to isolate clients from each other when connecting to the same backend cluster, and provide each client with modified view while still appearing as a standard Kafka cluster.

    '
paths:
  /v1/event-gateways/{gatewayId}/virtual-clusters:
    parameters:
    - $ref: '#/components/parameters/gatewayId'
    get:
      operationId: list-event-gateway-virtual-clusters
      summary: List all virtual clusters
      description: Returns a paginated list of virtual clusters associated with the specified Event Gateway.
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/PageAfter'
      - name: filter
        in: query
        description: Filter documents returned in the response.
        required: false
        schema:
          type: object
          properties:
            backend_cluster_id:
              $ref: '#/components/schemas/StringFieldEqualsFilter'
            name:
              $ref: '#/components/schemas/StringFieldContainsFilter'
        style: deepObject
      responses:
        '200':
          $ref: '#/components/responses/ListVirtualClustersResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      tags:
      - Event Gateway Virtual Clusters
    post:
      x-speakeasy-entity-operation:
        terraform-resource: EventGatewayVirtualCluster#create
        terraform-datasource: null
      operationId: create-event-gateway-virtual-cluster
      summary: Create Virtual Cluster
      description: Creates a new virtual cluster associated with the specified Event Gateway.
      requestBody:
        $ref: '#/components/requestBodies/CreateVirtualClusterRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualCluster'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      tags:
      - Event Gateway Virtual Clusters
  /v1/event-gateways/{gatewayId}/virtual-clusters/{virtualClusterId}:
    parameters:
    - $ref: '#/components/parameters/gatewayId'
    - name: virtualClusterId
      in: path
      description: The ID of the Virtual Cluster.
      required: true
      schema:
        type: string
        format: uuid
      x-speakeasy-match: id
    get:
      x-speakeasy-entity-operation:
        terraform-resource: EventGatewayVirtualCluster#read
        terraform-datasource: null
      operationId: get-event-gateway-virtual-cluster
      summary: Get a Virtual Cluster
      description: Returns information about a specific virtual cluster associated with the Event Gateway.
      responses:
        '200':
          description: A single virtual cluster object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualCluster'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      tags:
      - Event Gateway Virtual Clusters
    put:
      x-speakeasy-entity-operation:
        terraform-resource: EventGatewayVirtualCluster#update
        terraform-datasource: null
      operationId: update-event-gateway-virtual-cluster
      summary: Update Virtual Cluster
      description: Updates an existing virtual cluster associated with the specified Event Gateway.
      requestBody:
        $ref: '#/components/requestBodies/UpdateVirtualClusterRequest'
      responses:
        '200':
          description: Updated virtual cluster object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualCluster'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      tags:
      - Event Gateway Virtual Clusters
    delete:
      x-speakeasy-entity-operation:
        terraform-resource: EventGatewayVirtualCluster#delete
        terraform-datasource: null
      operationId: delete-event-gateway-virtual-cluster
      summary: Delete Virtual Cluster
      description: Deletes a specific virtual cluster associated with the Event Gateway.
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      tags:
      - Event Gateway Virtual Clusters
components:
  schemas:
    BadRequestError:
      allOf:
      - $ref: '#/components/schemas/BaseError'
      - type: object
        required:
        - invalid_parameters
        properties:
          invalid_parameters:
            $ref: '#/components/schemas/InvalidParameters'
    VirtualClusterNamespaceTopicSelector:
      type: object
      discriminator:
        propertyName: type
        mapping:
          glob: '#/components/schemas/VirtualClusterNamespaceTopicSelectorGlob'
          exact_list: '#/components/schemas/VirtualClusterNamespaceTopicSelectorExactList'
      oneOf:
      - $ref: '#/components/schemas/VirtualClusterNamespaceTopicSelectorGlob'
      - $ref: '#/components/schemas/VirtualClusterNamespaceTopicSelectorExactList'
      required:
      - type
    InvalidParameterMinimumLength:
      type: object
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          enum:
          - min_length
          - min_digits
          - min_lowercase
          - min_uppercase
          - min_symbols
          - min_items
          - min
          nullable: false
          readOnly: true
          x-speakeasy-unknown-values: allow
        minimum:
          type: integer
          example: 8
        source:
          type: string
          example: body
        reason:
          type: string
          example: must have at least 8 characters
          readOnly: true
      additionalProperties: false
      required:
      - field
      - reason
      - rule
      - minimum
    UpdatedAt:
      description: An ISO-8601 timestamp representation of entity update date.
      type: string
      format: date-time
      example: '2022-11-04T20:10:06.927Z'
      readOnly: true
      x-speakeasy-param-suppress-computed-diff: true
    BaseError:
      description: standard error
      type: object
      properties:
        status:
          description: 'The HTTP status code of the error. Useful when passing the response

            body to child properties in a frontend UI. Must be returned as an integer.

            '
          type: integer
          readOnly: true
        title:
          description: 'A short, human-readable summary of the problem. It should not

            change between occurences of a problem, except for localization.

            Should be provided as "Sentence case" for direct use in the UI.

            '
          type: string
          readOnly: true
        type:
          description: The error type.
          type: string
          readOnly: true
        instance:
          description: 'Used to return the correlation ID back to the user, in the format

            kong:trace:<correlation_id>. This helps us find the relevant logs

            when a customer reports an issue.

            '
          type: string
          readOnly: true
        detail:
          description: 'A human readable explanation specific to this occurence of the problem.

            This field may contain request/entity data to help the user understand

            what went wrong. Enclose variable values in square brackets. Should be

            provided as "Sentence case" for direct use in the UI.

            '
          type: string
          readOnly: true
      required:
      - status
      - title
      - instance
      - detail
      title: Error
    BackendClusterReferenceByName:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/BackendClusterName'
      required:
      - name
    CreatedAt:
      description: An ISO-8601 timestamp representation of entity creation date.
      type: string
      format: date-time
      example: '2022-11-04T20:10:06.927Z'
      readOnly: true
      x-speakeasy-param-suppress-computed-diff: true
    VirtualClusterNamespaceIdSelectorExactList:
      type: object
      properties:
        type:
          type: string
          const: exact_list
        exact_list:
          type: array
          items:
            type: object
            required:
            - value
            properties:
              value:
                type: string
                minLength: 1
          minItems: 1
      required:
      - type
    VirtualClusterAuthenticationSchemes:
      description: 'How to handle authentication from clients.


        It tries to authenticate with every rule sequentially one by one.

        It succeeds on the first match, and fails if no rule matches.

        '
      type: array
      items:
        $ref: '#/components/schemas/VirtualClusterAuthenticationScheme'
      minItems: 1
    NamespaceExactAllowListItem:
      type: object
      properties:
        backend:
          type: string
          minLength: 1
      required:
      - backend
    VirtualClusterAuthenticationScheme:
      discriminator:
        propertyName: type
        mapping:
          anonymous: '#/components/schemas/VirtualClusterAuthenticationAnonymous'
          sasl_plain: '#/components/schemas/VirtualClusterAuthenticationSaslPlain'
          sasl_scram: '#/components/schemas/VirtualClusterAuthenticationSaslScram'
          oauth_bearer: '#/components/schemas/VirtualClusterAuthenticationOauthBearer'
          client_certificate: '#/components/schemas/VirtualClusterAuthenticationClientCertificate'
      oneOf:
      - $ref: '#/components/schemas/VirtualClusterAuthenticationAnonymous'
      - $ref: '#/components/schemas/VirtualClusterAuthenticationSaslPlain'
      - $ref: '#/components/schemas/VirtualClusterAuthenticationSaslScram'
      - $ref: '#/components/schemas/VirtualClusterAuthenticationOauthBearer'
      - $ref: '#/components/schemas/VirtualClusterAuthenticationClientCertificate'
    VirtualClusterNamespaceTopicSelectorGlob:
      type: object
      properties:
        type:
          type: string
          const: glob
        glob:
          description: Expose any backend topic that matches this glob pattern (e.g., `operations_data_*`).
          type: string
          format: glob
          minLength: 1
          pattern: ^[A-Za-z0-9._?*-]+$
        conflict:
          description: 'How to inform the user about conflicts where multiple backend topics would map to the same virtual topic name.

            * warn - log in the Event Gateway logs. Additionally, it sets knep_namespace_topic_conflict to 1.

            * ignore - do not do anything. It does not cause knep_namespace_topic_conflict metric to be set to 1.

            '
          type: string
          default: warn
          enum:
          - warn
          - ignore
          x-speakeasy-unknown-values: allow
      required:
      - type
      - glob
    CursorMetaPage:
      type: object
      properties:
        first:
          description: URI to the first page
          type: string
          format: path
        last:
          description: URI to the last page
          type: string
          format: path
        next:
          description: URI to the next page
          type: string
          format: path
          nullable: true
        previous:
          description: URI to the previous page
          type: string
          format: path
          nullable: true
        size:
          description: Requested page size
          type: number
          example: 10
      required:
      - size
      - next
      - previous
    VirtualClusterAuthenticationSensitiveDataAwareScheme:
      discriminator:
        propertyName: type
        mapping:
          anonymous: '#/components/schemas/VirtualClusterAuthenticationAnonymous'
          sasl_plain: '#/components/schemas/VirtualClusterAuthenticationSaslPlainSensitiveDataAware'
          sasl_scram: '#/components/schemas/VirtualClusterAuthenticationSaslScram'
          oauth_bearer: '#/components/schemas/VirtualClusterAuthenticationOauthBearer'
          client_certificate: '#/components/schemas/VirtualClusterAuthenticationClientCertificate'
      oneOf:
      - $ref: '#/components/schemas/VirtualClusterAuthenticationAnonymous'
      - $ref: '#/components/schemas/VirtualClusterAuthenticationSaslPlainSensitiveDataAware'
      - $ref: '#/components/schemas/VirtualClusterAuthenticationSaslScram'
      - $ref: '#/components/schemas/VirtualClusterAuthenticationOauthBearer'
      - $ref: '#/components/schemas/VirtualClusterAuthenticationClientCertificate'
    UnauthorizedError:
      allOf:
      - $ref: '#/components/schemas/BaseError'
      - type: object
        properties:
          status:
            example: 401
          title:
            example: Unauthorized
          type:
            example: https://httpstatuses.com/401
          instance:
            example: kong:trace:1234567890
          detail:
            example: Invalid credentials
    NotFoundError:
      allOf:
      - $ref: '#/components/schemas/BaseError'
      - type: object
        properties:
          status:
            example: 404
          title:
            example: Not Found
          type:
            example: https://httpstatuses.com/404
          instance:
            example: kong:trace:1234567890
          detail:
            example: Not found
    GatewaySecret:
      description: 'A sensitive value containing the secret or a reference to a secret as a template string expression.

        If the value is provided as plain text, it is encrypted at rest and omitted from API responses.

        If provided as an expression, the expression itself is stored and returned by the API.

        '
      type: string
      example: ${vault.env['MY_ENV_VAR']}
      minLength: 1
      x-expression:
        type: string
        fields:
        - vault
      x-sensitive: true
    VirtualClusterAuthenticationValidate:
      description: Validation rules.
      type: object
      properties:
        audiences:
          description: List of expected audience values. One of them has to match the audience claim in the token.
          type: array
          items:
            $ref: '#/components/schemas/VirtualClusterAuthenticationAudience'
          minItems: 1
        issuer:
          description: Expected token issuer in the token.
          type: string
          minLength: 1
    VirtualClusterTopicAlias:
      description: '**Pre-release Feature**

        This feature is currently in beta and is subject to change.


        A topic alias maps an alias name to a namespace-visible topic name.

        Clients can produce to, consume from, and discover the topic under the alias name.

        The original topic name remains accessible.


        **Requires a minimum runtime version of `1.2`**.'
      type: object
      properties:
        alias:
          description: The client-visible topic name.
          type: string
          minLength: 1
        topic:
          description: The namespace-visible topic name this alias resolves to.
          type: string
          minLength: 1
        match:
          description: 'CEL expression evaluated against the connection''s auth context.

            If omitted or empty, the alias is active for all connections.

            '
          type: string
          default: ''
          x-expression:
            type: boolean
            fields:
            - name: context.auth.principal.name
              type: string
              description: Name of authenticated principal. Username in case of PLAIN/SCRAM, `sub` claim in case of OAUTHBEARER.
            - name: context.auth.type
              type: string
              description: 'The matched authentication type from a virtual cluster: anonymous, sasl_plain, sasl_scram_sha256, sasl_scram_sha512, sasl_oauth_bearer.

                '
            - name: context.auth.token.claims
              type: object
              description: All claims from the JWT token. Only populated for sasl_oauth_bearer authentication. Claims can be strings, numbers, booleans, arrays or nested JSON objects.
        conflict:
          $ref: '#/components/schemas/VirtualClusterTopicAliasConflict'
      required:
      - alias
      - topic
      x-min-runtime-version: '1.2'
    VirtualClusterAuthenticationSaslPlainSensitiveDataAware:
      description: SASL/PLAIN authentication scheme for the virtual cluster.
      type: object
      properties:
        type:
          type: string
          const: sasl_plain
        mediation:
          description: The mediation type for SASL/PLAIN authentication.
          type: string
          enum:
          - passthrough
          - terminate
          x-speakeasy-unknown-values: allow
        principals:
          description: List of principals to be able to authenticate with, used with `terminate` mediation.
          type: array
          items:
            $ref: '#/components/schemas/VirtualClusterAuthenticationPrincipalSensitiveDataAware'
      additionalProperties: false
      required:
      - type
      - mediation
    VirtualClusterAuthenticationClaimsMapping:
      description: Maps JWT claims in the case when sub and scope are presented as different claims in your JWT token.
      type: object
      properties:
        sub:
          description: Maps the subject claim.
          type: string
          minLength: 1
        scope:
          description: Maps the scope claim.
          type: string
          minLength: 1
    VirtualClusterNamespace:
      description: 'Namespace allows to implement multitenancy using a single backend cluster.

        It allows to either hide or enforce a static prefix on resources (topics, consumer group IDs, transaction IDs).

        '
      type: object
      properties:
        mode:
          description: "* hide_prefix - the configured prefix is hidden from clients for topics and IDs when reading.\n\n\n  Created resources are written with the prefix on the backend cluster.\n* enforce_prefix - the configured prefix remains visible to clients.\n\n\n  Created resources must include the prefix or the request will fail.\n"
          type: string
          enum:
          - hide_prefix
          - enforce_prefix
          x-speakeasy-unknown-values: allow
        prefix:
          description: 'The namespace is differentiated by this chosen prefix.

            For example, if the prefix is set to "analytics_" the topic named "analytics_user_clicks" is available to the clients

            of the virtual cluster. Topics without the prefix will be ignored unless added via `additional.topics`.

            '
          type: string
          minLength: 1
        additional:
          $ref: '#/components/schemas/VirtualClusterNamespaceAdditionalProperties'
      required:
      - mode
      - prefix
    StringFieldContainsFilter:
      description: Filters on the given string field value by fuzzy match.
      type: object
      properties:
        contains:
          type: string
      additionalProperties: false
      required:
      - contains
      title: StringFieldContainsFilter
    InvalidParameterMaximumLength:
      type: object
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          enum:
          - max_length
          - max_items
          - max
          nullable: false
          readOnly: true
          x-speakeasy-unknown-values: allow
        maximum:
          type: integer
          example: 8
        source:
          type: string
          example: body
        reason:
          type: string
          example: must not have more than 8 characters
          readOnly: true
      additionalProperties: false
      required:
      - field
      - reason
      - rule
      - maximum
    InvalidParameterStandard:
      type: object
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          $ref: '#/components/schemas/InvalidRules'
        source:
          type: string
          example: body
        reason:
          type: string
          example: is a required field
          readOnly: true
      additionalProperties: false
      required:
      - field
      - reason
    VirtualClusterAuthenticationSaslScram:
      description: SASL/SCRAM authentication scheme for the virtual cluster.
      type: object
      properties:
        type:
          type: string
          const: sasl_scram
        algorithm:
          description: The algorithm used for SASL/SCRAM authentication.
          type: string
          enum:
          - sha256
          - sha512
          x-speakeasy-unknown-values: allow
      additionalProperties: false
      required:
      - type
      - algorithm
    VirtualClusterAuthenticationAnonymous:
      type: object
      properties:
        type:
          type: string
          const: anonymous
      required:
      - type
    BackendClusterName:
      description: The unique name of the backend cluster.
      type: string
      maxLength: 255
      minLength: 1
      x-unicode-pattern: ^[\p{L}\p{N}][\p{L}\p{N} _\-\.:/+']*[\p{L}\p{N}]$
    VirtualClusterNamespaceIdSelectorGlob:
      type: object
      properties:
        type:
          type: string
          const: glob
        glob:
          description: Expose any id that matches this glob pattern (e.g., `my_id_*`).
          type: string
          format: glob
          minLength: 1
          pattern: ^[A-Za-z0-9._?*-]+$
      required:
      - type
      - glob
    VirtualClusterNamespaceIdSelector:
      type: object
      discriminator:
        propertyName: type
        mapping:
          glob: '#/components/schemas/VirtualClusterNamespaceIdSelectorGlob'
          exact_list: '#/components/schemas/VirtualClusterNamespaceIdSelectorExactList'
      oneOf:
      - $ref: '#/components/schemas/VirtualClusterNamespaceIdSelectorGlob'
      - $ref: '#/components/schemas/VirtualClusterNamespaceIdSelectorExactList'
      required:
      - type
    VirtualClusterACLMode:
      description: "Configures whether or not ACL policies are enforced on the gateway.\n- `enforce_on_gateway` means the gateway enforces its own ACL policies for this virtual cluster\n\n\n  and does not forward ACL-related commands to the backend cluster.\n  Note that if there are no ACL policies configured, all access is denied.\n- `passthrough` tells the gateway to forward all ACL-related commands.\n"
      type: string
      enum:
      - enforce_on_gateway
      - passthrough
      x-speakeasy-unknown-values: allow
    VirtualClusterAuthenticationAudience:
      type: object
      properties:
        name:
          type: string
          minLength: 1
      required:
      - name
    InvalidParameterChoiceItem:
      type: object
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          enum:
          - enum
          nullable: false
          readOnly: true
        reason:
          type: string
          example: is a required field
          readOnly: true
        choices:
          type: array
          items: {}
          minItems: 1
          nullable: false
          readOnly: true
          uniqueItems: true
        source:
          type: string
          example: body
      additionalProperties: false
      required:
      - field
      - reason
      - rule
      - choices
    VirtualClusterName:
      description: The name of the virtual cluster.
      type: string
      maxLength: 255
      minLength: 1
      x-unicode-pattern: ^[\p{L}\p{N}][\p{L}\p{N} _\-\.:/+']*[\p{L}\p{N}]$
    VirtualCluster:
      description: A representation of a Kafka cluster that maps to a backend cluster.
      type: object
      properties:
        id:
          description: The unique identifier of the virtual cluster.
          type: string
          format: uuid
          x-speakeasy-param-suppress-computed-diff: true
        description:
          description: A human-readable description of the virtual cluster.
          type: string
          default: ''
          maxLength: 512
        destination:
          $ref: '#/components/schemas/BackendClusterReference'
        authentication:
          $ref: '#/components/schemas/VirtualClusterAuthenticationSensitiveDataAwareSchemes'
        namespace:
          $ref: '#/components/schemas/VirtualClusterNamespace'
        topic_aliases:
          description: '**Pre-release Feature**

            This feature is currently in beta and is subject to change.


            Topic aliases allow exposing backend topics under additional names.

            An alias creates a new entry point to the same physical data.

            The alias `topic` field references namespace-visible names (if namespace is configured).

            Aliases are independent of namespace and can be used without it.


            **Requires a minimum runtime version of `1.2`**.'
          type: array
          items:
            $ref: '#/components/schemas/VirtualClusterTopicAlias'
          x-min-runtime-version: '1.2'
        name:
          $ref: '#/components/schemas/VirtualClusterName'
        dns_label:
          $ref: '#/components/schemas/VirtualClusterDNSLabel'
        acl_mode:
          $ref: '#/components/schemas/VirtualClusterACLMode'
        labels:
          $ref: '#/components/schemas/Labels'
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        updated_at:
          $ref: '#/components/schemas/UpdatedAt'
      additionalProperties: false
      required:
      - id
      - name
      - dns_label
      - destination
      - authentication
      - acl_mode
      - created_at
      - updated_at
    VirtualClusterAuthenticationOauthBearer:
      description: Oauth Bearer authentication scheme for the virtual cluster.
      type: object
      properties:
        type:
          type: string
          const: oauth_bearer
        mediation:
          description: "Methods to mediate authentication:\n* passthrough - pass authentication from the client through proxy to the backend cluster without any kind of\n\n\n  validation\n* validate_forward - pass authentication from the client through proxy to the backend cluster.\n\n\n  Proxy does the validation before forwarding it to the client.\n* terminate - terminate authentication at the proxy level and originate authentication to the backend cluster\n\n\n  using the configuration defined at BackendCluster's authentication.\n  SASL auth is not originated if authentication on the backend_cluster is not configured.\n"
          type: string
          enum:
          - passthrough
          - validate_forward
          - terminate
          x-speakeasy-unknown-values: allow
        claims_mapping:
          $ref: '#/components/schemas/VirtualClusterAuthenticationClaimsMapping'
        jwks:
          $ref: '#/components/schemas/VirtualClusterAuthenticationJWKS'
        validate:
          $ref: '#/components/schemas/VirtualClusterAuthenticationValidate'
      additionalProperties: false
      required:
      - type
      - mediation
    Labels:
      description: "Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. \n\nKeys must be of length 1-63 characters, and cannot start with \"kong\", \"konnect\", \"mesh\", \"kic\", or \"_\".\n"
      type: object
      example:
        env: test
      additionalProperties:
        type: string
        pattern: ^[a-z0-9A-Z]{1}([a-z0-9A-Z-._]*[a-z0-9A-Z]+)?$
        minLength: 1
        maxLength: 63
      maxProperties: 50
      title: Labels
    InvalidParameters:
      description: invalid parameters
      type: array
      items:
        oneOf:
        - $ref: '#/components/schemas/InvalidParameterStandard'
        - $ref: '#/components/schemas/InvalidParameterMinimumLength'
        - $ref: '#/components/schemas/InvalidParameterMaximumLength'
        - $ref: '#/components/schemas/InvalidParameterChoiceItem'
        - $ref: '#/components/schemas/InvalidParameterDependentItem'
      minItems: 1
      nullable: false
      uniqueItems: true
    VirtualClusterDNSLabel:
      description: 'The DNS label used in the bootstrap server URL to identify the virtual cluster when using SNI routing.

        The format follows the RFC1035: 1-63 chars, lowercase alphanumeric or ''-'', must start and end with an alphanumeric character.'
      type: string
      example: vcluster-1
      maxLength: 63
      minLength: 1
      pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
    VirtualClusterTopicAliasConflict:
      description: 'How to handle conflicts where an alias shadows a physical topic.

        * warn - activate the alias but log a warning and set the conflict metric to 1.

        * ignore - activate the alias silently.

        '
      type: string
      default: warn
      enum:
      - warn
      - ignore
      x-enum-varnames:
      - VirtualClusterTopicAliasConflictWarn
      - VirtualClusterTopicAliasConflictIgnore
      x-speakeasy-unknown-values: allow
    CursorMeta:
      description: Pagination metadata.
      type: object
      properties:
        page:
          $ref: '#/components/schemas/CursorMetaPage'
      required:
      - page
    ForbiddenError:
      allOf:
      - $ref: '#/components/schemas/BaseError'
      - type: object
        properties:
          status:
            example: 403
          title:
            example: Forbidden
          type:
            example: https://httpstatuses.com/403
          instance:
            example: kong:trace:1234567890
          detail:
            example: Forbidden
    VirtualClusterAuthenticationJWKS:
      description: JSON Web Key Set configuration for verifying token signatures.
      type: object
      properties:
        endpoint:
          description: URL for JWKS endpoin

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kong/refs/heads/main/openapi/kong-event-gateway-virtual-clusters-api-openapi.yml