diff --git a/docker/initializerGw.json b/docker/initializerGw.json
index 4d703b4..f9a636a 100644
--- a/docker/initializerGw.json
+++ b/docker/initializerGw.json
@@ -9,7 +9,7 @@
},
"httpResponse": {
"statusCode": 200,
- "body": "{ \"metadata\": { \"name\":\"vcluster1\" }, \"spec\":{\"prefix\":\"vcluster1\"} }",
+ "body": "{ \"metadata\": { \"name\":\"vcluster1\" }, \"spec\":{} }",
"headers": {
"Content-Type": [
"application/json"
diff --git a/docker/test_resource_gw.yml b/docker/test_resource_gw.yml
index 657498b..028a80d 100644
--- a/docker/test_resource_gw.yml
+++ b/docker/test_resource_gw.yml
@@ -42,8 +42,9 @@ metadata:
name: rule1
vCluster: vcluster1
spec:
- logicalTopicNamePattern: toto.*
- physicalTopicName: yolo
+ pattern: toto.*
+ physicalTopics:
+ delete: yolo
autoManaged: true
---
apiVersion: gateway/v2
@@ -52,8 +53,9 @@ metadata:
name: rule2
vCluster: vcluster1
spec:
- logicalTopicNamePattern: toto.*
- physicalTopicName: yolo
+ pattern: toto.*
+ physicalTopics:
+ delete: yolo
---
apiVersion: gateway/v2
kind: GatewayGroup
@@ -129,9 +131,18 @@ spec:
---
apiVersion: gateway/v2
kind: GatewayServiceAccount
+metadata:
+ name: user1
+ vCluster: vcluster1
+spec:
+ type: Local
+---
+apiVersion: gateway/v2
+kind: GatewayServiceAccount
metadata:
name: user2
vCluster: vcluster1
spec:
type: External
- principal: ext_user2
+ externalNames:
+ - ext_user2
diff --git a/schema/gateway.yaml b/schema/gateway.yaml
index 39e2fea..0e63741 100644
--- a/schema/gateway.yaml
+++ b/schema/gateway.yaml
@@ -11,342 +11,344 @@ info:
backgroundColor: '#FFFFFF'
altText: Conduktor logo
tags:
-- name: Introduction
- description: |
- The Conduktor Gateway REST API 's aim is to help you configure your Gateway.
-
- Get started with Conduktor Gateway [self-hosted](https://docs.conduktor.io/gateway/installation/) today. Setup takes only a few minutes.
-- name: Authentication
- description: |-
- Authentication to the API requires a basic authentication.
-
- To get a token and use it you must go through the following steps:
-
- * Configure the admin password in the Gateway YAML configuration file.
-
- * Use the password in the **authorization** header of your requests.
-
- Example:
-
- ```shell
- curl -X GET "https://your.gateway-api.host/gateway/v2/virtual-cluster" \
- -H "accept: application/json" \
- --user "admin:password"
- ```
-- name: Kinds
- description: |
- ### Definition
-
- Kinds the resource types of the Conduktor gateway.
-
- ### Conduktor Gateway Kinds
-
- The following kinds are available in the Conduktor Gateway API:
-
- * `VirtualCluster`
- * `AliasTopic`
- * `ConcentratedTopic`
- * `ConcentrationRule`
- * `Interceptor`
- * `Plugin`
- * `GatewayServiceAccount`
- * `Token`
- * `GatewayGroup`
-- name: Api Groups
- description: |+
- ### Definition
-
- API groups a set of resources that share the same API path prefix. They are used to organize the API endpoints and the
- resources they manage.
- The versioning is set at this level, so all the resources in the same group share the same version.
-
- ### Conduktor Api Groups
-
- The Gateway API consist of a single API group right now (`gateway`), and it manages the following resources:
-
- | Api Group | Version | Kinds |
- |------------|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
- | `/gateway` | `/v2` | `/virtual-cluster`, `/alias-topic`, `/concentrated-topic`, `/concentration-rule`, `/interceptor`, `/plugin`, `/service-account`, `/group`, `/token` |
-
-
-
-- name: Versioning
- description: |+
- * __The version is set at the api group level__. It is incremented when a breaking change happens in the schema of an endpoint of the group (that has been marked `stable`). The n-1 version is still available for a while to allow users to migrate. The version is part of the endpoint path.
- * The API version (v2) is the global version of the Conduktor Gateway API, it should not change unless there is a complete overhaul of the API.
-
-
- Endpoint also have a status to manage their API lifecycle, following the order below:
- * __preview__: this is an early-stage feature, really likely to change
- * __beta__: early access feature, breaking change
- * __stable__: Production-ready endpoint, no breaking change
- * __deprecated__: This endpoint isn't supported anymore and the user should migrate
-
-
-- name: Conventions
- description: |+
- ### Path conventions
-
- The API follows as much as possible the endpoints structure below for each kind of resource:
-
- * `GET /{api-group}/{version}/{kind}/{name}` to read a resource
- * `GET /{api-group}/{version}/{kind}` to list resources of a kind
- * `PUT /{api-group}/{version}/{kind}` to update or create a resource
- * `DELETE /{api-group}/{version}/{kind}/{name}` to delete a resource (returns 204 No Content)
- * `POST` is used for specific operations that don't fit this CRUD model. PUT is the default verb for updates and
- creations.
- * Important principle: the result of a GET can be reused as the body of a PUT to update the resource.
-
- __Non-unique names__:
- When a `name` is not enough to uniquely identify a resource, the GET and DELETE endpoint are different
- The GET by name is replaced by query parameters (returning lists or the searched item if the criteria are the elements
- of the key), and the DELETE by name is replaced by a DELETE with a body.
- For example, an `alias-topic` is identified by its `name` and the `vCluster` gives the following endpoints:
-
- * `GET /gateway/v2/alias-topic?name={name}&vcluster={vcluster}`
- * `PUT /gateway/v2/alias-topic`
- * `DELETE /gateway/v2/alias-topic` with a body containing the `name` and the `vCluster`
-
- ### Other conventions
-
- * All requests and responses are in JSON and should have their `content-type` header set to `application/json`
- * Every kind has a lower-cased name (e.g. `virtual-cluster` for the `VirtualCluster` kind) that is used in the endpoint
- path.
- * Errors have a standard format:
- * The HTTP status code is used to indicate the type of error.
- * The response body contains a common JSON object for every error:
- * `title`: a unique error code for the error.
- * `message`: a human-readable message for the error.
- * `cause`: additional information about the error.
- * All timestamps are in ISO 8601 format.
-
-- name: token
- description: |+
- ### Definition
-
- The token group contains just a utility endpoint to generate a token for a given Local ServiceAccount (on a given
- virtual cluster, or `passthrough` if omitted).
-
- This token can be used to authenticate against the Gateway API in the `sasl_plaintext` authentication mode.
- More information on this case here : https://docs.conduktor.io/gateway/concepts/Clients/#sasl_plaintext
-
- ### Available operations
-
- * Generate a token
-
- ### Identity
-
- N/A.
-
-- name: cli_virtual-cluster_gateway_v2_7
- description: |+
- ### Definition
-
- https://docs.conduktor.io/gateway/concepts/Virtual%20Cluster/
-
- ### Available operations
-
- * List virtual clusters
- * Get a virtual cluster
- * Upsert a virtual cluster
- * Delete a virtual cluster
-
- ### Identity
-
- A virtual cluster is identified by the `name`.
-
- ### Schema
-
-
-
-
- x-displayName: virtual-cluster
-- name: cli_alias-topic_gateway_v2_8
- description: |+
- ### Definition
-
- https://docs.conduktor.io/gateway/concepts/Logical_topics/Alias%20topics/
-
- ### Available operations
-
- * List alias topics
- * Upsert an alias topic
- * Delete an alias topic
-
- ### Identity
-
- An alias topic is identified by the `name` inside a `vCluster` (`passthrough` if omitted).
-
- ### Schema
-
-
-
-
- x-displayName: alias-topic
-- name: cli_concentrated-topic_gateway_v2_0
- description: |+
- ### Definition
-
- https://docs.conduktor.io/gateway/concepts/Logical_topics/Concentration/
-
- ### Available operations
-
- * List concentrated topics
-
- Concentrated topics are created when a concentration rule is applied. They are not created or deleted directly by the API.
-
- ### Identity
-
- A concentrated topic is identified by the `name` and the `vCluster` (`passthrough` if omitted).
-
- ### Schema
-
-
-
-
- x-displayName: concentrated-topic
-- name: cli_concentration-rule_gateway_v2_9
- description: |+
- ### Definition
-
- https://docs.conduktor.io/gateway/concepts/Logical_topics/Concentration/
-
- ### Available operations
-
- * List concentration rules
- * Get a concentration rule
- * Upsert a concentration rule
- * Delete a concentration rule
-
-
- ### Identity
-
- A concentration rule is identified by its `name` inside a `vCluster`.
-
- ### Schema
-
-
-
-
- x-displayName: concentration-rule
-- name: cli_interceptor_gateway_v2_12
- description: |+
- ### Definition
-
- https://docs.conduktor.io/gateway/concepts/Interceptors-and-plugins/
-
- ### Available operations
-
- * List the interceptors
- * Get an interceptor
- * Upsert an interceptor
- * Delete an interceptor
-
- ### Identity
-
- An interceptor is identified by its `name` and its `scope`.
- The `scope` is itself composed of 3 optional fields `vCluster`, `group`, `username`.
- A __global__ interceptor is an interceptor whose `scope` has its fields empty.
-
- ### Schema
-
-
-
-
- x-displayName: interceptor
-- name: plugin
- description: |+
- ### Definition
-
- https://docs.conduktor.io/gateway/concepts/Interceptors-and-plugins/
-
- ### Available operations
-
- * List the available plugins of the Gateway
-
- ### Identity
-
- A plugin is identified by its `pluginId`.
-
- The list of plugins is fixed for a given Gateway instance.
- The list is fixed and cannot be modified.
-
- ### Schema
-
-
-
-
-- name: cli_gateway-service-account_gateway_v2_11
- description: |+
- ### Definition
-
- https://docs.conduktor.io/gateway/concepts/GatewayUser/
-
- ### Available operations
-
- * List service accounts
- * Upsert a service account
- * Delete a service account
-
- ### Identity
-
- The service account is identified by the `name` and the `vCluster`.
-
- The `vCluster` name is not mandatory, but if omitted, the `passthrough` virtual cluster will be used.
- Thus, a service account is always associated with one and only one virtual cluster.
-
- ### Local and external service accounts
-
- A service account can be `Local` or `External`.
-
- * A `Local` service account is just a local user that allows to generate Gateway tokens for your Kafka client
- applications (SASL).
- * An `External` service account is a user that is authenticated by an external system (OIDC). In such a
- scenario you will only need to create external service accounts in 2 cases : either to rename the OIDC principal
- for you Kafka applications OR to gather service accounts into `Groups`. Gateway Tokens are not issued for external
- service accounts since the authentication must be done by the external system.
-
- To create an external service account you must provide have an `principal` that is the name of the user in the
- external system.
- It can be equal or not to the service account `name` (up to you), but note that __the `principal` must be unique
- across all virtual clusters__.
-
- ### Schema
-
-
-
-
- x-displayName: service-account
-- name: cli_gateway-group_gateway_v2_10
- description: |+
- ### Definition
-
- Groups a defined by name a allow to regroup Gateway users in order to apply interceptors rules.
-
- ### Available operations
-
- * List groups
- * Get a group
- * Upsert a group
- * Delete a group
-
- ### Identity
-
- The group is identified by its `name` (unique across all the virtual clusters).
-
- A group can be added external groups (coming from LDAP, OIDC claims etc.) which will allow the Gateway to bind them on the Gateway Group.
-
- ### Schema
-
-
-
-
- x-displayName: group
+ - name: Introduction
+ description: |
+ The Conduktor Gateway REST API 's aim is to help you configure your Gateway.
+
+ The legacy (v1) API is available but deprecated ([V1 documentation](./?apiVersion=v1)).
+
+ Get started with Conduktor Gateway [self-hosted](https://docs.conduktor.io/gateway/installation/) today. Setup takes only a few minutes.
+ - name: Authentication
+ description: |-
+ Authentication to the API requires a basic authentication.
+
+ To get a token and use it you must go through the following steps:
+
+ * Configure the admin password in the Gateway YAML configuration file.
+
+ * Use the password in the **authorization** header of your requests.
+
+ Example:
+
+ ```shell
+ curl -X GET "https://your.gateway-api.host/gateway/v2/virtual-cluster" \
+ -H "accept: application/json" \
+ --user "admin:password"
+ ```
+ - name: Kinds
+ description: |
+ ### Definition
+
+ Kinds the resource types of the Conduktor gateway.
+
+ ### Conduktor Gateway Kinds
+
+ The following kinds are available in the Conduktor Gateway API:
+
+ * `VirtualCluster`
+ * `AliasTopic`
+ * `ConcentratedTopic`
+ * `ConcentrationRule`
+ * `Interceptor`
+ * `Plugin`
+ * `GatewayServiceAccount`
+ * `Token`
+ * `GatewayGroup`
+ - name: Api Groups
+ description: |+
+ ### Definition
+
+ API groups a set of resources that share the same API path prefix. They are used to organize the API endpoints and the
+ resources they manage.
+ The versioning is set at this level, so all the resources in the same group share the same version.
+
+ ### Conduktor Api Groups
+
+ The Gateway API consist of a single API group right now (`gateway`), and it manages the following resources:
+
+ | Api Group | Version | Kinds |
+ |------------|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
+ | `/gateway` | `/v2` | `/virtual-cluster`, `/alias-topic`, `/concentrated-topic`, `/concentration-rule`, `/interceptor`, `/plugin`, `/service-account`, `/group`, `/token` |
+
+
+
+ - name: Versioning
+ description: |+
+ * __The version is set at the api group level__. It is incremented when a breaking change happens in the schema of an endpoint of the group (that has been marked `stable`). The n-1 version is still available for a while to allow users to migrate. The version is part of the endpoint path.
+ * The API version (v2) is the global version of the Conduktor Gateway API, it should not change unless there is a complete overhaul of the API.
+
+
+ Endpoint also have a status to manage their API lifecycle, following the order below:
+ * __preview__: this is an early-stage feature, really likely to change
+ * __beta__: early access feature, breaking change
+ * __stable__: Production-ready endpoint, no breaking change
+ * __deprecated__: This endpoint isn't supported anymore and the user should migrate
+
+
+ - name: Conventions
+ description: |+
+ ### Path conventions
+
+ The API follows as much as possible the endpoints structure below for each kind of resource:
+
+ * `GET /{api-group}/{version}/{kind}/{name}` to read a resource
+ * `GET /{api-group}/{version}/{kind}` to list resources of a kind
+ * `PUT /{api-group}/{version}/{kind}` to update or create a resource
+ * `DELETE /{api-group}/{version}/{kind}/{name}` to delete a resource (returns 204 No Content)
+ * `POST` is used for specific operations that don't fit this CRUD model. PUT is the default verb for updates and
+ creations.
+ * Important principle: the result of a GET can be reused as the body of a PUT to update the resource.
+
+ __Non-unique names__:
+ When a `name` is not enough to uniquely identify a resource, the GET and DELETE endpoint are different
+ The GET by name is replaced by query parameters (returning lists or the searched item if the criteria are the elements
+ of the key), and the DELETE by name is replaced by a DELETE with a body.
+ For example, an `alias-topic` is identified by its `name` and the `vCluster` gives the following endpoints:
+
+ * `GET /gateway/v2/alias-topic?name={name}&vcluster={vcluster}`
+ * `PUT /gateway/v2/alias-topic`
+ * `DELETE /gateway/v2/alias-topic` with a body containing the `name` and the `vCluster`
+
+ ### Other conventions
+
+ * All requests and responses are in JSON and should have their `content-type` header set to `application/json`
+ * Every kind has a lower-cased name (e.g. `virtual-cluster` for the `VirtualCluster` kind) that is used in the endpoint
+ path.
+ * Errors have a standard format:
+ * The HTTP status code is used to indicate the type of error.
+ * The response body contains a common JSON object for every error:
+ * `title`: a unique error code for the error.
+ * `message`: a human-readable message for the error.
+ * `cause`: additional information about the error.
+ * All timestamps are in ISO 8601 format.
+
+ - name: token
+ description: |+
+ ### Definition
+
+ The token group contains just a utility endpoint to generate a token for a given Local ServiceAccount (on a given
+ virtual cluster, or `passthrough` if omitted).
+
+ This token can be used to authenticate against the Gateway API in the `sasl_plaintext` authentication mode.
+ More information on this case here : https://docs.conduktor.io/gateway/concepts/Clients/#sasl_plaintext
+
+ ### Available operations
+
+ * Generate a token
+
+ ### Identity
+
+ N/A.
+
+ - name: cli_virtual-cluster_gateway_v2_7
+ description: |+
+ ### Definition
+
+ https://docs.conduktor.io/gateway/concepts/Virtual%20Cluster/
+
+ ### Available operations
+
+ * List virtual clusters
+ * Get a virtual cluster
+ * Upsert a virtual cluster
+ * Delete a virtual cluster
+
+ ### Identity
+
+ A virtual cluster is identified by the `name`.
+
+ ### Schema
+
+
+
+
+ x-displayName: virtual-cluster
+ - name: cli_alias-topic_gateway_v2_8
+ description: |+
+ ### Definition
+
+ https://docs.conduktor.io/gateway/concepts/Logical_topics/Alias%20topics/
+
+ ### Available operations
+
+ * List alias topics
+ * Upsert an alias topic
+ * Delete an alias topic
+
+ ### Identity
+
+ An alias topic is identified by the `name` inside a `vCluster` (`passthrough` if omitted).
+
+ ### Schema
+
+
+
+
+ x-displayName: alias-topic
+ - name: cli_concentrated-topic_gateway_v2_0
+ description: |+
+ ### Definition
+
+ https://docs.conduktor.io/gateway/concepts/Logical_topics/Concentration/
+
+ ### Available operations
+
+ * List concentrated topics
+
+ Concentrated topics are created when a concentration rule is applied. They are not created or deleted directly by the API.
+
+ ### Identity
+
+ A concentrated topic is identified by the `name` and the `vCluster` (`passthrough` if omitted).
+
+ ### Schema
+
+
+
+
+ x-displayName: concentrated-topic
+ - name: cli_concentration-rule_gateway_v2_9
+ description: |+
+ ### Definition
+
+ https://docs.conduktor.io/gateway/concepts/Logical_topics/Concentration/
+
+ ### Available operations
+
+ * List concentration rules
+ * Get a concentration rule
+ * Upsert a concentration rule
+ * Delete a concentration rule
+
+
+ ### Identity
+
+ A concentration rule is identified by its `name` inside a `vCluster`.
+
+ ### Schema
+
+
+
+
+ x-displayName: concentration-rule
+ - name: cli_interceptor_gateway_v2_12
+ description: |+
+ ### Definition
+
+ https://docs.conduktor.io/gateway/concepts/Interceptors-and-plugins/
+
+ ### Available operations
+
+ * List the interceptors
+ * Get an interceptor
+ * Upsert an interceptor
+ * Delete an interceptor
+
+ ### Identity
+
+ An interceptor is identified by its `name` and its `scope`.
+ The `scope` is itself composed of 3 optional fields `vCluster`, `group`, `username`.
+ A __global__ interceptor is an interceptor whose `scope` has its fields empty.
+
+ ### Schema
+
+
+
+
+ x-displayName: interceptor
+ - name: plugin
+ description: |+
+ ### Definition
+
+ https://docs.conduktor.io/gateway/concepts/Interceptors-and-plugins/
+
+ ### Available operations
+
+ * List the available plugins of the Gateway
+
+ ### Identity
+
+ A plugin is identified by its `pluginId`.
+
+ The list of plugins is fixed for a given Gateway instance.
+ The list is fixed and cannot be modified.
+
+ ### Schema
+
+
+
+
+ - name: cli_gateway-service-account_gateway_v2_11
+ description: |+
+ ### Definition
+
+ https://docs.conduktor.io/gateway/concepts/GatewayUser/
+
+ ### Available operations
+
+ * List service accounts
+ * Upsert a service account
+ * Delete a service account
+
+ ### Identity
+
+ The service account is identified by the `name` and the `vCluster`.
+
+ The `vCluster` name is not mandatory, but if omitted, the `passthrough` virtual cluster will be used.
+ Thus, a service account is always associated with one and only one virtual cluster.
+
+ ### Local and external service accounts
+
+ A service account can be `Local` or `External`.
+
+ * A `Local` service account is just a local user that allows to generate Gateway tokens for your Kafka client
+ applications (SASL).
+ * An `External` service account is a user that is authenticated by an external system (OIDC). In such a
+ scenario you will only need to create external service accounts in 2 cases : either to rename the OIDC principal
+ for you Kafka applications OR to gather service accounts into `Groups`. Gateway Tokens are not issued for external
+ service accounts since the authentication must be done by the external system.
+
+ To create an external service account you must provide have an `principal` that is the name of the user in the
+ external system.
+ It can be equal or not to the service account `name` (up to you), but note that __the `principal` must be unique
+ across all virtual clusters__.
+
+ ### Schema
+
+
+
+
+ x-displayName: service-account
+ - name: cli_gateway-group_gateway_v2_10
+ description: |+
+ ### Definition
+
+ Groups a defined by name a allow to regroup Gateway users in order to apply interceptors rules.
+
+ ### Available operations
+
+ * List groups
+ * Get a group
+ * Upsert a group
+ * Delete a group
+
+ ### Identity
+
+ The group is identified by its `name` (unique across all the virtual clusters).
+
+ A group can be added external groups (coming from LDAP, OIDC claims etc.) which will allow the Gateway to bind them on the Gateway Group.
+
+ ### Schema
+
+
+
+
+ x-displayName: group
paths:
/gateway/v2/token:
post:
tags:
- - token
+ - token
description: |2+
@@ -417,20 +419,20 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request POST \
- --url 'http://localhost:8888/gateway/v2/token' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{"vCluster":"vcluster1","username":"user1","lifeTimeSeconds":3600000}'
+ - lang: Shell
+ source: |-
+ curl \
+ --request POST \
+ --url 'http://localhost:8888/gateway/v2/token' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{"vCluster":"vcluster1","username":"user1","lifeTimeSeconds":3600000}'
/gateway/v2/virtual-cluster:
get:
tags:
- - cli_virtual-cluster_gateway_v2_7
+ - cli_virtual-cluster_gateway_v2_7
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -449,16 +451,15 @@ paths:
items:
$ref: '#/components/schemas/VirtualCluster'
example:
- - kind: VirtualCluster
- apiVersion: gateway/v2
- metadata:
- name: vcluster1
- spec:
- prefix: vcluster1
- aclEnabled: false
- superUsers:
- - username1
- - username2
+ - kind: VirtualCluster
+ apiVersion: gateway/v2
+ metadata:
+ name: vcluster1
+ spec:
+ aclEnabled: false
+ superUsers:
+ - username1
+ - username2
'401':
description: The given credentials are not valid
content:
@@ -476,17 +477,17 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/virtual-cluster' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/virtual-cluster' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
put:
tags:
- - cli_virtual-cluster_gateway_v2_7
+ - cli_virtual-cluster_gateway_v2_7
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -495,14 +496,14 @@ paths:
operationId: Upsert a virtual cluster
parameters:
- - name: dryMode
- in: query
- description: If true, the operation will be simulated and no changes will
- be made
- required: false
- schema:
- default: false
- type: boolean
+ - name: dryMode
+ in: query
+ description: If true, the operation will be simulated and no changes will
+ be made
+ required: false
+ schema:
+ default: false
+ type: boolean
requestBody:
content:
application/json:
@@ -514,11 +515,10 @@ paths:
metadata:
name: vcluster1
spec:
- prefix: vcluster1
aclEnabled: false
superUsers:
- - username1
- - username2
+ - username1
+ - username2
required: true
responses:
'200':
@@ -534,11 +534,10 @@ paths:
metadata:
name: vcluster1
spec:
- prefix: vcluster1
aclEnabled: false
superUsers:
- - username1
- - username2
+ - username1
+ - username2
upsertResult: Updated
'400':
description: Wrong format or usage of reserved keywords (e.g. passthrough)
@@ -573,34 +572,33 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request PUT \
- --url 'http://localhost:8888/gateway/v2/virtual-cluster?dryMode=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "kind" : "VirtualCluster",
- "apiVersion" : "gateway/v2",
- "metadata" : {
- "name" : "vcluster1"
- },
- "spec" : {
- "prefix" : "vcluster1",
- "aclEnabled" : false,
- "superUsers" : [
- "username1",
- "username2"
- ]
- }
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request PUT \
+ --url 'http://localhost:8888/gateway/v2/virtual-cluster?dryMode=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "kind" : "VirtualCluster",
+ "apiVersion" : "gateway/v2",
+ "metadata" : {
+ "name" : "vcluster1"
+ },
+ "spec" : {
+ "aclEnabled" : false,
+ "superUsers" : [
+ "username1",
+ "username2"
+ ]
+ }
+ }'
/gateway/v2/virtual-cluster/{vCluster}:
get:
tags:
- - cli_virtual-cluster_gateway_v2_7
+ - cli_virtual-cluster_gateway_v2_7
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -609,12 +607,12 @@ paths:
operationId: Get a virtual cluster
parameters:
- - name: vCluster
- in: path
- description: The name of the virtual cluster
- required: true
- schema:
- type: string
+ - name: vCluster
+ in: path
+ description: The name of the virtual cluster
+ required: true
+ schema:
+ type: string
responses:
'200':
description: ''
@@ -628,11 +626,10 @@ paths:
metadata:
name: vcluster1
spec:
- prefix: vcluster1
aclEnabled: false
superUsers:
- - username1
- - username2
+ - username1
+ - username2
'401':
description: The given credentials are not valid
content:
@@ -658,17 +655,17 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/virtual-cluster/vcluster1' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/virtual-cluster/vcluster1' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
delete:
tags:
- - cli_virtual-cluster_gateway_v2_7
+ - cli_virtual-cluster_gateway_v2_7
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -677,12 +674,12 @@ paths:
operationId: Delete a virtual cluster
parameters:
- - name: vCluster
- in: path
- description: The name of the virtual cluster
- required: true
- schema:
- type: string
+ - name: vCluster
+ in: path
+ description: The name of the virtual cluster
+ required: true
+ schema:
+ type: string
responses:
'204':
description: ''
@@ -729,18 +726,18 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request DELETE \
- --url 'http://localhost:8888/gateway/v2/virtual-cluster/vcluster1' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request DELETE \
+ --url 'http://localhost:8888/gateway/v2/virtual-cluster/vcluster1' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
/gateway/v2/alias-topic:
get:
tags:
- - cli_alias-topic_gateway_v2_8
+ - cli_alias-topic_gateway_v2_8
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -749,26 +746,26 @@ paths:
operationId: List the alias topics
parameters:
- - name: vcluster
- in: query
- description: The virtual cluster filter
- required: false
- schema:
- type: string
- - name: name
- in: query
- description: The name filter
- required: false
- schema:
- type: string
- - name: showDefaults
- in: query
- description: Whether to show default values or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: vcluster
+ in: query
+ description: The virtual cluster filter
+ required: false
+ schema:
+ type: string
+ - name: name
+ in: query
+ description: The name filter
+ required: false
+ schema:
+ type: string
+ - name: showDefaults
+ in: query
+ description: Whether to show default values or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
responses:
'200':
description: ''
@@ -779,13 +776,13 @@ paths:
items:
$ref: '#/components/schemas/AliasTopic'
example:
- - kind: AliasTopic
- apiVersion: gateway/v2
- metadata:
- name: name1
- vCluster: vCluster1
- spec:
- physicalName: physicalName1
+ - kind: AliasTopic
+ apiVersion: gateway/v2
+ metadata:
+ name: name1
+ vCluster: vCluster1
+ spec:
+ physicalName: physicalName1
'400':
description: The request is not valid
content:
@@ -819,17 +816,17 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/alias-topic?showDefaults=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/alias-topic?showDefaults=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
put:
tags:
- - cli_alias-topic_gateway_v2_8
+ - cli_alias-topic_gateway_v2_8
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -838,14 +835,14 @@ paths:
operationId: Upsert an alias topic
parameters:
- - name: dryMode
- in: query
- description: Whether to simulate the operation or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: dryMode
+ in: query
+ description: Whether to simulate the operation or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
requestBody:
content:
application/json:
@@ -910,29 +907,29 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request PUT \
- --url 'http://localhost:8888/gateway/v2/alias-topic?dryMode=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "kind" : "AliasTopic",
- "apiVersion" : "gateway/v2",
- "metadata" : {
- "name" : "name1",
- "vCluster" : "vCluster1"
- },
- "spec" : {
- "physicalName" : "physicalName1"
- }
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request PUT \
+ --url 'http://localhost:8888/gateway/v2/alias-topic?dryMode=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "kind" : "AliasTopic",
+ "apiVersion" : "gateway/v2",
+ "metadata" : {
+ "name" : "name1",
+ "vCluster" : "vCluster1"
+ },
+ "spec" : {
+ "physicalName" : "physicalName1"
+ }
+ }'
delete:
tags:
- - cli_alias-topic_gateway_v2_8
+ - cli_alias-topic_gateway_v2_8
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -982,23 +979,23 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request DELETE \
- --url 'http://localhost:8888/gateway/v2/alias-topic' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "name" : "name1",
- "vCluster" : "vCluster1"
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request DELETE \
+ --url 'http://localhost:8888/gateway/v2/alias-topic' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "name" : "name1",
+ "vCluster" : "vCluster1"
+ }'
/gateway/v2/concentrated-topic:
get:
tags:
- - cli_concentrated-topic_gateway_v2_0
+ - cli_concentrated-topic_gateway_v2_0
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1007,26 +1004,26 @@ paths:
operationId: List the concentrated topics
parameters:
- - name: vcluster
- in: query
- description: The virtual cluster filter
- required: false
- schema:
- type: string
- - name: name
- in: query
- description: The name filter
- required: false
- schema:
- type: string
- - name: showDefaults
- in: query
- description: Whether to show default values or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: vcluster
+ in: query
+ description: The virtual cluster filter
+ required: false
+ schema:
+ type: string
+ - name: name
+ in: query
+ description: The name filter
+ required: false
+ schema:
+ type: string
+ - name: showDefaults
+ in: query
+ description: Whether to show default values or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
responses:
'200':
description: ''
@@ -1037,13 +1034,13 @@ paths:
items:
$ref: '#/components/schemas/ConcentratedTopic'
example:
- - kind: ConcentratedTopic
- apiVersion: gateway/v2
- metadata:
- name: name1
- vCluster: vCluster1
- spec:
- physicalName: physicalName1
+ - kind: ConcentratedTopic
+ apiVersion: gateway/v2
+ metadata:
+ name: name1
+ vCluster: vCluster1
+ spec:
+ physicalName: physicalName1
'400':
description: The request is not valid
content:
@@ -1077,18 +1074,18 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/concentrated-topic?showDefaults=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/concentrated-topic?showDefaults=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
/gateway/v2/concentration-rule:
get:
tags:
- - cli_concentration-rule_gateway_v2_9
+ - cli_concentration-rule_gateway_v2_9
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1097,26 +1094,26 @@ paths:
operationId: List the concentration rules
parameters:
- - name: vcluster
- in: query
- description: The virtual cluster filter
- required: false
- schema:
- type: string
- - name: name
- in: query
- description: The name filter
- required: false
- schema:
- type: string
- - name: showDefaults
- in: query
- description: Whether to show default values or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: vcluster
+ in: query
+ description: The virtual cluster filter
+ required: false
+ schema:
+ type: string
+ - name: name
+ in: query
+ description: The name filter
+ required: false
+ schema:
+ type: string
+ - name: showDefaults
+ in: query
+ description: Whether to show default values or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
responses:
'200':
description: ''
@@ -1127,17 +1124,18 @@ paths:
items:
$ref: '#/components/schemas/ConcentrationRule'
example:
- - kind: ConcentrationRule
- apiVersion: gateway/v2
- metadata:
- name: concentrationRule1
- vCluster: vCluster1
- spec:
- logicalTopicNamePattern: topic.*
- physicalTopicName: physicalTopicName
- physicalTopicNameCompacted: physicalTopicNameCompacted
- physicalTopicNameCompactedDeleted: physicalTopicNameCompactedDeleted
- autoManaged: false
+ - kind: ConcentrationRule
+ apiVersion: gateway/v2
+ metadata:
+ name: concentrationRule1
+ vCluster: vCluster1
+ spec:
+ pattern: topic.*
+ physicalTopics:
+ delete: topic
+ compact: compact_topic
+ deleteCompact: compact_delete_topic
+ autoManaged: false
'400':
description: The request is not valid
content:
@@ -1171,17 +1169,17 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/concentration-rule?showDefaults=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/concentration-rule?showDefaults=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
put:
tags:
- - cli_concentration-rule_gateway_v2_9
+ - cli_concentration-rule_gateway_v2_9
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1190,14 +1188,14 @@ paths:
operationId: Upsert a concentration rule
parameters:
- - name: dryMode
- in: query
- description: Whether to simulate the operation or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: dryMode
+ in: query
+ description: Whether to simulate the operation or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
requestBody:
content:
application/json:
@@ -1210,10 +1208,11 @@ paths:
name: concentrationRule1
vCluster: vCluster1
spec:
- logicalTopicNamePattern: topic.*
- physicalTopicName: physicalTopicName
- physicalTopicNameCompacted: physicalTopicNameCompacted
- physicalTopicNameCompactedDeleted: physicalTopicNameCompactedDeleted
+ pattern: topic.*
+ physicalTopics:
+ delete: topic
+ compact: compact_topic
+ deleteCompact: compact_delete_topic
autoManaged: false
required: true
responses:
@@ -1231,10 +1230,11 @@ paths:
name: concentrationRule1
vCluster: vCluster1
spec:
- logicalTopicNamePattern: topic.*
- physicalTopicName: physicalTopicName
- physicalTopicNameCompacted: physicalTopicNameCompacted
- physicalTopicNameCompactedDeleted: physicalTopicNameCompactedDeleted
+ pattern: topic.*
+ physicalTopics:
+ delete: topic
+ compact: compact_topic
+ deleteCompact: compact_delete_topic
autoManaged: false
upsertResult: Created
'400':
@@ -1270,33 +1270,35 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request PUT \
- --url 'http://localhost:8888/gateway/v2/concentration-rule?dryMode=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "kind" : "ConcentrationRule",
- "apiVersion" : "gateway/v2",
- "metadata" : {
- "name" : "concentrationRule1",
- "vCluster" : "vCluster1"
- },
- "spec" : {
- "logicalTopicNamePattern" : "topic.*",
- "physicalTopicName" : "physicalTopicName",
- "physicalTopicNameCompacted" : "physicalTopicNameCompacted",
- "physicalTopicNameCompactedDeleted" : "physicalTopicNameCompactedDeleted",
- "autoManaged" : false
- }
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request PUT \
+ --url 'http://localhost:8888/gateway/v2/concentration-rule?dryMode=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "kind" : "ConcentrationRule",
+ "apiVersion" : "gateway/v2",
+ "metadata" : {
+ "name" : "concentrationRule1",
+ "vCluster" : "vCluster1"
+ },
+ "spec" : {
+ "pattern" : "topic.*",
+ "physicalTopics" : {
+ "delete" : "topic",
+ "compact" : "compact_topic",
+ "deleteCompact" : "compact_delete_topic"
+ },
+ "autoManaged" : false
+ }
+ }'
delete:
tags:
- - cli_concentration-rule_gateway_v2_9
+ - cli_concentration-rule_gateway_v2_9
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1349,23 +1351,23 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request DELETE \
- --url 'http://localhost:8888/gateway/v2/concentration-rule' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "name" : "concentrationRule1",
- "vCluster" : "vCluster1"
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request DELETE \
+ --url 'http://localhost:8888/gateway/v2/concentration-rule' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "name" : "concentrationRule1",
+ "vCluster" : "vCluster1"
+ }'
/gateway/v2/interceptor:
get:
tags:
- - cli_interceptor_gateway_v2_12
+ - cli_interceptor_gateway_v2_12
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1374,36 +1376,36 @@ paths:
operationId: List the interceptors
parameters:
- - name: name
- in: query
- description: Filter by name
- required: false
- schema:
- type: string
- - name: global
- in: query
- description: Keep only global interceptors
- required: false
- schema:
- type: boolean
- - name: vcluster
- in: query
- description: Filter by virtual cluster
- required: false
- schema:
- type: string
- - name: group
- in: query
- description: Filter by group
- required: false
- schema:
- type: string
- - name: username
- in: query
- description: Filter by service account
- required: false
- schema:
- type: string
+ - name: name
+ in: query
+ description: Filter by name
+ required: false
+ schema:
+ type: string
+ - name: global
+ in: query
+ description: Keep only global interceptors
+ required: false
+ schema:
+ type: boolean
+ - name: vcluster
+ in: query
+ description: Filter by virtual cluster
+ required: false
+ schema:
+ type: string
+ - name: group
+ in: query
+ description: Filter by group
+ required: false
+ schema:
+ type: string
+ - name: username
+ in: query
+ description: Filter by service account
+ required: false
+ schema:
+ type: string
responses:
'200':
description: ''
@@ -1415,20 +1417,20 @@ paths:
items:
$ref: '#/components/schemas/Interceptor'
example:
- - kind: Interceptor
- apiVersion: gateway/v2
- metadata:
- name: yellow_cars_filter
- scope:
- vCluster: vCluster1
- spec:
- comment: Filter yellow cars
- pluginClass: io.conduktor.gateway.interceptor.VirtualSqlTopicPlugin
- priority: 1
- config:
- virtualTopic: yellow_cars
- statement: SELECT '$.type' as type, '$.price' as price FROM cars
- WHERE '$.color' = 'yellow'
+ - kind: Interceptor
+ apiVersion: gateway/v2
+ metadata:
+ name: yellow_cars_filter
+ scope:
+ vCluster: vCluster1
+ spec:
+ comment: Filter yellow cars
+ pluginClass: io.conduktor.gateway.interceptor.VirtualSqlTopicPlugin
+ priority: 1
+ config:
+ virtualTopic: yellow_cars
+ statement: SELECT '$.type' as type, '$.price' as price FROM cars
+ WHERE '$.color' = 'yellow'
'400':
description: The request is not valid
content:
@@ -1454,17 +1456,17 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/interceptor?name=interceptor-name&global=true&vcluster=passthrough&group=group1&username=user1' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/interceptor?name=interceptor-name&global=true&vcluster=passthrough&group=group1&username=user1' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
put:
tags:
- - cli_interceptor_gateway_v2_12
+ - cli_interceptor_gateway_v2_12
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1473,14 +1475,14 @@ paths:
operationId: Upsert an interceptor
parameters:
- - name: dryMode
- in: query
- description: Whether to simulate the operation or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: dryMode
+ in: query
+ description: Whether to simulate the operation or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
requestBody:
content:
application/json:
@@ -1561,40 +1563,40 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request PUT \
- --url 'http://localhost:8888/gateway/v2/interceptor?dryMode=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "kind" : "Interceptor",
- "apiVersion" : "gateway/v2",
- "metadata" : {
- "name" : "yellow_cars_filter",
- "scope" : {
- "vCluster" : "vCluster1",
- "group" : null,
- "username" : null
- }
- },
- "spec" : {
- "comment" : "Filter yellow cars",
- "pluginClass" : "io.conduktor.gateway.interceptor.VirtualSqlTopicPlugin",
- "priority" : 1,
- "config" : {
- "virtualTopic" : "yellow_cars",
- "statement" : "SELECT \'$.type\' as type, \'$.price\' as price FROM cars WHERE \'$.color\' = \'yellow\'"
+ - lang: Shell
+ source: |-
+ curl \
+ --request PUT \
+ --url 'http://localhost:8888/gateway/v2/interceptor?dryMode=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "kind" : "Interceptor",
+ "apiVersion" : "gateway/v2",
+ "metadata" : {
+ "name" : "yellow_cars_filter",
+ "scope" : {
+ "vCluster" : "vCluster1",
+ "group" : null,
+ "username" : null
+ }
+ },
+ "spec" : {
+ "comment" : "Filter yellow cars",
+ "pluginClass" : "io.conduktor.gateway.interceptor.VirtualSqlTopicPlugin",
+ "priority" : 1,
+ "config" : {
+ "virtualTopic" : "yellow_cars",
+ "statement" : "SELECT \'$.type\' as type, \'$.price\' as price FROM cars WHERE \'$.color\' = \'yellow\'"
+ }
}
- }
- }'
+ }'
/gateway/v2/interceptor/{name}:
delete:
tags:
- - cli_interceptor_gateway_v2_12
+ - cli_interceptor_gateway_v2_12
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1603,11 +1605,11 @@ paths:
operationId: Delete an interceptor
parameters:
- - name: name
- in: path
- required: true
- schema:
- type: string
+ - name: name
+ in: path
+ required: true
+ schema:
+ type: string
requestBody:
content:
application/json:
@@ -1650,24 +1652,24 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request DELETE \
- --url 'http://localhost:8888/gateway/v2/interceptor/yellow_cars_filter' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "vCluster" : "vCluster1",
- "group" : null,
- "username" : null
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request DELETE \
+ --url 'http://localhost:8888/gateway/v2/interceptor/yellow_cars_filter' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "vCluster" : "vCluster1",
+ "group" : null,
+ "username" : null
+ }'
/gateway/v2/interceptor/resolve:
post:
tags:
- - cli_interceptor_gateway_v2_12
+ - cli_interceptor_gateway_v2_12
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1693,20 +1695,20 @@ paths:
items:
$ref: '#/components/schemas/Interceptor'
example:
- - kind: Interceptor
- apiVersion: gateway/v2
- metadata:
- name: yellow_cars_filter
- scope:
- vCluster: vCluster1
- spec:
- comment: Filter yellow cars
- pluginClass: io.conduktor.gateway.interceptor.VirtualSqlTopicPlugin
- priority: 1
- config:
- virtualTopic: yellow_cars
- statement: SELECT '$.type' as type, '$.price' as price FROM cars
- WHERE '$.color' = 'yellow'
+ - kind: Interceptor
+ apiVersion: gateway/v2
+ metadata:
+ name: yellow_cars_filter
+ scope:
+ vCluster: vCluster1
+ spec:
+ comment: Filter yellow cars
+ pluginClass: io.conduktor.gateway.interceptor.VirtualSqlTopicPlugin
+ priority: 1
+ config:
+ virtualTopic: yellow_cars
+ statement: SELECT '$.type' as type, '$.price' as price FROM cars
+ WHERE '$.color' = 'yellow'
'400':
description: The request is not valid
content:
@@ -1732,27 +1734,27 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request POST \
- --url 'http://localhost:8888/gateway/v2/interceptor/resolve' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "vCluster" : "passthrough",
- "groups" : [
- "group1",
- "group2"
- ],
- "username" : "user1"
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request POST \
+ --url 'http://localhost:8888/gateway/v2/interceptor/resolve' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "vCluster" : "passthrough",
+ "groups" : [
+ "group1",
+ "group2"
+ ],
+ "username" : "user1"
+ }'
/gateway/v2/plugin:
get:
tags:
- - plugin
+ - plugin
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -1771,56 +1773,56 @@ paths:
items:
$ref: '#/components/schemas/Plugin'
example:
- - plugin: io.conduktor.gateway.interceptor.chaos.SimulateSlowProducersConsumersPlugin
- pluginId: io.conduktor.gateway.interceptor.chaos.SimulateSlowProducersConsumersPlugin
- readme: |2+
+ - plugin: io.conduktor.gateway.interceptor.chaos.SimulateSlowProducersConsumersPlugin
+ pluginId: io.conduktor.gateway.interceptor.chaos.SimulateSlowProducersConsumersPlugin
+ readme: |2+
+
+ ---
+ version: ${project.version}
+ title: Simulate slow producers and consumers
+ description: Validate your application behaves correctly when there are delays in responses from the Kafka cluster.
+ parent: console
+ license: enterprise
+ ---
+
+ ## Introduction
+
+ This interceptor slows responses from the brokers.
+
+ It will operate only on a set of topics rather than all traffic.
+
+ This interceptor only works on Produce requests and Fetch requests.
+
+ ## Configuration
+
+ | key | type | default | description |
+ |:--------------|:--------|:--------|:----------------------------------------------------------------|
+ | topic | String | `.*` | Topics that match this regex will have the interceptor applied. |
+ | rateInPercent | int | | The percentage of requests that will apply this interceptor |
+ | minLatencyMs | int | | Minimum for the random response latency in milliseconds |
+ | maxLatencyMs | int | | Maximum for the random response latency in milliseconds |
+
+ ## Example
+
+ ```json
+ {
+ "name": "mySimulateSlowProducersConsumersInterceptor",
+ "pluginClass": "io.conduktor.gateway.interceptor.chaos.SimulateSlowProducersConsumersPlugin",
+ "priority": 100,
+ "config": {
+ "rateInPercent": 100,
+ "minLatencyMs": 50,
+ "maxLatencyMs": 1200
+ }
+ }
+ ```
- ---
- version: ${project.version}
- title: Simulate slow producers and consumers
- description: Validate your application behaves correctly when there are delays in responses from the Kafka cluster.
- parent: console
+ parent: Console
license: enterprise
- ---
-
- ## Introduction
-
- This interceptor slows responses from the brokers.
-
- It will operate only on a set of topics rather than all traffic.
-
- This interceptor only works on Produce requests and Fetch requests.
-
- ## Configuration
-
- | key | type | default | description |
- |:--------------|:--------|:--------|:----------------------------------------------------------------|
- | topic | String | `.*` | Topics that match this regex will have the interceptor applied. |
- | rateInPercent | int | | The percentage of requests that will apply this interceptor |
- | minLatencyMs | int | | Minimum for the random response latency in milliseconds |
- | maxLatencyMs | int | | Maximum for the random response latency in milliseconds |
-
- ## Example
-
- ```json
- {
- "name": "mySimulateSlowProducersConsumersInterceptor",
- "pluginClass": "io.conduktor.gateway.interceptor.chaos.SimulateSlowProducersConsumersPlugin",
- "priority": 100,
- "config": {
- "rateInPercent": 100,
- "minLatencyMs": 50,
- "maxLatencyMs": 1200
- }
- }
- ```
-
- parent: Console
- license: enterprise
- description: Validate your application behaves correctly when broker
- errors occur.
- title: Broker errors
- version: 3.0.1
+ description: Validate your application behaves correctly when broker
+ errors occur.
+ title: Broker errors
+ version: 3.0.1
'401':
description: The given credentials are not valid
content:
@@ -1838,18 +1840,18 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/plugin' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/plugin' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
/gateway/v2/service-account:
get:
tags:
- - cli_gateway-service-account_gateway_v2_11
+ - cli_gateway-service-account_gateway_v2_11
description: |2+
@@ -1859,32 +1861,32 @@ paths:
operationId: List the service accounts
parameters:
- - name: vcluster
- in: query
- description: Filter by virtual cluster
- required: false
- schema:
- type: string
- - name: name
- in: query
- description: Filter by name
- required: false
- schema:
- type: string
- - name: type
- in: query
- description: Filter by type (External or Local)
- required: false
- schema:
- type: string
- - name: showDefaults
- in: query
- description: Whether to show default values or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: vcluster
+ in: query
+ description: Filter by virtual cluster
+ required: false
+ schema:
+ type: string
+ - name: name
+ in: query
+ description: Filter by name
+ required: false
+ schema:
+ type: string
+ - name: type
+ in: query
+ description: Filter by type (External or Local)
+ required: false
+ schema:
+ type: string
+ - name: showDefaults
+ in: query
+ description: Whether to show default values or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
responses:
'200':
description: ''
@@ -1895,21 +1897,22 @@ paths:
items:
$ref: '#/components/schemas/GatewayServiceAccount'
example:
- - kind: GatewayServiceAccount
- apiVersion: gateway/v2
- metadata:
- name: user1
- vCluster: vcluster1
- spec:
- type: External
- principal: aliasUser1
- - kind: GatewayServiceAccount
- apiVersion: gateway/v2
- metadata:
- name: user1
- vCluster: vcluster1
- spec:
- type: Local
+ - kind: GatewayServiceAccount
+ apiVersion: gateway/v2
+ metadata:
+ name: user1
+ vCluster: vcluster1
+ spec:
+ type: External
+ externalNames:
+ - externalName
+ - kind: GatewayServiceAccount
+ apiVersion: gateway/v2
+ metadata:
+ name: user1
+ vCluster: vcluster1
+ spec:
+ type: Local
'400':
description: The request is not valid
content:
@@ -1935,17 +1938,17 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/service-account?vcluster=vCluster1&name=user1&type=External&showDefaults=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/service-account?vcluster=vCluster1&name=user1&type=External&showDefaults=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
put:
tags:
- - cli_gateway-service-account_gateway_v2_11
+ - cli_gateway-service-account_gateway_v2_11
description: |2+
@@ -1955,14 +1958,14 @@ paths:
operationId: Upsert a service account
parameters:
- - name: dryMode
- in: query
- description: Whether to simulate the operation or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: dryMode
+ in: query
+ description: Whether to simulate the operation or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
requestBody:
content:
application/json:
@@ -1976,7 +1979,8 @@ paths:
vCluster: vcluster1
spec:
type: External
- principal: aliasUser1
+ externalNames:
+ - externalName
required: true
responses:
'200':
@@ -1994,7 +1998,8 @@ paths:
vCluster: vcluster1
spec:
type: External
- principal: aliasUser1
+ externalNames:
+ - externalName
upsertResult: Created
'400':
description: The request is not valid
@@ -2039,30 +2044,32 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request PUT \
- --url 'http://localhost:8888/gateway/v2/service-account?dryMode=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "kind" : "GatewayServiceAccount",
- "apiVersion" : "gateway/v2",
- "metadata" : {
- "name" : "user1",
- "vCluster" : "vcluster1"
- },
- "spec" : {
- "type" : "External",
- "principal" : "aliasUser1"
- }
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request PUT \
+ --url 'http://localhost:8888/gateway/v2/service-account?dryMode=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "kind" : "GatewayServiceAccount",
+ "apiVersion" : "gateway/v2",
+ "metadata" : {
+ "name" : "user1",
+ "vCluster" : "vcluster1"
+ },
+ "spec" : {
+ "type" : "External",
+ "externalNames" : [
+ "externalName"
+ ]
+ }
+ }'
delete:
tags:
- - cli_gateway-service-account_gateway_v2_11
+ - cli_gateway-service-account_gateway_v2_11
description: |2+
@@ -2119,22 +2126,22 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request DELETE \
- --url 'http://localhost:8888/gateway/v2/service-account' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "name" : "user1"
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request DELETE \
+ --url 'http://localhost:8888/gateway/v2/service-account' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "name" : "user1"
+ }'
/gateway/v2/group:
get:
tags:
- - cli_gateway-group_gateway_v2_10
+ - cli_gateway-group_gateway_v2_10
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -2143,14 +2150,14 @@ paths:
operationId: List the groups
parameters:
- - name: showDefaults
- in: query
- description: Whether to show default values or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: showDefaults
+ in: query
+ description: Whether to show default values or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
responses:
'200':
description: ''
@@ -2161,21 +2168,21 @@ paths:
items:
$ref: '#/components/schemas/GatewayGroup'
example:
- - kind: GatewayGroup
- apiVersion: gateway/v2
- metadata:
- name: group1
- spec:
- members:
- - vCluster: vCluster1
- name: serviceAccount1
- - vCluster: vCluster2
- name: serviceAccount2
- - vCluster: vCluster3
- name: serviceAccount3
- externalGroups:
- - GROUP_READER
- - GROUP_WRITER
+ - kind: GatewayGroup
+ apiVersion: gateway/v2
+ metadata:
+ name: group1
+ spec:
+ members:
+ - vCluster: vCluster1
+ name: serviceAccount1
+ - vCluster: vCluster2
+ name: serviceAccount2
+ - vCluster: vCluster3
+ name: serviceAccount3
+ externalGroups:
+ - GROUP_READER
+ - GROUP_WRITER
'400':
description: 'Invalid value for: query parameter showDefaults'
content:
@@ -2199,17 +2206,17 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/group?showDefaults=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/group?showDefaults=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
put:
tags:
- - cli_gateway-group_gateway_v2_10
+ - cli_gateway-group_gateway_v2_10
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -2218,14 +2225,14 @@ paths:
operationId: Upsert a group
parameters:
- - name: dryMode
- in: query
- description: Whether to simulate the operation or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: dryMode
+ in: query
+ description: Whether to simulate the operation or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
requestBody:
content:
application/json:
@@ -2238,15 +2245,15 @@ paths:
name: group1
spec:
members:
- - vCluster: vCluster1
- name: serviceAccount1
- - vCluster: vCluster2
- name: serviceAccount2
- - vCluster: vCluster3
- name: serviceAccount3
+ - vCluster: vCluster1
+ name: serviceAccount1
+ - vCluster: vCluster2
+ name: serviceAccount2
+ - vCluster: vCluster3
+ name: serviceAccount3
externalGroups:
- - GROUP_READER
- - GROUP_WRITER
+ - GROUP_READER
+ - GROUP_WRITER
required: true
responses:
'200':
@@ -2263,15 +2270,15 @@ paths:
name: group1
spec:
members:
- - vCluster: vCluster1
- name: serviceAccount1
- - vCluster: vCluster2
- name: serviceAccount2
- - vCluster: vCluster3
- name: serviceAccount3
+ - vCluster: vCluster1
+ name: serviceAccount1
+ - vCluster: vCluster2
+ name: serviceAccount2
+ - vCluster: vCluster3
+ name: serviceAccount3
externalGroups:
- - GROUP_READER
- - GROUP_WRITER
+ - GROUP_READER
+ - GROUP_WRITER
upsertResult: Updated
'400':
description: The request is not valid
@@ -2306,46 +2313,46 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request PUT \
- --url 'http://localhost:8888/gateway/v2/group?dryMode=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'Content-Type: application/json' \
- --data-raw '{
- "kind" : "GatewayGroup",
- "apiVersion" : "gateway/v2",
- "metadata" : {
- "name" : "group1"
- },
- "spec" : {
- "members" : [
- {
- "vCluster" : "vCluster1",
- "name" : "serviceAccount1"
- },
- {
- "vCluster" : "vCluster2",
- "name" : "serviceAccount2"
- },
- {
- "vCluster" : "vCluster3",
- "name" : "serviceAccount3"
- }
- ],
- "externalGroups" : [
- "GROUP_READER",
- "GROUP_WRITER"
- ]
- }
- }'
+ - lang: Shell
+ source: |-
+ curl \
+ --request PUT \
+ --url 'http://localhost:8888/gateway/v2/group?dryMode=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y' \
+ --header 'Content-Type: application/json' \
+ --data-raw '{
+ "kind" : "GatewayGroup",
+ "apiVersion" : "gateway/v2",
+ "metadata" : {
+ "name" : "group1"
+ },
+ "spec" : {
+ "members" : [
+ {
+ "vCluster" : "vCluster1",
+ "name" : "serviceAccount1"
+ },
+ {
+ "vCluster" : "vCluster2",
+ "name" : "serviceAccount2"
+ },
+ {
+ "vCluster" : "vCluster3",
+ "name" : "serviceAccount3"
+ }
+ ],
+ "externalGroups" : [
+ "GROUP_READER",
+ "GROUP_WRITER"
+ ]
+ }
+ }'
/gateway/v2/group/{name}:
get:
tags:
- - cli_gateway-group_gateway_v2_10
+ - cli_gateway-group_gateway_v2_10
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -2354,19 +2361,19 @@ paths:
operationId: Get a group
parameters:
- - name: name
- in: path
- required: true
- schema:
- type: string
- - name: showDefaults
- in: query
- description: Whether to show default values or not
- required: false
- schema:
- default: false
- type: boolean
- example: true
+ - name: name
+ in: path
+ required: true
+ schema:
+ type: string
+ - name: showDefaults
+ in: query
+ description: Whether to show default values or not
+ required: false
+ schema:
+ default: false
+ type: boolean
+ example: true
responses:
'200':
description: ''
@@ -2381,15 +2388,15 @@ paths:
name: group1
spec:
members:
- - vCluster: vCluster1
- name: serviceAccount1
- - vCluster: vCluster2
- name: serviceAccount2
- - vCluster: vCluster3
- name: serviceAccount3
+ - vCluster: vCluster1
+ name: serviceAccount1
+ - vCluster: vCluster2
+ name: serviceAccount2
+ - vCluster: vCluster3
+ name: serviceAccount3
externalGroups:
- - GROUP_READER
- - GROUP_WRITER
+ - GROUP_READER
+ - GROUP_WRITER
'400':
description: 'Invalid value for: query parameter showDefaults'
content:
@@ -2421,17 +2428,17 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request GET \
- --url 'http://localhost:8888/gateway/v2/group/group1?showDefaults=false' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request GET \
+ --url 'http://localhost:8888/gateway/v2/group/group1?showDefaults=false' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
delete:
tags:
- - cli_gateway-group_gateway_v2_10
+ - cli_gateway-group_gateway_v2_10
description: |2+
[![Beta](https://img.shields.io/badge/Lifecycle-Beta-orange)](#tag/Versioning)
@@ -2440,11 +2447,11 @@ paths:
operationId: Delete a group
parameters:
- - name: name
- in: path
- required: true
- schema:
- type: string
+ - name: name
+ in: path
+ required: true
+ schema:
+ type: string
responses:
'204':
description: ''
@@ -2481,24 +2488,24 @@ paths:
example:
title: An unexpected error occurred in the server
security:
- - httpAuth: []
+ - httpAuth: [ ]
x-codeSamples:
- - lang: Shell
- source: |-
- curl \
- --request DELETE \
- --url 'http://localhost:8888/gateway/v2/group/group1' \
- --header 'Authorization: Basic YWRtaW46YWRtaW4='
+ - lang: Shell
+ source: |-
+ curl \
+ --request DELETE \
+ --url 'http://localhost:8888/gateway/v2/group/group1' \
+ --header 'Authorization: Basic YWRtaW46Y29uZHVrdG9y'
components:
schemas:
AliasTopic:
title: AliasTopic
type: object
required:
- - kind
- - apiVersion
- - metadata
- - spec
+ - kind
+ - apiVersion
+ - metadata
+ - spec
properties:
kind:
description: The kind of the alias topic
@@ -2514,7 +2521,7 @@ components:
title: AliasTopicId
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the alias topic
@@ -2527,7 +2534,7 @@ components:
description: The metadata of the alias topic
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the alias topic
@@ -2542,7 +2549,7 @@ components:
description: The specification of the alias topic
type: object
required:
- - physicalName
+ - physicalName
properties:
physicalName:
description: The physical name of the alias topic
@@ -2552,8 +2559,8 @@ components:
title: ApplyResult_AliasTopic
type: object
required:
- - resource
- - upsertResult
+ - resource
+ - upsertResult
properties:
resource:
$ref: '#/components/schemas/AliasTopic'
@@ -2564,8 +2571,8 @@ components:
title: ApplyResult_ConcentrationRule
type: object
required:
- - resource
- - upsertResult
+ - resource
+ - upsertResult
properties:
resource:
$ref: '#/components/schemas/ConcentrationRule'
@@ -2576,8 +2583,8 @@ components:
title: ApplyResult_GatewayGroup
type: object
required:
- - resource
- - upsertResult
+ - resource
+ - upsertResult
properties:
resource:
$ref: '#/components/schemas/GatewayGroup'
@@ -2588,8 +2595,8 @@ components:
title: ApplyResult_GatewayServiceAccount
type: object
required:
- - resource
- - upsertResult
+ - resource
+ - upsertResult
properties:
resource:
$ref: '#/components/schemas/GatewayServiceAccount'
@@ -2600,8 +2607,8 @@ components:
title: ApplyResult_Interceptor
type: object
required:
- - resource
- - upsertResult
+ - resource
+ - upsertResult
properties:
resource:
$ref: '#/components/schemas/Interceptor'
@@ -2612,8 +2619,8 @@ components:
title: ApplyResult_VirtualCluster
type: object
required:
- - resource
- - upsertResult
+ - resource
+ - upsertResult
properties:
resource:
$ref: '#/components/schemas/VirtualCluster'
@@ -2624,7 +2631,7 @@ components:
title: BadRequest
type: object
required:
- - title
+ - title
properties:
title:
type: string
@@ -2636,10 +2643,10 @@ components:
title: ConcentratedTopic
type: object
required:
- - kind
- - apiVersion
- - metadata
- - spec
+ - kind
+ - apiVersion
+ - metadata
+ - spec
properties:
kind:
description: The kind of the concentrated topic
@@ -2656,7 +2663,7 @@ components:
description: The metadata of the concentrated topic
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the concentrated topic
@@ -2670,7 +2677,7 @@ components:
description: The specification of the concentrated topic
type: object
required:
- - physicalName
+ - physicalName
properties:
physicalName:
description: The physical name of the concentrated topic
@@ -2679,10 +2686,10 @@ components:
title: ConcentrationRule
type: object
required:
- - kind
- - apiVersion
- - metadata
- - spec
+ - kind
+ - apiVersion
+ - metadata
+ - spec
properties:
kind:
description: The kind of the concentration rule
@@ -2698,7 +2705,7 @@ components:
title: ConcentrationRuleId
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the concentration rule (identifier in a vCluster)
@@ -2712,7 +2719,7 @@ components:
description: The metadata of the concentration rule
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the concentration rule (identifier in a vCluster)
@@ -2727,24 +2734,14 @@ components:
description: The specification of the concentration rule
type: object
required:
- - logicalTopicNamePattern
- - physicalTopicName
+ - pattern
+ - physicalTopics
properties:
- logicalTopicNamePattern:
+ pattern:
description: The pattern of the concentration rule
type: string
- physicalTopicName:
- description: The physical name of the concentrated topic
- type: string
- format: ^[a-zA-Z0-9._-]+$
- physicalTopicNameCompacted:
- description: The physical name of the topic for compact policy
- type: string
- format: ^[a-zA-Z0-9._-]+$
- physicalTopicNameCompactedDeleted:
- description: The pattern of the topic for delete, compact policy
- type: string
- format: ^[a-zA-Z0-9._-]+$
+ physicalTopics:
+ $ref: '#/components/schemas/PhysicalTopics'
autoManaged:
description: Whether the concentration rule is auto managed
type: boolean
@@ -2752,7 +2749,7 @@ components:
title: Conflict
type: object
required:
- - title
+ - title
properties:
title:
type: string
@@ -2767,10 +2764,10 @@ components:
title: External
type: object
required:
- - kind
- - apiVersion
- - metadata
- - spec
+ - kind
+ - apiVersion
+ - metadata
+ - spec
properties:
kind:
description: The kind of the service account
@@ -2787,7 +2784,7 @@ components:
description: Metadata of the service account
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the service account (identifier)
@@ -2805,23 +2802,25 @@ components:
title: ExternalSpec
description: Spec of the service account
type: object
- required:
- - principal
properties:
- principal:
+ externalNames:
description: |2
- An optional field to override the principal of the service account from an external user DB (OIDC)
- type: string
- format: ^[a-zA-Z0-9_-]{3,64}$
+ List of the external names of the service account.
+ Used to keep a fixed reference of the service account in interceptors or groups if the values of the external user DB happen to change
+ (ex: OIDC principal, key in delegated auth mode with Confluent etc...)
+ At the moment, an external service account should have exactly one external name (The support for many external names will be available soon)
+ type: array
+ items:
+ type: string
GatewayGroup:
title: GatewayGroup
type: object
required:
- - kind
- - apiVersion
- - metadata
- - spec
+ - kind
+ - apiVersion
+ - metadata
+ - spec
properties:
kind:
description: The kind of the group
@@ -2836,13 +2835,13 @@ components:
GatewayServiceAccount:
title: GatewayServiceAccount
oneOf:
- - $ref: '#/components/schemas/External'
- - $ref: '#/components/schemas/Local'
+ - $ref: '#/components/schemas/External'
+ - $ref: '#/components/schemas/Local'
GatewayServiceAccountId:
title: GatewayServiceAccountId
type: object
required:
- - name
+ - name
properties:
vCluster:
description: |2
@@ -2859,7 +2858,7 @@ components:
description: The metadata of the group
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the group
@@ -2886,10 +2885,10 @@ components:
title: Interceptor
type: object
required:
- - kind
- - apiVersion
- - metadata
- - spec
+ - kind
+ - apiVersion
+ - metadata
+ - spec
properties:
kind:
description: The kind of the interceptor
@@ -2906,7 +2905,7 @@ components:
description: Metadata of the interceptor
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the interceptor
@@ -2951,9 +2950,9 @@ components:
description: Spec of the interceptor
type: object
required:
- - pluginClass
- - priority
- - config
+ - pluginClass
+ - priority
+ - config
properties:
comment:
description: An optional comment for the interceptor
@@ -2971,10 +2970,10 @@ components:
title: Local
type: object
required:
- - kind
- - apiVersion
- - metadata
- - spec
+ - kind
+ - apiVersion
+ - metadata
+ - spec
properties:
kind:
description: The kind of the service account
@@ -2991,7 +2990,7 @@ components:
description: Metadata of the service account
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the service account (identifier)
@@ -3013,7 +3012,7 @@ components:
title: Map_Json
description: The configuration of the interceptor
type: object
- additionalProperties: {}
+ additionalProperties: { }
NotChanged:
title: NotChanged
type: object
@@ -3021,7 +3020,7 @@ components:
title: NotFound
type: object
required:
- - title
+ - title
properties:
title:
type: string
@@ -3029,13 +3028,32 @@ components:
type: string
cause:
type: string
+ PhysicalTopics:
+ title: PhysicalTopics
+ description: The physical topics backing the concentrated logical topics
+ type: object
+ required:
+ - delete
+ properties:
+ delete:
+ description: The physical name of the concentrated topic for delete policy
+ type: string
+ format: ^[a-zA-Z0-9._-]+$
+ compact:
+ description: The physical name of the topic for compact policy
+ type: string
+ format: ^[a-zA-Z0-9._-]+$
+ deleteCompact:
+ description: The physical name of the topic for delete, compact policy
+ type: string
+ format: ^[a-zA-Z0-9._-]+$
Plugin:
title: Plugin
type: object
required:
- - plugin
- - pluginId
- - readme
+ - plugin
+ - pluginId
+ - readme
properties:
plugin:
description: The name of the plugin
@@ -3065,7 +3083,7 @@ components:
title: ServerError
type: object
required:
- - title
+ - title
properties:
title:
type: string
@@ -3077,8 +3095,8 @@ components:
title: TokenRequest
type: object
required:
- - username
- - lifeTimeSeconds
+ - username
+ - lifeTimeSeconds
properties:
vCluster:
description: 'The name of the virtual cluster to create the token for. "passthrough
@@ -3096,7 +3114,7 @@ components:
title: TokenResponse
type: object
required:
- - token
+ - token
properties:
token:
description: The token created for the given username on the given vcluster.
@@ -3105,7 +3123,7 @@ components:
title: Unauthorized
type: object
required:
- - title
+ - title
properties:
title:
type: string
@@ -3120,17 +3138,17 @@ components:
title: UpsertResult
description: The result of the upsert operation (created, updated, not changed)
oneOf:
- - $ref: '#/components/schemas/Created'
- - $ref: '#/components/schemas/NotChanged'
- - $ref: '#/components/schemas/Updated'
+ - $ref: '#/components/schemas/Created'
+ - $ref: '#/components/schemas/NotChanged'
+ - $ref: '#/components/schemas/Updated'
VirtualCluster:
title: VirtualCluster
type: object
required:
- - kind
- - apiVersion
- - metadata
- - spec
+ - kind
+ - apiVersion
+ - metadata
+ - spec
properties:
kind:
description: The kind of the virtual cluster
@@ -3147,7 +3165,7 @@ components:
description: Metadata of the virtual cluster
type: object
required:
- - name
+ - name
properties:
name:
description: The name of the virtual cluster
@@ -3157,14 +3175,7 @@ components:
title: VirtualClusterSpec
description: Spec of the virtual cluster
type: object
- required:
- - prefix
properties:
- prefix:
- description: The prefix that will be used to namespace kafka resources in
- the physical cluster
- type: string
- format: ^[a-zA-Z0-9_-]*$
aclEnabled:
description: Enable ACL for the virtual cluster
type: boolean
@@ -3179,22 +3190,22 @@ components:
type: http
scheme: basic
x-tagGroups:
-- name: 🐺 Conduktor Gateway API
- tags:
- - Introduction
- - Authentication
- - Kinds
- - Api Groups
- - Versioning
- - Conventions
-- name: 🌉 gateway/v2
- tags:
- - cli_virtual-cluster_gateway_v2_7
- - cli_alias-topic_gateway_v2_8
- - cli_concentrated-topic_gateway_v2_0
- - cli_concentration-rule_gateway_v2_9
- - cli_interceptor_gateway_v2_12
- - plugin
- - cli_gateway-service-account_gateway_v2_11
- - cli_gateway-group_gateway_v2_10
- - token
+ - name: 🐺 Conduktor Gateway API
+ tags:
+ - Introduction
+ - Authentication
+ - Kinds
+ - Api Groups
+ - Versioning
+ - Conventions
+ - name: 🌉 gateway/v2
+ tags:
+ - cli_virtual-cluster_gateway_v2_7
+ - cli_alias-topic_gateway_v2_8
+ - cli_concentrated-topic_gateway_v2_0
+ - cli_concentration-rule_gateway_v2_9
+ - cli_interceptor_gateway_v2_12
+ - plugin
+ - cli_gateway-service-account_gateway_v2_11
+ - cli_gateway-group_gateway_v2_10
+ - token