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: http://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}/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}/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}/topics: get: tags: - Topics summary: getTopics operationId: getTopics parameters: - name: clusterName in: path required: true schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Topic' 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/TopicFormData' responses: 201: description: Created content: application/json: schema: $ref: '#/components/schemas/Topic' /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' 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/TopicFormData' 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}/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]::[timstamp in millis] for specifying timestamps - name: limit in: query schema: type: integer - name: q in: query schema: type: string responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/TopicMessage' 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 /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' /api/clusters/{clusterName}/consumerGroups: get: tags: - Consumer Groups summary: get all ConsumerGroups operationId: getConsumerGroups parameters: - name: clusterName 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}/schemas: post: tags: - Schemas summary: create a new 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 responses: 200: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/SchemaSubject' /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}/connects/{connectName}/connectors: get: tags: - Kafka Connect summary: get all connectors from Kafka Connect service 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}/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' components: schemas: Cluster: type: object properties: name: type: string defaultCluster: type: boolean status: $ref: '#/components/schemas/ServerStatus' brokerCount: type: integer onlinePartitionCount: type: integer topicCount: type: integer bytesInPerSec: type: number bytesOutPerSec: type: number readOnly: type: boolean required: - id - name - status ServerStatus: type: string enum: - online - offline ClusterMetrics: type: object properties: items: type: array items: $ref: '#/components/schemas/Metric' ClusterStats: type: object properties: brokerCount: type: integer zooKeeperStatus: type: integer activeControllers: type: integer onlinePartitionCount: type: integer offlinePartitionCount: type: integer inSyncReplicasCount: type: integer outOfSyncReplicasCount: type: integer underReplicatedPartitionCount: type: integer diskUsage: type: array items: $ref: '#/components/schemas/BrokerDiskUsage' 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' 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 segmentCount: type: integer underReplicatedPartitions: type: integer partitions: type: array items: $ref: "#/components/schemas/Partition" required: - name 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 segmentCount: type: integer underReplicatedPartitions: type: integer required: - name TopicConfig: type: object properties: name: type: string value: type: string defaultValue: type: string required: - name TopicFormData: type: object properties: name: type: string partitions: type: integer replicationFactor: type: integer configs: type: object additionalProperties: type: string required: - name Broker: type: object properties: id: type: integer host: type: string required: - id ConsumerGroup: type: object properties: clusterId: type: string consumerGroupId: type: string numConsumers: type: integer numTopics: type: integer required: - clusterId - consumerGroupId 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: object required: - partition - offset - timestamp SeekType: type: string enum: - BEGINNING - OFFSET - TIMESTAMP 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 ConsumerTopicPartitionDetail: type: object properties: consumerId: type: string topic: type: string host: type: string partition: type: integer currentOffset: type: integer format: int64 endOffset: type: integer format: int64 messagesBehind: type: integer format: int64 required: - consumerId ConsumerGroupDetails: type: object properties: consumerGroupId: type: string consumers: type: array items: $ref: '#/components/schemas/ConsumerTopicPartitionDetail' required: - consumerGroupId Metric: type: object properties: name: type: string canonicalName: type: string params: type: string additionalProperties: type: string value: type: string additionalProperties: type: number 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 properties: subject: type: string schema: type: string schemaType: $ref: '#/components/schemas/SchemaType' 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 enum: - AVRO - JSON - PROTOBUF CompatibilityCheckResponse: type: object properties: isCompatible: type: boolean required: - isCompatible Connect: type: object properties: name: type: string address: type: string 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' 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: type: string enum: - source - sink status: $ref: '#/components/schemas/ConnectorStatus' TaskStatus: type: object properties: id: type: integer state: type: string enum: - RUNNING - FAILED - PAUSED - UNASSIGNED worker_id: type: string trace: type: string ConnectorStatus: type: object properties: state: type: string enum: - RUNNING - FAILED - PAUSED - UNASSIGNED worker_id: type: string ConnectorAction: type: string enum: - restart - 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'