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.

OpenAPI Specification

kong-event-gateway-virtual-clusters-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  contact:
    email: support@konghq.com
    name: Kong Inc
    url: https://konghq.com
  description: 'OpenAPI 3.0 spec for Kong Gateway''s Admin API.


    You can learn more about Kong Gateway at [developer.konghq.com](https://developer.konghq.com).

    Give Kong a star at the [Kong/kong](https://github.com/kong/kong) repository.'
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  title: Kong Enterprise Admin ACLs Event Gateway Virtual Clusters API
  version: 3.14.0
servers:
- description: Default Admin API URL
  url: '{protocol}://{hostname}:{port}{path}'
  variables:
    hostname:
      default: localhost
      description: Hostname for Kong's Admin API
    path:
      default: /
      description: Base path for Kong's Admin API
    port:
      default: '8001'
      description: Port for Kong's Admin API
    protocol:
      default: http
      description: Protocol for requests to Kong's Admin API
      enum:
      - http
      - https
security:
- adminToken: []
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:
    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
    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
    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'
    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
    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
    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
    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
    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
    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
    NamespaceExactAllowListItem:
      type: object
      properties:
        backend:
          type: string
          minLength: 1
      required:
      - backend
    StringFieldEqualsFilter:
      description: Filters on the given string field value by exact match.
      properties:
        eq:
          type: string
      title: StringFieldEqualsFilter
    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])?$
    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
    VirtualClusterAuthenticationPrincipal:
      description: A principal for authentication containing username and password.
      type: object
      properties:
        username:
          $ref: '#/components/schemas/GatewaySecretReferenceOrLiteral'
        password:
          $ref: '#/components/schemas/GatewaySecret'
      required:
      - username
      - password
    GatewaySecretReferenceOrLiteral:
      description: 'A literal value or a reference to an existing secret as a template string expression.

        The value is stored and returned by the API as-is, not treated as sensitive information.

        '
      type: string
      minLength: 1
      x-expression:
        type: string
        fields:
        - vault
    BackendClusterReferenceByName:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/BackendClusterName'
      required:
      - name
    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
    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
    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
    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
    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
    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
    CursorMeta:
      description: Pagination metadata.
      type: object
      properties:
        page:
          $ref: '#/components/schemas/CursorMetaPage'
      required:
      - page
    VirtualClusterNamespaceTopicSelectorExactList:
      type: object
      properties:
        type:
          type: string
          const: exact_list
        exact_list:
          description: Explicit allow-list of backend topic names.
          type: array
          items:
            $ref: '#/components/schemas/NamespaceExactAllowListItem'
          minItems: 1
        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
    VirtualClusterAuthenticationAnonymous:
      type: object
      properties:
        type:
          type: string
          const: anonymous
      required:
      - type
    BackendClusterReferenceById:
      type: object
      properties:
        id:
          description: The unique identifier of the backend cluster.
          type: string
          format: uuid
          minLength: 1
      required:
      - id
    VirtualClusterAuthenticationClientCertificate:
      description: 'Client certificate (mTLS) authentication scheme for the virtual cluster.


        **Requires a minimum runtime version of `1.1`**.'
      type: object
      properties:
        type:
          type: string
          const: client_certificate
      example:
        type: client_certificate
      additionalProperties: false
      required:
      - type
      x-min-runtime-version: '1.1'
    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'
    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
    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'
    BackendClusterReference:
      description: The backend cluster associated with the virtual cluster.
      type: object
      properties:
        id:
          description: The unique identifier of the backend cluster.
          type: string
          format: uuid
        name:
          $ref: '#/components/schemas/BackendClusterName'
      additionalProperties: false
      required:
      - id
      - 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
    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
    InvalidParameterDependentItem:
      type: object
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          enum:
          - dependent_fields
          nullable: true
          readOnly: true
        reason:
          type: string
          example: is a required field
          readOnly: true
        dependents:
          type: array
          items: {}
          nullable: true
          readOnly: true
          uniqueItems: true
        source:
          type: string
          example: body
      additionalProperties: false
      required:
      - field
      - rule
      - reason
      - dependents
    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}]$
    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
    InvalidRules:
      description: invalid parameters rules
      type: string
      enum:
      - required
      - is_array
      - is_base64
      - is_boolean
      - is_date_time
      - is_integer
      - is_null
      - is_number
      - is_object
      - is_string
      - is_uuid
      - is_fqdn
      - is_arn
      - unknown_property
      - missing_reference
      - is_label
      - matches_regex
      - invalid
      - is_supported_network_availability_zone_list
      - is_supported_network_cidr_block
      - is_supported_provider_region
      - type
      nullable: true
      readOnly: true
      x-speakeasy-unknown-values: allow
    BackendClusterReferenceModify:
      description: 'The backend cluster associated with the virtual cluster.


        Either `id` or `name` must be provided. Following changes to the backend cluster name won''t affect the

        reference, as the system will create the entities relationship by `id`.

        '
      anyOf:
      - $ref: '#/components/schemas/BackendClusterReferenceById'
      - $ref: '#/components/schemas/BackendClusterReferenceByName'
    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
    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
    BadRequestError:
      allOf:
      - $ref: '#/components/schemas/BaseError'
      - type: object
        required:
        - invalid_parameters
        properties:
          invalid_parameters:
            $ref: '#/components/schemas/InvalidParameters'
    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
    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
    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_cli

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