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