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:. 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_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 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 VirtualClusterAuthenticationJWKS: description: JSON Web Key Set configuration for verifying token signatures. type: object properties: endpoint: description: URL for JWKS endpoint. type: string format: uri minLength: 1 timeout: description: Total time from establishing connection to receive a response from JWKS endpoint. type: string default: 10s cache_expiration: description: Duration after which the gateway will fetch and cache JWKS. type: string default: 1h required: - endpoint VirtualClusterAuthenticationSaslPlain: description: 'SASL/PLAIN authentication scheme for the virtual cluster containing principals with username and password. ' 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/VirtualClusterAuthenticationPrincipal' minItems: 1 additionalProperties: false required: - type - mediation VirtualClusterNamespaceAdditionalProperties: type: object properties: topics: description: 'Additional backend topics to expose even if they don''t match the namespace prefix. The topics are not affected by the hide/enforce prefix mode. If the client tries to create a topic that matches this list, the request is rejected. ' type: array items: $ref: '#/components/schemas/VirtualClusterNamespaceTopicSelector' consumer_groups: description: 'Consumer group IDs to expose even if they don''t start with the namespace prefix. ' type: array items: $ref: '#/components/schemas/VirtualClusterNamespaceIdSelector' 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 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}]$ VirtualClusterAuthenticationSensitiveDataAwareSchemes: 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/VirtualClusterAuthenticationSensitiveDataAwareScheme' minItems: 1 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 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 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 VirtualClusterAuthenticationPrincipalSensitiveDataAware: description: A principal for authentication. type: object properties: username: $ref: '#/components/schemas/GatewaySecretReferenceOrLiteral' password: $ref: '#/components/schemas/GatewaySecret' required: - username StringFieldContainsFilter: description: Filters on the given string field value by fuzzy match. type: object properties: contains: type: string additionalProperties: false required: - contains title: StringFieldContainsFilter requestBodies: UpdateVirtualClusterRequest: description: The request schema for updating a virtual cluster. content: application/json: schema: type: object properties: name: $ref: '#/components/schemas/VirtualClusterName' description: description: A human-readable description of the virtual cluster. type: string default: '' maxLength: 512 destination: $ref: '#/components/schemas/BackendClusterReferenceModify' 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' acl_mode: $ref: '#/components/schemas/VirtualClusterACLMode' dns_label: $ref: '#/components/schemas/VirtualClusterDNSLabel' labels: $ref: '#/components/schemas/Labels' additionalProperties: false required: - name - destination - authentication - dns_label - acl_mode CreateVirtualClusterRequest: description: The request schema for creating a virtual cluster. content: application/json: schema: type: object properties: name: $ref: '#/components/schemas/VirtualClusterName' description: description: A human-readable description of the virtual cluster. type: string default: '' maxLength: 512 destination: $ref: '#/components/schemas/BackendClusterReferenceModify' authentication: $ref: '#/components/schemas/VirtualClusterAuthenticationSchemes' 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' acl_mode: $ref: '#/components/schemas/VirtualClusterACLMode' dns_label: $ref: '#/components/schemas/VirtualClusterDNSLabel' labels: $ref: '#/components/schemas/Labels' additionalProperties: false required: - name - destination - authentication - dns_label - acl_mode responses: BadRequest: description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/BadRequestError' NotFound: description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/NotFoundError' Unauthorized: description: Unauthorized content: application/problem+json: schema: description: The error response object. type: object properties: status: description: The HTTP status code. type: integer example: 403 title: description: The Error Response. type: string example: Unauthorized instance: description: The Konnect traceback code. type: string example: konnect:trace:952172606039454040 detail: description: Details about the error response. type: string example: You do not have permission to perform this action $ref: '#/components/schemas/UnauthorizedError' title: Unauthorized Response ListVirtualClustersResponse: description: A paginated list response for a collection of virtual clusters. content: application/json: schema: type: object properties: meta: $ref: '#/components/schemas/CursorMeta' data: type: array items: $ref: '#/components/schemas/VirtualCluster' Forbidden: description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/ForbiddenError' parameters: PageAfter: name: page[after] description: Request the next page of data, starting with the item after this parameter. required: false in: query allowEmptyValue: true schema: type: string example: ewogICJpZCI6ICJoZWxsbyB3b3JsZCIKfQ gatewayId: name: gatewayId in: path required: true schema: type: string format: uuid example: 9524ec7d-36d9-465d-a8c5-83a3c9390458 description: The UUID of your Gateway. PageSize: name: page[size] description: The maximum number of items to include per page. The last page of a collection may include fewer items. required: false in: query allowEmptyValue: true schema: type: integer example: 10 x-speakeasy-terraform-ignore: true securitySchemes: adminToken: in: header name: Kong-Admin-Token type: apiKey externalDocs: description: Documentation for Kong Gateway and its APIs url: https://developer.konghq.com