openapi: 3.0.0 info: description: Api Documentation version: 0.1.0 title: Api Documentation termsOfService: urn:tos contact: { } license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 tags: - name: /api/clusters - name: /api/clusters/connects servers: - url: /localhost paths: /api/clusters: get: tags: - Clusters summary: getClusters operationId: getClusters responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Cluster' /api/clusters/{clusterName}/cache: post: tags: - Clusters summary: updateClusterInfo operationId: updateClusterInfo parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/Cluster' 404: description: Not found /api/clusters/{clusterName}/brokers: get: tags: - Brokers summary: getBrokers operationId: getBrokers parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Broker' /api/clusters/{clusterName}/brokers/{id}/configs: get: tags: - Brokers summary: getBrokerConfig operationId: getBrokerConfig parameters: - name: clusterName in: path required: true schema: type: string - name: id in: path required: true schema: type: integer responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/BrokerConfig' 404: description: Not found /api/clusters/{clusterName}/brokers/{id}/configs/{name}: put: tags: - Brokers summary: updateBrokerConfigByName operationId: updateBrokerConfigByName parameters: - name: clusterName in: path required: true schema: type: string - name: id in: path required: true schema: type: integer - name: name in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BrokerConfigItem' responses: 200: description: OK /api/clusters/{clusterName}/metrics: get: tags: - Clusters summary: getClusterMetrics operationId: getClusterMetrics parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ClusterMetrics' /api/clusters/{clusterName}/stats: get: tags: - Clusters summary: getClusterStats operationId: getClusterStats parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ClusterStats' /api/clusters/{clusterName}/brokers/{id}/metrics: get: tags: - Brokers summary: getBrokersMetrics operationId: getBrokersMetrics parameters: - name: clusterName in: path required: true schema: type: string - name: id in: path required: true schema: type: integer responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/BrokerMetrics' /api/clusters/{clusterName}/brokers/logdirs: get: tags: - Brokers summary: getAllBrokersLogdirs operationId: getAllBrokersLogdirs parameters: - name: clusterName in: path required: true schema: type: string - name: broker in: query description: array of broker ids required: false schema: type: array items: type: integer responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/BrokersLogdirs' /api/clusters/{clusterName}/brokers/{id}/logdirs: patch: tags: - Brokers summary: updateBrokerTopicPartitionLogDir operationId: updateBrokerTopicPartitionLogDir parameters: - name: clusterName in: path required: true schema: type: string - name: id in: path required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/BrokerLogdirUpdate' responses: 200: description: OK /api/clusters/{clusterName}/topics: get: tags: - Topics summary: getTopics operationId: getTopics parameters: - name: clusterName in: path required: true schema: type: string - name: page in: query required: false schema: type: integer - name: perPage in: query required: false schema: type: integer - name: showInternal in: query required: false schema: type: boolean - name: search in: query required: false schema: type: string - name: orderBy in: query required: false schema: $ref: '#/components/schemas/TopicColumnsToSort' - name: sortOrder in: query required: false schema: $ref: '#/components/schemas/SortOrder' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/TopicsResponse' post: tags: - Topics summary: createTopic operationId: createTopic parameters: - name: clusterName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TopicCreation' responses: 201: description: Created content: application/json: schema: $ref: '#/components/schemas/Topic' /api/clusters/{clusterName}/topics/{topicName}/clone: post: tags: - Topics summary: cloneTopic operationId: cloneTopic parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string - name: newTopicName in: query required: true schema: type: string responses: 201: description: Created content: application/json: schema: $ref: '#/components/schemas/Topic' 404: description: Not found /api/clusters/{clusterName}/topics/{topicName}/analysis: get: tags: - Topics summary: getTopicAnalysis operationId: getTopicAnalysis parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/TopicAnalysis' 404: description: Not found post: tags: - Topics summary: analyzeTopic operationId: analyzeTopic parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string responses: 200: description: Analysis started 404: description: Not found delete: tags: - Topics summary: cancelTopicAnalysis operationId: cancelTopicAnalysis parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string responses: 200: description: Analysis cancelled 404: description: Not found /api/clusters/{clusterName}/topics/{topicName}: get: tags: - Topics summary: getTopicDetails operationId: getTopicDetails parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/TopicDetails' post: tags: - Topics summary: recreateTopic operationId: recreateTopic parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string responses: 201: description: Created content: application/json: schema: $ref: '#/components/schemas/Topic' 404: description: Not found 408: description: Topic recreation timeout patch: tags: - Topics summary: updateTopic operationId: updateTopic parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TopicUpdate' responses: 200: description: Updated content: application/json: schema: $ref: '#/components/schemas/Topic' delete: tags: - Topics summary: deleteTopic operationId: deleteTopic parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string responses: 200: description: OK 404: description: Not found /api/clusters/{clusterName}/topics/{topicName}/config: get: tags: - Topics summary: getTopicConfigs operationId: getTopicConfigs parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/TopicConfig' /api/clusters/{clusterName}/topics/{topicName}/replications: patch: tags: - Topics summary: changeReplicationFactor operationId: changeReplicationFactor parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ReplicationFactorChange' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ReplicationFactorChangeResponse' 404: description: Not found 400: description: Bad Request /api/clusters/{clusterName}/topic/{topicName}/serdes: get: tags: - Messages summary: getSerdes operationId: getSerdes parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string - name: use in: query required: true schema: $ref: '#/components/schemas/SerdeUsage' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/TopicSerdeSuggestion' /api/clusters/{clusterName}/topics/{topicName}/messages: get: tags: - Messages summary: getTopicMessages operationId: getTopicMessages parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string - name: seekType in: query schema: $ref: "#/components/schemas/SeekType" - name: seekTo in: query schema: type: array items: type: string description: The format is [partition]::[offset] for specifying offsets or [partition]::[timestamp in millis] for specifying timestamps - name: limit in: query schema: type: integer - name: q in: query schema: type: string - name: filterQueryType in: query schema: $ref: "#/components/schemas/MessageFilterType" - name: seekDirection in: query schema: $ref: "#/components/schemas/SeekDirection" - name: keySerde in: query description: "Serde that should be used for deserialization. Will be chosen automatically if not set." schema: type: string - name: valueSerde in: query description: "Serde that should be used for deserialization. Will be chosen automatically if not set." schema: type: string responses: 200: description: OK content: text/event-stream: schema: type: array items: $ref: '#/components/schemas/TopicMessageEvent' delete: tags: - Messages summary: deleteTopicMessages operationId: deleteTopicMessages parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string - name: partitions in: query required: false schema: type: array items: type: integer responses: 200: description: OK 404: description: Not found post: tags: - Messages summary: sendTopicMessages operationId: sendTopicMessages parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTopicMessage' responses: 200: description: OK 404: description: Not found /api/clusters/{clusterName}/topics/{topicName}/consumer-groups: get: tags: - Consumer Groups summary: get Consumer Groups By Topics operationId: getTopicConsumerGroups parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ConsumerGroup' /api/clusters/{clusterName}/consumer-groups/paged: get: tags: - Consumer Groups summary: Get consumer groups with paging support operationId: getConsumerGroupsPage parameters: - name: clusterName in: path required: true schema: type: string - name: page in: query required: false schema: type: integer - name: perPage in: query required: false schema: type: integer - name: search in: query required: false schema: type: string - name: orderBy in: query required: false schema: $ref: '#/components/schemas/ConsumerGroupOrdering' - name: sortOrder in: query required: false schema: $ref: '#/components/schemas/SortOrder' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ConsumerGroupsPageResponse' /api/clusters/{clusterName}/consumer-groups/{id}: get: tags: - Consumer Groups summary: get Consumer Group By Id operationId: getConsumerGroup parameters: - name: clusterName in: path required: true schema: type: string - name: id in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ConsumerGroupDetails' delete: tags: - Consumer Groups summary: Delete Consumer Group by ID operationId: deleteConsumerGroup parameters: - name: clusterName in: path required: true schema: type: string - name: id in: path required: true schema: type: string responses: 200: description: OK /api/clusters/{clusterName}/consumer-groups/{id}/offsets: post: tags: - Consumer Groups summary: resets consumer group offsets operationId: resetConsumerGroupOffsets parameters: - name: clusterName in: path required: true schema: type: string - name: id in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConsumerGroupOffsetsReset' responses: 200: description: OK /api/clusters/{clusterName}/schemas: post: tags: - Schemas summary: create a new subject schema or update existing subject schema operationId: createNewSchema parameters: - name: clusterName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NewSchemaSubject' responses: 200: description: Ok content: application/json: schema: $ref: '#/components/schemas/SchemaSubject' 400: description: Bad request 409: description: Duplicate schema 422: description: Invalid parameters get: tags: - Schemas summary: get all schemas of latest version from Schema Registry service operationId: getSchemas parameters: - name: clusterName in: path required: true schema: type: string - name: page in: query required: false schema: type: integer - name: perPage in: query required: false schema: type: integer - name: search in: query required: false schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/SchemaSubjectsResponse' /api/clusters/{clusterName}/schemas/{subject}: delete: tags: - Schemas summary: delete schema from Schema Registry service operationId: deleteSchema parameters: - name: clusterName in: path required: true schema: type: string - name: subject in: path required: true schema: type: string responses: 200: description: OK 404: description: Not found /api/clusters/{clusterName}/schemas/{subject}/versions: get: tags: - Schemas summary: get all version of subject from Schema Registry service operationId: getAllVersionsBySubject parameters: - name: clusterName in: path required: true schema: type: string - name: subject in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/SchemaSubject' /api/clusters/{clusterName}/schemas/{subject}/latest: get: tags: - Schemas summary: get the latest schema from Schema Registry service operationId: getLatestSchema parameters: - name: clusterName in: path required: true schema: type: string - name: subject in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/SchemaSubject' delete: tags: - Schemas summary: delete the latest schema from schema registry operationId: deleteLatestSchema parameters: - name: clusterName in: path required: true schema: type: string - name: subject in: path required: true schema: type: string responses: 200: description: OK 404: description: Not found /api/clusters/{clusterName}/schemas/{subject}/versions/{version}: get: tags: - Schemas summary: get schema by version from Schema Registry service operationId: getSchemaByVersion parameters: - name: clusterName in: path required: true schema: type: string - name: subject in: path required: true schema: type: string - name: version in: path required: true schema: type: integer responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/SchemaSubject' delete: tags: - Schemas summary: delete schema by version from schema registry operationId: deleteSchemaByVersion parameters: - name: clusterName in: path required: true schema: type: string - name: subject in: path required: true schema: type: string - name: version in: path required: true schema: type: integer responses: 200: description: OK 404: description: Not found /api/clusters/{clusterName}/schemas/compatibility: get: tags: - Schemas summary: Get global schema compatibility level operationId: getGlobalSchemaCompatibilityLevel parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/CompatibilityLevel' put: tags: - Schemas summary: Update compatibility level globally operationId: updateGlobalSchemaCompatibilityLevel parameters: - name: clusterName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CompatibilityLevel' responses: 200: description: OK 404: description: Not Found /api/clusters/{clusterName}/schemas/{subject}/compatibility: put: tags: - Schemas summary: Update compatibility level for specific schema. operationId: updateSchemaCompatibilityLevel parameters: - name: clusterName in: path required: true schema: type: string - name: subject in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CompatibilityLevel' responses: 200: description: OK 404: description: Not Found /api/clusters/{clusterName}/schemas/{subject}/check: post: tags: - Schemas summary: Check compatibility of the schema. operationId: checkSchemaCompatibility parameters: - name: clusterName in: path required: true schema: type: string - name: subject in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NewSchemaSubject' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/CompatibilityCheckResponse' 404: description: Not Found /api/clusters/{clusterName}/connects: get: tags: - Kafka Connect summary: get all kafka connect instances operationId: getConnects parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Connect' /api/clusters/{clusterName}/connectors: get: tags: - Kafka Connect summary: get filtered kafka connectors operationId: getAllConnectors parameters: - name: clusterName in: path required: true schema: type: string - name: search in: query required: false schema: type: string - name: orderBy in: query required: false schema: $ref: '#/components/schemas/ConnectorColumnsToSort' - name: sortOrder in: query required: false schema: $ref: '#/components/schemas/SortOrder' responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/FullConnectorInfo' /api/clusters/{clusterName}/connects/{connectName}/connectors: get: tags: - Kafka Connect summary: get connectors for provided kafka connect instance operationId: getConnectors parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: type: string post: tags: - Kafka Connect summary: create new connector operationId: createConnector parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NewConnector' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/Connector' 409: description: rebalance is in progress /api/clusters/{clusterName}/connects/{connectName}/connectors/{connectorName}: get: tags: - Kafka Connect summary: get information about the connector operationId: getConnector parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string - name: connectorName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/Connector' delete: tags: - Kafka Connect summary: delete connector operationId: deleteConnector parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string - name: connectorName in: path required: true schema: type: string responses: 200: description: OK 409: description: rebalance is in progress /api/clusters/{clusterName}/connects/{connectName}/connectors/{connectorName}/action/{action}: post: tags: - Kafka Connect summary: update connector state (restart, pause or resume) operationId: updateConnectorState parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string - name: connectorName in: path required: true schema: type: string - name: action in: path required: true schema: $ref: '#/components/schemas/ConnectorAction' responses: 200: description: OK 409: description: rebalance is in progress /api/clusters/{clusterName}/connects/{connectName}/connectors/{connectorName}/config: get: tags: - Kafka Connect summary: get connector configuration operationId: getConnectorConfig parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string - name: connectorName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ConnectorConfig' put: tags: - Kafka Connect summary: update or create connector with provided config operationId: setConnectorConfig parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string - name: connectorName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConnectorConfig' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/Connector' 409: description: rebalance is in progress /api/clusters/{clusterName}/connects/{connectName}/connectors/{connectorName}/tasks: get: tags: - Kafka Connect summary: get connector tasks operationId: getConnectorTasks parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string - name: connectorName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Task' /api/clusters/{clusterName}/connects/{connectName}/connectors/{connectorName}/tasks/{taskId}/action/restart: post: tags: - Kafka Connect summary: restart connector task operationId: restartConnectorTask parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string - name: connectorName in: path required: true schema: type: string - name: taskId in: path required: true schema: type: integer responses: 200: description: OK /api/clusters/{clusterName}/ksql/v2: post: tags: - Ksql summary: executeKsql operationId: executeKsql parameters: - name: clusterName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/KsqlCommandV2' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/KsqlCommandV2Response' /api/clusters/{clusterName}/ksql/tables: get: tags: - Ksql summary: listTables operationId: listTables parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/KsqlTableDescription' /api/clusters/{clusterName}/ksql/streams: get: tags: - Ksql summary: listStreams operationId: listStreams parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/KsqlStreamDescription' /api/clusters/{clusterName}/ksql/response: get: tags: - Ksql summary: Open SSE pipe operationId: openKsqlResponsePipe parameters: - name: clusterName in: path required: true schema: type: string - name: pipeId in: query required: true schema: type: string responses: 200: description: OK content: text/event-stream: schema: type: array items: $ref: '#/components/schemas/KsqlResponse' /api/clusters/{clusterName}/connects/{connectName}/plugins: get: tags: - Kafka Connect summary: get connector plugins operationId: getConnectorPlugins parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ConnectorPlugin' /api/clusters/{clusterName}/connects/{connectName}/plugins/{pluginName}/config/validate: put: tags: - Kafka Connect summary: validate connector plugin configuration operationId: validateConnectorPluginConfig parameters: - name: clusterName in: path required: true schema: type: string - name: connectName in: path required: true schema: type: string - name: pluginName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConnectorConfig' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ConnectorPluginConfigValidationResponse' /api/clusters/{clusterName}/topics/{topicName}/partitions: patch: tags: - Topics summary: increaseTopicPartitions operationId: increaseTopicPartitions parameters: - name: clusterName in: path required: true schema: type: string - name: topicName in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PartitionsIncrease' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/PartitionsIncreaseResponse' 404: description: Not found /api/authorization: get: tags: - Authorization summary: Get user authentication related info operationId: getUserAuthInfo responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/AuthenticationInfo' /api/info: get: tags: - ApplicationConfig summary: Gets application info operationId: getApplicationInfo responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ApplicationInfo' /api/config: get: tags: - ApplicationConfig summary: Gets current application configuration operationId: getCurrentConfig responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ApplicationConfig' put: tags: - ApplicationConfig summary: Restarts application with specified configuration operationId: restartWithConfig requestBody: content: application/json: schema: $ref: '#/components/schemas/RestartRequest' responses: 200: description: OK /api/config/validated: put: tags: - ApplicationConfig summary: Restarts application with specified configuration operationId: validateConfig requestBody: content: application/json: schema: $ref: '#/components/schemas/ApplicationConfig' responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/ApplicationConfigValidation' /api/config/relatedfiles: post: tags: - ApplicationConfig summary: Restarts application with specified configuration operationId: uploadConfigRelatedFile requestBody: content: multipart/form-data: schema: type: object properties: file: type: string format: filepart responses: 200: description: OK content: application/json: schema: $ref: '#/components/schemas/UploadedFileInfo' components: schemas: TopicSerdeSuggestion: type: object properties: key: type: array items: $ref: '#/components/schemas/SerdeDescription' value: type: array items: $ref: '#/components/schemas/SerdeDescription' SerdeDescription: type: object properties: name: type: string description: type: string preferred: description: "This serde was automatically chosen by cluster config. This should be enabled in UI by default. Also it will be used for deserialization if no serdes passed." type: boolean schema: type: string additionalProperties: type: object additionalProperties: type: object SerdeUsage: type: string enum: - SERIALIZE - DESERIALIZE ErrorResponse: description: Error object that will be returned with 4XX and 5XX HTTP statuses type: object properties: code: type: integer description: Internal error code (can be used for message formatting & localization on UI) message: type: string description: Error message timestamp: type: number description: Response unix timestamp in ms requestId: type: string description: Unique server-defined request id for convenient debugging fieldsErrors: type: array items: $ref: '#/components/schemas/FieldError' stackTrace: type: string FieldError: type: object properties: fieldName: type: string description: Name of field that violated format restrictions: description: Field format violations description (ex. ["size must be between 0 and 20", "must be a well-formed email address"]) type: array items: type: string MetricsCollectionError: type: object properties: message: type: string stackTrace: type: string ApplicationInfo: type: object properties: enabledFeatures: type: array items: type: string enum: - DYNAMIC_CONFIG build: type: object properties: commitId: type: string version: type: string buildTime: type: string isLatestRelease: type: boolean latestRelease: type: object properties: versionTag: type: string publishedAt: type: string htmlUrl: type: string Cluster: type: object properties: name: type: string defaultCluster: type: boolean status: $ref: '#/components/schemas/ServerStatus' lastError: $ref: '#/components/schemas/MetricsCollectionError' brokerCount: type: integer onlinePartitionCount: type: integer topicCount: type: integer bytesInPerSec: type: number bytesOutPerSec: type: number readOnly: type: boolean version: type: string features: type: array items: type: string enum: - SCHEMA_REGISTRY - KAFKA_CONNECT - KSQL_DB - TOPIC_DELETION required: - id - name - status ServerStatus: type: string enum: - online - offline - initializing ClusterMetrics: type: object properties: items: type: array items: $ref: '#/components/schemas/Metric' ClusterStats: type: object properties: brokerCount: type: integer zooKeeperStatus: type: integer deprecated: true activeControllers: type: integer description: Id of broker which is cluster's controller. null, if controller not known yet. onlinePartitionCount: type: integer offlinePartitionCount: type: integer inSyncReplicasCount: type: integer outOfSyncReplicasCount: type: integer underReplicatedPartitionCount: type: integer diskUsage: type: array items: $ref: '#/components/schemas/BrokerDiskUsage' version: type: string BrokerDiskUsage: type: object properties: brokerId: type: integer segmentSize: type: integer format: int64 segmentCount: type: integer required: - brokerId BrokerMetrics: type: object properties: segmentSize: type: integer format: int64 segmentCount: type: integer metrics: type: array items: $ref: '#/components/schemas/Metric' BrokerLogdirs: type: object properties: name: type: string error: type: string topics: type: array items: $ref: '#/components/schemas/TopicLogdirs' BrokersLogdirs: type: object properties: name: type: string error: type: string topics: type: array items: $ref: '#/components/schemas/BrokerTopicLogdirs' TopicsResponse: type: object properties: pageCount: type: integer topics: type: array items: $ref: '#/components/schemas/Topic' TopicColumnsToSort: type: string enum: - NAME - OUT_OF_SYNC_REPLICAS - TOTAL_PARTITIONS - REPLICATION_FACTOR - SIZE ConnectorColumnsToSort: type: string enum: - NAME - CONNECT - TYPE - STATUS SortOrder: type: string enum: - ASC - DESC Topic: type: object properties: name: type: string internal: type: boolean partitionCount: type: integer replicationFactor: type: integer replicas: type: integer inSyncReplicas: type: integer segmentSize: type: integer format: int64 segmentCount: type: integer bytesInPerSec: type: number bytesOutPerSec: type: number underReplicatedPartitions: type: integer cleanUpPolicy: $ref: '#/components/schemas/CleanUpPolicy' partitions: type: array items: $ref: "#/components/schemas/Partition" required: - name TopicAnalysis: type: object description: "Represents analysis state. Note: 'progress' and 'result' fields are set exclusively depending on analysis state." properties: progress: $ref: '#/components/schemas/TopicAnalysisProgress' result: $ref: '#/components/schemas/TopicAnalysisResult' TopicAnalysisProgress: type: object properties: startedAt: type: integer format: int64 completenessPercent: type: number msgsScanned: type: integer format: int64 bytesScanned: type: integer format: int64 TopicAnalysisResult: type: object properties: startedAt: type: integer format: int64 finishedAt: type: integer format: int64 error: type: string totalStats: $ref: '#/components/schemas/TopicAnalysisStats' partitionStats: type: array items: $ref: "#/components/schemas/TopicAnalysisStats" TopicAnalysisStats: type: object properties: partition: type: integer format: int32 description: "null if this is total stats" totalMsgs: type: integer format: int64 minOffset: type: integer format: int64 maxOffset: type: integer format: int64 minTimestamp: type: integer format: int64 maxTimestamp: type: integer format: int64 nullKeys: type: integer format: int64 nullValues: type: integer format: int64 approxUniqKeys: type: integer format: int64 approxUniqValues: type: integer format: int64 keySize: $ref: "#/components/schemas/TopicAnalysisSizeStats" valueSize: $ref: "#/components/schemas/TopicAnalysisSizeStats" hourlyMsgCounts: type: array items: type: object properties: hourStart: type: integer format: int64 count: type: integer format: int64 TopicAnalysisSizeStats: type: object description: "All sizes in bytes" properties: sum: type: integer format: int64 min: type: integer format: int64 max: type: integer format: int64 avg: type: integer format: int64 prctl50: type: integer format: int64 prctl75: type: integer format: int64 prctl95: type: integer format: int64 prctl99: type: integer format: int64 prctl999: type: integer format: int64 Replica: type: object properties: broker: type: integer leader: type: boolean inSync: type: boolean TopicDetails: type: object properties: name: type: string internal: type: boolean partitions: type: array items: $ref: "#/components/schemas/Partition" partitionCount: type: integer replicationFactor: type: integer replicas: type: integer inSyncReplicas: type: integer bytesInPerSec: type: number bytesOutPerSec: type: number segmentSize: type: integer format: int64 segmentCount: type: integer underReplicatedPartitions: type: integer cleanUpPolicy: $ref: '#/components/schemas/CleanUpPolicy' keySerde: type: string valueSerde: type: string required: - name TopicConfig: type: object properties: name: type: string value: type: string defaultValue: type: string source: $ref: "#/components/schemas/ConfigSource" isSensitive: type: boolean isReadOnly: type: boolean synonyms: type: array items: $ref: "#/components/schemas/ConfigSynonym" doc: type: string required: - name TopicCreation: type: object properties: name: type: string partitions: type: integer replicationFactor: type: integer configs: type: object additionalProperties: type: string required: - name - partitions TopicUpdate: type: object properties: configs: type: object additionalProperties: type: string required: - configs Broker: type: object properties: id: type: integer host: type: string port: type: integer bytesInPerSec: type: number bytesOutPerSec: type: number partitionsLeader: type: integer partitions: type: integer inSyncPartitions: type: integer partitionsSkew: type: number leadersSkew: type: number required: - id BrokerLogdirUpdate: type: object properties: topic: type: string partition: type: integer logDir: type: string ConsumerGroupState: type: string enum: - UNKNOWN - PREPARING_REBALANCE - COMPLETING_REBALANCE - STABLE - DEAD - EMPTY MessageFormat: type: string enum: - AVRO - JSON - PROTOBUF - UNKNOWN ConsumerGroup: discriminator: propertyName: inherit mapping: details: "#/components/schemas/ConsumerGroupDetails" type: object properties: groupId: type: string members: type: integer topics: type: integer simple: type: boolean partitionAssignor: type: string state: $ref: "#/components/schemas/ConsumerGroupState" coordinator: $ref: "#/components/schemas/Broker" messagesBehind: type: integer format: int64 description: null if consumer group has no offsets committed required: - groupId ConsumerGroupOrdering: type: string enum: - NAME - MEMBERS - STATE - MESSAGES_BEHIND - TOPIC_NUM ConsumerGroupsPageResponse: type: object properties: pageCount: type: integer consumerGroups: type: array items: $ref: '#/components/schemas/ConsumerGroup' CreateTopicMessage: type: object properties: partition: type: integer key: type: string nullable: true headers: type: object additionalProperties: type: string content: type: string nullable: true keySerde: type: string nullable: true valueSerde: type: string nullable: true required: - partition TopicMessageEvent: type: object properties: type: type: string enum: - PHASE - MESSAGE - CONSUMING - DONE - EMIT_THROTTLING message: $ref: "#/components/schemas/TopicMessage" phase: $ref: "#/components/schemas/TopicMessagePhase" consuming: $ref: "#/components/schemas/TopicMessageConsuming" TopicMessagePhase: type: object properties: name: type: string TimeStampFormat: type: object properties: timeStampFormat: type: string TopicMessageConsuming: type: object properties: bytesConsumed: type: integer format: int64 elapsedMs: type: integer format: int64 isCancelled: type: boolean messagesConsumed: type: integer filterApplyErrors: type: integer TopicMessage: type: object properties: partition: type: integer offset: type: integer format: int64 timestamp: type: string format: date-time timestampType: type: string enum: - NO_TIMESTAMP_TYPE - CREATE_TIME - LOG_APPEND_TIME key: type: string headers: type: object additionalProperties: type: string content: type: string keyFormat: #deprecated - wont be filled - use 'keySerde' field instead $ref: "#/components/schemas/MessageFormat" valueFormat: #deprecated - wont be filled - use 'valueSerde' field instead $ref: "#/components/schemas/MessageFormat" keySize: type: integer format: int64 valueSize: type: integer format: int64 keySchemaId: deprecated: true description: deprecated - wont be filled - use 'keyDeserializeProperties' field instead type: string valueSchemaId: deprecated: true description: deprecated - wont be filled - use 'valueDeserializeProperties' field instead type: string headersSize: type: integer format: int64 keySerde: type: string valueSerde: type: string keyDeserializeProperties: additionalProperties: type: object valueDeserializeProperties: additionalProperties: type: object required: - partition - offset - timestamp SeekType: type: string enum: - BEGINNING - OFFSET - TIMESTAMP - LATEST MessageFilterType: type: string enum: - STRING_CONTAINS - GROOVY_SCRIPT SeekDirection: type: string enum: - FORWARD - BACKWARD - TAILING default: FORWARD Partition: type: object properties: partition: type: integer leader: type: integer replicas: type: array items: $ref: '#/components/schemas/Replica' offsetMax: type: integer format: int64 offsetMin: type: integer format: int64 required: - topic - partition - offsetMax - offsetMin ConsumerGroupTopicPartition: type: object properties: topic: type: string partition: type: integer currentOffset: type: integer format: int64 endOffset: type: integer format: int64 messagesBehind: type: integer format: int64 description: null if consumer group has no offsets committed consumerId: type: string host: type: string required: - topic - partition ConsumerGroupDetails: allOf: - $ref: '#/components/schemas/ConsumerGroup' - type: object properties: partitions: type: array items: $ref: '#/components/schemas/ConsumerGroupTopicPartition' Metric: type: object properties: name: type: string labels: type: string additionalProperties: type: string value: type: number TopicLogdirs: type: object properties: name: type: string partitions: type: array items: $ref: '#/components/schemas/TopicPartitionLogdir' BrokerTopicLogdirs: type: object properties: name: type: string partitions: type: array items: $ref: '#/components/schemas/BrokerTopicPartitionLogdir' TopicPartitionLogdir: type: object properties: partition: type: integer size: type: integer format: int64 offsetLag: type: integer format: int64 BrokerTopicPartitionLogdir: allOf: - $ref: '#/components/schemas/TopicPartitionLogdir' - type: object properties: broker: type: integer SchemaSubject: type: object properties: subject: type: string version: type: string id: type: integer schema: type: string compatibilityLevel: type: string schemaType: $ref: '#/components/schemas/SchemaType' required: - id - subject - version - schema - compatibilityLevel - schemaType NewSchemaSubject: type: object description: should be set for creating/updating schema subject properties: subject: type: string schema: type: string schemaType: $ref: '#/components/schemas/SchemaType' # upon updating a schema, the type of existing schema can't be changed required: - subject - schema - schemaType CompatibilityLevel: type: object properties: compatibility: type: string enum: - BACKWARD - BACKWARD_TRANSITIVE - FORWARD - FORWARD_TRANSITIVE - FULL - FULL_TRANSITIVE - NONE required: - compatibility SchemaType: type: string description: upon updating a schema, the type of an existing schema can't be changed enum: - AVRO - JSON - PROTOBUF CompatibilityCheckResponse: type: object properties: isCompatible: type: boolean required: - isCompatible SchemaSubjectsResponse: type: object properties: pageCount: type: integer schemas: type: array items: $ref: '#/components/schemas/SchemaSubject' Connect: type: object properties: name: type: string address: type: string required: - name ConnectorConfig: type: object additionalProperties: type: object TaskId: type: object properties: connector: type: string task: type: integer Task: type: object properties: id: $ref: '#/components/schemas/TaskId' status: $ref: '#/components/schemas/TaskStatus' config: $ref: '#/components/schemas/ConnectorConfig' required: - status NewConnector: type: object properties: name: type: string config: $ref: '#/components/schemas/ConnectorConfig' required: - name - config Connector: allOf: - $ref: '#/components/schemas/NewConnector' - type: object properties: tasks: type: array items: $ref: '#/components/schemas/TaskId' type: $ref: '#/components/schemas/ConnectorType' status: $ref: '#/components/schemas/ConnectorStatus' connect: type: string required: - type - status - connect ConnectorType: type: string enum: - SOURCE - SINK ConsumerGroupOffsetsReset: type: object properties: topic: type: string resetType: $ref: '#/components/schemas/ConsumerGroupOffsetsResetType' partitions: type: array items: type: integer description: list of target partitions, all partitions will be used if it is not set or empty resetToTimestamp: type: integer format: int64 description: should be set if resetType is TIMESTAMP partitionsOffsets: type: array items: $ref: '#/components/schemas/PartitionOffset' description: List of partition offsets to reset to, should be set when resetType is OFFSET required: - topic - resetType PartitionOffset: type: object properties: partition: type: integer offset: type: integer format: int64 required: - partition ConsumerGroupOffsetsResetType: type: string enum: - EARLIEST - LATEST - TIMESTAMP - OFFSET TaskStatus: type: object properties: id: type: integer state: $ref: '#/components/schemas/ConnectorTaskStatus' worker_id: type: string trace: type: string required: - id - state - worker_id ConnectorStatus: type: object properties: state: $ref: '#/components/schemas/ConnectorState' worker_id: type: string required: - state ConnectorTaskStatus: type: string enum: - RUNNING - FAILED - PAUSED - RESTARTING - UNASSIGNED ConnectorState: type: string enum: - RUNNING - FAILED - PAUSED - UNASSIGNED - TASK_FAILED ConnectorAction: type: string enum: - RESTART - RESTART_ALL_TASKS - RESTART_FAILED_TASKS - PAUSE - RESUME TaskAction: type: string enum: - restart ConnectorPlugin: type: object properties: class: type: string ConnectorPluginConfigDefinition: type: object properties: name: type: string type: type: string enum: - BOOLEAN - CLASS - DOUBLE - INT - LIST - LONG - PASSWORD - SHORT - STRING required: type: boolean default_value: type: string importance: type: string enum: - LOW - MEDIUM - HIGH documentation: type: string group: type: string width: type: string enum: - SHORT - MEDIUM - LONG - NONE display_name: type: string dependents: type: array items: type: string order: type: integer ConnectorPluginConfigValue: type: object properties: name: type: string value: type: string recommended_values: type: array items: type: string errors: type: array items: type: string visible: type: boolean ConnectorPluginConfig: type: object properties: definition: $ref: '#/components/schemas/ConnectorPluginConfigDefinition' value: $ref: '#/components/schemas/ConnectorPluginConfigValue' ConnectorPluginConfigValidationResponse: type: object properties: name: type: string error_count: type: integer groups: type: array items: type: string configs: type: array items: $ref: '#/components/schemas/ConnectorPluginConfig' KsqlCommandV2: type: object properties: ksql: type: string streamsProperties: type: object additionalProperties: type: string required: - ksql KsqlCommandV2Response: type: object properties: pipeId: type: string required: - pipeId KsqlTableDescription: type: object properties: name: type: string topic: type: string keyFormat: type: string valueFormat: type: string isWindowed: type: boolean KsqlStreamDescription: type: object properties: name: type: string topic: type: string keyFormat: type: string valueFormat: type: string KsqlResponse: type: object properties: table: $ref: '#/components/schemas/KsqlTableResponse' KsqlTableResponse: type: object properties: header: type: string columnNames: type: array items: type: string values: type: array items: type: array items: type: object FullConnectorInfo: type: object properties: connect: type: string name: type: string connector_class: type: string type: $ref: '#/components/schemas/ConnectorType' topics: type: array items: type: string status: $ref: '#/components/schemas/ConnectorStatus' tasks_count: type: integer failed_tasks_count: type: integer required: - name - connect - status PartitionsIncrease: type: object properties: totalPartitionsCount: type: integer minimum: 1 required: - totalPartitionsCount PartitionsIncreaseResponse: type: object properties: totalPartitionsCount: type: integer topicName: type: string required: - totalPartitionsCount - topicName ReplicationFactorChange: type: object properties: totalReplicationFactor: type: integer required: - totalReplicationFactor ReplicationFactorChangeResponse: type: object properties: totalReplicationFactor: type: integer topicName: type: string required: - totalReplicationFactor - topicName BrokerConfigItem: type: object properties: value: type: string BrokerConfig: type: object properties: name: type: string value: type: string source: $ref: '#/components/schemas/ConfigSource' isSensitive: type: boolean isReadOnly: type: boolean synonyms: type: array items: $ref: '#/components/schemas/ConfigSynonym' required: - name - value - source - isSensitive - isReadOnly ConfigSource: type: string enum: - DYNAMIC_TOPIC_CONFIG - DYNAMIC_BROKER_LOGGER_CONFIG - DYNAMIC_BROKER_CONFIG - DYNAMIC_DEFAULT_BROKER_CONFIG - STATIC_BROKER_CONFIG - DEFAULT_CONFIG - UNKNOWN ConfigSynonym: type: object properties: name: type: string value: type: string source: $ref: '#/components/schemas/ConfigSource' CleanUpPolicy: type: string enum: - DELETE - COMPACT - COMPACT_DELETE - UNKNOWN AuthenticationInfo: type: object properties: rbacEnabled: type: boolean description: true if role based access control is enabled and granular permission access is required userInfo: $ref: '#/components/schemas/UserInfo' required: - rbacEnabled UserInfo: type: object properties: username: type: string permissions: type: array items: $ref: '#/components/schemas/UserPermission' required: - username - permissions UserPermission: type: object properties: clusters: type: array items: type: string resource: $ref: '#/components/schemas/ResourceType' value: type: string actions: type: array items: $ref: '#/components/schemas/Action' required: - clusters - resource - actions Action: type: string enum: - VIEW - EDIT - CREATE - DELETE - RESET_OFFSETS - EXECUTE - MODIFY_GLOBAL_COMPATIBILITY - ANALYSIS_VIEW - ANALYSIS_RUN - MESSAGES_READ - MESSAGES_PRODUCE - MESSAGES_DELETE ResourceType: type: string enum: - APPLICATIONCONFIG - CLUSTERCONFIG - TOPIC - CONSUMER - SCHEMA - CONNECT - KSQL RestartRequest: type: object properties: config: $ref: '#/components/schemas/ApplicationConfig' UploadedFileInfo: type: object required: [location] properties: location: type: string ApplicationConfigValidation: type: object properties: clusters: type: object additionalProperties: $ref: '#/components/schemas/ClusterConfigValidation' ApplicationPropertyValidation: type: object required: [error] properties: error: type: boolean errorMessage: type: string description: Contains error message if error = true ClusterConfigValidation: type: object required: [kafka] properties: kafka: $ref: '#/components/schemas/ApplicationPropertyValidation' schemaRegistry: $ref: '#/components/schemas/ApplicationPropertyValidation' kafkaConnects: type: object additionalProperties: $ref: '#/components/schemas/ApplicationPropertyValidation' ksqldb: $ref: '#/components/schemas/ApplicationPropertyValidation' ApplicationConfig: type: object properties: properties: type: object properties: auth: type: object properties: type: type: string oauth2: type: object properties: client: type: object additionalProperties: type: object properties: provider: type: string clientId: type: string clientSecret: type: string clientName: type: string redirectUri: type: string authorizationGrantType: type: string issuerUri: type: string authorizationUri: type: string tokenUri: type: string userInfoUri: type: string jwkSetUri: type: string userNameAttribute: type: string scope: type: array items: type: string customParams: type: object additionalProperties: type: string rbac: type: object properties: roles: type: array items: type: object properties: name: type: string clusters: type: array items: type: string subjects: type: array items: type: object properties: provider: type: string type: type: string value: type: string permissions: type: array items: type: object properties: resource: $ref: '#/components/schemas/ResourceType' value: type: string actions: type: array items: $ref: '#/components/schemas/Action' webclient: type: object properties: maxInMemoryBufferSize: type: string description: "examples: 20, 12KB, 5MB" kafka: type: object properties: polling: type: object properties: pollTimeoutMs: type: integer partitionPollTimeout: type: integer noDataEmptyPolls: type: integer maxPageSize: type: integer defaultPageSize: type: integer adminClientTimeout: type: integer internalTopicPrefix: type: string clusters: type: array items: type: object properties: name: type: string bootstrapServers: type: string ssl: type: object properties: truststoreLocation: type: string truststorePassword: type: string schemaRegistry: type: string schemaRegistryAuth: type: object properties: username: type: string password: type: string schemaRegistrySsl: type: object properties: keystoreLocation: type: string keystorePassword: type: string ksqldbServer: type: string ksqldbServerSsl: type: object properties: keystoreLocation: type: string keystorePassword: type: string ksqldbServerAuth: type: object properties: username: type: string password: type: string kafkaConnect: type: array items: type: object properties: name: type: string address: type: string username: type: string password: type: string keystoreLocation: type: string keystorePassword: type: string metrics: type: object properties: type: type: string port: type: integer format: int32 ssl: type: boolean username: type: string password: type: string keystoreLocation: type: string keystorePassword: type: string properties: type: object additionalProperties: true readOnly: type: boolean disableLogDirsCollection: type: boolean serde: type: array items: type: object properties: name: type: string className: type: string filePath: type: string properties: type: object additionalProperties: true topicKeysPattern: type: string topicValuesPattern: type: string defaultKeySerde: type: string defaultValueSerde: type: string masking: type: array items: type: object properties: type: type: string enum: - REMOVE - MASK - REPLACE fields: type: array items: type: string fieldsNamePattern: type: string maskingCharsReplacement: type: array items: type: string replacement: type: string topicKeysPattern: type: string topicValuesPattern: type: string pollingThrottleRate: type: integer format: int64