Strimzi Consumer API
Endpoints for managing consumer groups and consuming messages from Kafka topics via HTTP long-polling.
Endpoints for managing consumer groups and consuming messages from Kafka topics via HTTP long-polling.
openapi: 3.1.0
info:
title: Strimzi Kafka Bridge REST Consumer API
description: The Strimzi Kafka Bridge provides an HTTP/REST interface to Apache Kafka. It allows HTTP clients to produce and consume messages, manage consumer group subscriptions, and query topic metadata without needing a native Kafka client library. The Bridge acts as a protocol translator between HTTP and the Kafka protocol. Deploy via the KafkaBridge custom resource.
version: 0.28.0
contact:
name: Strimzi Community
url: https://strimzi.io
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: http://localhost:8080
description: Kafka Bridge (default local port)
tags:
- name: Consumer
description: Endpoints for managing consumer groups and consuming messages from Kafka topics via HTTP long-polling.
paths:
/consumers/{groupid}:
post:
operationId: createConsumer
summary: Create Consumer
description: Creates a new Kafka consumer instance in the specified consumer group. Returns a base URI for subsequent consumer operations. Consumer instances are not thread-safe and must be used by a single client.
tags:
- Consumer
parameters:
- name: groupid
in: path
required: true
description: The consumer group ID
schema:
type: string
requestBody:
required: true
content:
application/vnd.kafka.v2+json:
schema:
$ref: '#/components/schemas/Consumer'
responses:
'200':
description: Consumer created successfully
content:
application/vnd.kafka.v2+json:
schema:
$ref: '#/components/schemas/CreatedConsumer'
'409':
$ref: '#/components/responses/Conflict'
/consumers/{groupid}/instances/{name}:
delete:
operationId: deleteConsumer
summary: Delete Consumer
description: Destroys a consumer instance and removes it from the consumer group. Any subscriptions and assignments are also removed.
tags:
- Consumer
parameters:
- name: groupid
in: path
required: true
description: The consumer group ID
schema:
type: string
- name: name
in: path
required: true
description: The unique name for the consumer instance
schema:
type: string
responses:
'204':
description: Consumer deleted successfully
'404':
$ref: '#/components/responses/ConsumerNotFound'
/consumers/{groupid}/instances/{name}/subscription:
post:
operationId: subscribe
summary: Subscribe to Topics
description: Subscribes a consumer to one or more Kafka topics. The consumer will receive messages from all partitions of the subscribed topics, with partitions assigned by the Kafka broker.
tags:
- Consumer
parameters:
- name: groupid
in: path
required: true
description: The consumer group ID
schema:
type: string
- name: name
in: path
required: true
description: The unique name for the consumer instance
schema:
type: string
requestBody:
required: true
content:
application/vnd.kafka.v2+json:
schema:
$ref: '#/components/schemas/Topics'
responses:
'204':
description: Consumer subscribed successfully
'404':
$ref: '#/components/responses/ConsumerNotFound'
'409':
$ref: '#/components/responses/Conflict'
get:
operationId: listSubscriptions
summary: List Topic Subscriptions
description: Returns the list of topics to which a consumer is subscribed.
tags:
- Consumer
parameters:
- name: groupid
in: path
required: true
description: The consumer group ID
schema:
type: string
- name: name
in: path
required: true
description: The unique name for the consumer instance
schema:
type: string
responses:
'200':
description: The subscriptions list
content:
application/vnd.kafka.v2+json:
schema:
$ref: '#/components/schemas/SubscribedTopicList'
'404':
$ref: '#/components/responses/ConsumerNotFound'
delete:
operationId: unsubscribe
summary: Unsubscribe from Topics
description: Removes the current subscription for a consumer, unsubscribing it from all topics.
tags:
- Consumer
parameters:
- name: groupid
in: path
required: true
description: The consumer group ID
schema:
type: string
- name: name
in: path
required: true
description: The unique name for the consumer instance
schema:
type: string
responses:
'204':
description: Consumer unsubscribed successfully
'404':
$ref: '#/components/responses/ConsumerNotFound'
/consumers/{groupid}/instances/{name}/records:
get:
operationId: poll
summary: Poll for Records
description: Fetches records from the topics to which the consumer is subscribed. Returns an empty array if no records are available. Calls are long-polled — the server waits up to the timeout for records to become available.
tags:
- Consumer
parameters:
- name: groupid
in: path
required: true
description: The consumer group ID
schema:
type: string
- name: name
in: path
required: true
description: The unique name for the consumer instance
schema:
type: string
- name: timeout
in: query
description: Maximum time in milliseconds to wait for records
schema:
type: integer
default: 1000
- name: max_bytes
in: query
description: Maximum total bytes to return in the response
schema:
type: integer
responses:
'200':
description: A list of consumed records
content:
application/vnd.kafka.json.v2+json:
schema:
type: array
items:
$ref: '#/components/schemas/ConsumerRecord'
'404':
$ref: '#/components/responses/ConsumerNotFound'
/consumers/{groupid}/instances/{name}/offsets:
post:
operationId: commit
summary: Commit Offsets
description: Commits offsets for one or more topic partitions for the consumer. Committed offsets are used to resume consumption after a restart.
tags:
- Consumer
parameters:
- name: groupid
in: path
required: true
description: The consumer group ID
schema:
type: string
- name: name
in: path
required: true
description: The unique name for the consumer instance
schema:
type: string
requestBody:
content:
application/vnd.kafka.v2+json:
schema:
$ref: '#/components/schemas/OffsetCommitSeekList'
responses:
'204':
description: Offsets committed successfully
'404':
$ref: '#/components/responses/ConsumerNotFound'
components:
schemas:
CreatedConsumer:
type: object
properties:
instance_id:
type: string
description: The ID of the created consumer instance
base_uri:
type: string
description: The base URI for subsequent requests for this consumer
ConsumerRecord:
type: object
properties:
topic:
type: string
description: The topic the record was consumed from
key:
description: The message key
value:
description: The message value
partition:
type: integer
description: The partition the record came from
offset:
type: integer
description: The offset of the record
headers:
type: object
additionalProperties:
type: string
description: Message headers
timestamp:
type: integer
description: Message timestamp in milliseconds since epoch
Error:
type: object
properties:
error_code:
type: integer
description: The error code
message:
type: string
description: A human-readable error message
Consumer:
type: object
properties:
name:
type: string
description: A unique name for the consumer instance
auto.offset.reset:
type: string
enum:
- latest
- earliest
- none
default: latest
description: What to do when there is no initial offset
format:
type: string
enum:
- json
- binary
default: json
description: The message format for consuming records
enable.auto.commit:
type: boolean
default: true
description: If true, offsets are committed automatically
fetch.min.bytes:
type: integer
description: Minimum bytes to return per poll
consumer.request.timeout.ms:
type: integer
description: Maximum time for consumer requests in milliseconds
isolation.level:
type: string
enum:
- read_uncommitted
- read_committed
default: read_uncommitted
OffsetCommitSeekList:
type: object
properties:
offsets:
type: array
items:
$ref: '#/components/schemas/OffsetCommitSeek'
SubscribedTopicList:
type: object
properties:
topics:
type: array
items:
type: string
Topics:
type: object
properties:
topics:
type: array
items:
type: string
description: List of topic names to subscribe to
OffsetCommitSeek:
type: object
properties:
topic:
type: string
description: The topic name
partition:
type: integer
description: The partition number
offset:
type: integer
description: The offset to commit or seek to
metadata:
type: string
description: Optional metadata string to store with the committed offset
responses:
ConsumerNotFound:
description: Consumer not found
content:
application/vnd.kafka.v2+json:
schema:
$ref: '#/components/schemas/Error'
Conflict:
description: Conflict — consumer with the same name already exists
content:
application/vnd.kafka.v2+json:
schema:
$ref: '#/components/schemas/Error'
externalDocs:
description: Strimzi Kafka Bridge Documentation
url: https://strimzi.io/docs/bridge/latest/