Kafka REST Proxy API

The Kafka REST Proxy provides a RESTful interface to a Kafka cluster for producing and consuming messages, managing topics, partitions, consumer groups, and viewing cluster state without native Kafka clients.

OpenAPI Specification

kafka-rest-proxy.yml Raw ↑
openapi: 3.1.0
info:
  title: Confluent Kafka REST Proxy API
  description: >-
    The Kafka REST Proxy provides a RESTful interface to an Apache Kafka cluster,
    making it easy to produce and consume messages, view the state of the cluster,
    and perform administrative actions without using the native Kafka protocol or clients.
  version: 3.0.0
  contact:
    name: Apache Kafka
    url: https://kafka.apache.org/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: http://localhost:8082
  description: Default Kafka REST Proxy
paths:
  /clusters:
    get:
      summary: Apache kafka List Clusters
      operationId: listClusters
      tags:
      - Cluster
      responses:
        '200':
          description: List of Kafka clusters
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                  metadata:
                    type: object
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Cluster'
              examples:
                listClusters200Example:
                  summary: Default listClusters 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    metadata: {}
                    data: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters/{cluster_id}:
    get:
      summary: Apache kafka Get Cluster
      operationId: getCluster
      tags:
      - Cluster
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-6938
      responses:
        '200':
          description: Cluster details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cluster'
              examples:
                getCluster200Example:
                  summary: Default getCluster 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    metadata: {}
                    cluster_id: item-9562
                    controller: {}
                    brokers: {}
                    topics: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters/{cluster_id}/topics:
    get:
      summary: Apache kafka List Topics
      operationId: listTopics
      tags:
      - Topic
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-8966
      responses:
        '200':
          description: List of topics
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                  metadata:
                    type: object
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Topic'
              examples:
                listTopics200Example:
                  summary: Default listTopics 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    metadata: {}
                    data: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      summary: Apache kafka Create Topic
      operationId: createTopic
      tags:
      - Topic
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-1233
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTopicRequest'
            examples:
              createTopicRequestExample:
                summary: Default createTopic request
                x-microcks-default: true
                value:
                  topic_name: example-name
                  partitions_count: 41
                  replication_factor: 98
                  configs: []
      responses:
        '201':
          description: Topic created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Topic'
              examples:
                createTopic201Example:
                  summary: Default createTopic 201 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    metadata: {}
                    cluster_id: item-7996
                    topic_name: example-name
                    is_internal: true
                    replication_factor: 37
                    partitions_count: 24
                    partitions: {}
                    configs: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters/{cluster_id}/topics/{topic_name}:
    get:
      summary: Apache kafka Get Topic
      operationId: getTopic
      tags:
      - Topic
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-8264
      - name: topic_name
        in: path
        required: true
        schema:
          type: string
        example: example-name
      responses:
        '200':
          description: Topic details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Topic'
              examples:
                getTopic200Example:
                  summary: Default getTopic 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    metadata: {}
                    cluster_id: item-5190
                    topic_name: example-name
                    is_internal: true
                    replication_factor: 52
                    partitions_count: 28
                    partitions: {}
                    configs: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      summary: Apache kafka Delete Topic
      operationId: deleteTopic
      tags:
      - Topic
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-9796
      - name: topic_name
        in: path
        required: true
        schema:
          type: string
        example: example-name
      responses:
        '204':
          description: Topic deleted
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters/{cluster_id}/topics/{topic_name}/partitions:
    get:
      summary: Apache kafka List Partitions
      operationId: listPartitions
      tags:
      - Partition
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-7679
      - name: topic_name
        in: path
        required: true
        schema:
          type: string
        example: example-name
      responses:
        '200':
          description: List of partitions
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Partition'
              examples:
                listPartitions200Example:
                  summary: Default listPartitions 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    data: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters/{cluster_id}/consumer-groups:
    get:
      summary: Apache kafka List Consumer Groups
      operationId: listConsumerGroups
      tags:
      - Consumer Group
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-6701
      responses:
        '200':
          description: List of consumer groups
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ConsumerGroup'
              examples:
                listConsumerGroups200Example:
                  summary: Default listConsumerGroups 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    data: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters/{cluster_id}/consumer-groups/{consumer_group_id}:
    get:
      summary: Apache kafka Get Consumer Group
      operationId: getConsumerGroup
      tags:
      - Consumer Group
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-8506
      - name: consumer_group_id
        in: path
        required: true
        schema:
          type: string
        example: item-4788
      responses:
        '200':
          description: Consumer group details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerGroup'
              examples:
                getConsumerGroup200Example:
                  summary: Default getConsumerGroup 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    metadata: {}
                    cluster_id: item-8575
                    consumer_group_id: item-7715
                    is_simple: true
                    partition_assignor: example-value
                    state: UNKNOWN
                    coordinator: {}
                    consumers: {}
                    lag_summary: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters/{cluster_id}/brokers:
    get:
      summary: Apache kafka List Brokers
      operationId: listBrokers
      tags:
      - Broker
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-2365
      responses:
        '200':
          description: List of brokers
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Broker'
              examples:
                listBrokers200Example:
                  summary: Default listBrokers 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    data: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters/{cluster_id}/acls:
    get:
      summary: Apache kafka Search ACLs
      operationId: searchAcls
      tags:
      - ACL
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-5726
      - name: resource_type
        in: query
        schema:
          type: string
          enum: [UNKNOWN, ANY, TOPIC, GROUP, CLUSTER, TRANSACTIONAL_ID, DELEGATION_TOKEN]
        example: UNKNOWN
      - name: pattern_type
        in: query
        schema:
          type: string
          enum: [UNKNOWN, ANY, MATCH, LITERAL, PREFIXED]
        example: UNKNOWN
      responses:
        '200':
          description: List of ACLs
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Acl'
              examples:
                searchAcls200Example:
                  summary: Default searchAcls 200 response
                  x-microcks-default: true
                  value:
                    kind: example-value
                    data: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      summary: Apache kafka Create ACLs
      operationId: createAcls
      tags:
      - ACL
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-7456
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAclRequest'
            examples:
              createAclsRequestExample:
                summary: Default createAcls request
                x-microcks-default: true
                value:
                  resource_type: example-value
                  resource_name: example-name
                  pattern_type: example-value
                  principal: example-value
                  host: example-value
                  operation: example-value
                  permission: example-value
      responses:
        '201':
          description: ACL created
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      summary: Apache kafka Delete ACLs
      operationId: deleteAcls
      tags:
      - ACL
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
        example: item-2190
      responses:
        '200':
          description: ACLs deleted
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /topics/{topic_name}/records:
    post:
      summary: Apache kafka Produce Records to a Topic
      operationId: produceRecords
      tags:
      - Records
      parameters:
      - name: topic_name
        in: path
        required: true
        schema:
          type: string
        example: example-name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProduceRequest'
            examples:
              produceRecordsRequestExample:
                summary: Default produceRecords request
                x-microcks-default: true
                value:
                  partition_id: 46
                  headers: []
                  key: {}
                  value: {}
      responses:
        '200':
          description: Records produced
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProduceResponse'
              examples:
                produceRecords200Example:
                  summary: Default produceRecords 200 response
                  x-microcks-default: true
                  value:
                    error_code: 17
                    cluster_id: item-5744
                    topic_name: example-name
                    partition_id: 25
                    offset: 62
                    timestamp: '2025-03-15T14:30:00Z'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Cluster:
      type: object
      properties:
        kind:
          type: string
        metadata:
          type: object
          properties:
            self:
              type: string
            resource_name:
              type: string
        cluster_id:
          type: string
        controller:
          type: object
          properties:
            related:
              type: string
        brokers:
          type: object
          properties:
            related:
              type: string
        topics:
          type: object
          properties:
            related:
              type: string
    Topic:
      type: object
      properties:
        kind:
          type: string
        metadata:
          type: object
        cluster_id:
          type: string
        topic_name:
          type: string
        is_internal:
          type: boolean
        replication_factor:
          type: integer
        partitions_count:
          type: integer
        partitions:
          type: object
          properties:
            related:
              type: string
        configs:
          type: object
          properties:
            related:
              type: string
    CreateTopicRequest:
      type: object
      required:
      - topic_name
      properties:
        topic_name:
          type: string
        partitions_count:
          type: integer
        replication_factor:
          type: integer
        configs:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              value:
                type: string
    Partition:
      type: object
      properties:
        kind:
          type: string
        metadata:
          type: object
        cluster_id:
          type: string
        topic_name:
          type: string
        partition_id:
          type: integer
        leader:
          type: object
        replicas:
          type: array
          items:
            type: object
    ConsumerGroup:
      type: object
      properties:
        kind:
          type: string
        metadata:
          type: object
        cluster_id:
          type: string
        consumer_group_id:
          type: string
        is_simple:
          type: boolean
        partition_assignor:
          type: string
        state:
          type: string
          enum: [UNKNOWN, PREPARING_REBALANCE, COMPLETING_REBALANCE, STABLE, DEAD, EMPTY]
        coordinator:
          type: object
        consumers:
          type: object
        lag_summary:
          type: object
    Broker:
      type: object
      properties:
        kind:
          type: string
        metadata:
          type: object
        cluster_id:
          type: string
        broker_id:
          type: integer
        host:
          type: string
        port:
          type: integer
    Acl:
      type: object
      properties:
        kind:
          type: string
        metadata:
          type: object
        cluster_id:
          type: string
        resource_type:
          type: string
        resource_name:
          type: string
        pattern_type:
          type: string
        principal:
          type: string
        host:
          type: string
        operation:
          type: string
        permission:
          type: string
    CreateAclRequest:
      type: object
      required:
      - resource_type
      - resource_name
      - pattern_type
      - principal
      - host
      - operation
      - permission
      properties:
        resource_type:
          type: string
        resource_name:
          type: string
        pattern_type:
          type: string
        principal:
          type: string
        host:
          type: string
        operation:
          type: string
        permission:
          type: string
    ProduceRequest:
      type: object
      properties:
        partition_id:
          type: integer
        headers:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              value:
                type: string
        key:
          type: object
          properties:
            type:
              type: string
              enum: [BINARY, JSON, AVRO, PROTOBUF, JSONSCHEMA]
            data: {}
        value:
          type: object
          properties:
            type:
              type: string
              enum: [BINARY, JSON, AVRO, PROTOBUF, JSONSCHEMA]
            data: {}
    ProduceResponse:
      type: object
      properties:
        error_code:
          type: integer
        cluster_id:
          type: string
        topic_name:
          type: string
        partition_id:
          type: integer
        offset:
          type: integer
        timestamp:
          type: string
          format: date-time