Streamkap Tags API
Create, search, update, and delete tags used to label and group sources, destinations, pipelines, transforms, and topics for organization and bulk operations.
Create, search, update, and delete tags used to label and group sources, destinations, pipelines, transforms, and topics for organization and bulk operations.
openapi: 3.0.3
info:
title: Streamkap API
description: >-
Representative specification of the Streamkap REST API for provisioning and
operating real-time streaming ETL / change data capture (CDC) infrastructure
built on Apache Kafka and Apache Flink. Covers sources, destinations,
pipelines, connectors, transforms, topics, tags, Kafka access, and
authentication. Endpoints and shapes are modeled from the public Streamkap
API reference; consult docs.streamkap.com for the authoritative, complete
contract.
termsOfService: https://streamkap.com/terms
contact:
name: Streamkap Support
url: https://streamkap.com/contact
version: '1.0'
servers:
- url: https://api.streamkap.com/api
description: Streamkap production API
security:
- bearerAuth: []
tags:
- name: Authentication
description: Obtain and refresh access tokens and manage credentials.
- name: Sources
description: Configure source connectors and snapshots.
- name: Destinations
description: Configure and manage sink destinations.
- name: Pipelines
description: Manage CDC pipelines and their lifecycle.
- name: Connectors
description: Discover available connector types.
- name: Transforms
description: Deploy and manage in-stream transforms.
- name: Topics
description: Manage underlying Kafka topics.
- name: Tags
description: Create and manage resource tags.
- name: Kafka Access
description: Manage Kafka users and permissions.
paths:
/authentication/access-token:
post:
operationId: createAccessToken
tags:
- Authentication
summary: Exchange credentials for a JWT access token.
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AccessTokenRequest'
responses:
'200':
description: Access token issued.
content:
application/json:
schema:
$ref: '#/components/schemas/AccessTokenResponse'
'422':
$ref: '#/components/responses/ValidationError'
/authentication/refresh-access-token:
post:
operationId: refreshAccessToken
tags:
- Authentication
summary: Refresh an access token using a refresh token.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
refreshToken:
type: string
required:
- refreshToken
responses:
'200':
description: Refreshed access token.
content:
application/json:
schema:
$ref: '#/components/schemas/AccessTokenResponse'
/authentication/whoami:
get:
operationId: whoami
tags:
- Authentication
summary: Return the caller's verified identity.
responses:
'200':
description: Caller identity.
content:
application/json:
schema:
type: object
properties:
userId:
type: string
tenantId:
type: string
email:
type: string
/sources:
get:
operationId: listSources
tags:
- Sources
summary: List all sources with filtering.
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: A list of sources.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Source'
post:
operationId: createSource
tags:
- Sources
summary: Create a new source connector.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SourceInput'
responses:
'201':
description: Source created.
content:
application/json:
schema:
$ref: '#/components/schemas/Source'
/sources/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getSource
tags:
- Sources
summary: Retrieve specific source details.
responses:
'200':
description: Source details.
content:
application/json:
schema:
$ref: '#/components/schemas/Source'
put:
operationId: updateSource
tags:
- Sources
summary: Update an existing source connector.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SourceInput'
responses:
'200':
description: Source updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Source'
delete:
operationId: deleteSource
tags:
- Sources
summary: Delete a source.
responses:
'204':
description: Source deleted.
/sources/connectors:
get:
operationId: listSourceConnectors
tags:
- Connectors
summary: List available source connector types.
responses:
'200':
description: Available source connectors.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Connector'
/sources/execute-incremental-snapshot:
post:
operationId: executeIncrementalSnapshot
tags:
- Sources
summary: Execute an incremental snapshot on a source.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SnapshotRequest'
responses:
'202':
description: Snapshot accepted.
/destinations:
get:
operationId: listDestinations
tags:
- Destinations
summary: List all destinations with filtering.
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: A list of destinations.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Destination'
post:
operationId: createDestination
tags:
- Destinations
summary: Create a new destination.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DestinationInput'
responses:
'201':
description: Destination created.
content:
application/json:
schema:
$ref: '#/components/schemas/Destination'
/destinations/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getDestination
tags:
- Destinations
summary: Retrieve specific destination details.
responses:
'200':
description: Destination details.
content:
application/json:
schema:
$ref: '#/components/schemas/Destination'
put:
operationId: updateDestination
tags:
- Destinations
summary: Update an existing destination.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DestinationInput'
responses:
'200':
description: Destination updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Destination'
delete:
operationId: deleteDestination
tags:
- Destinations
summary: Delete a destination.
responses:
'204':
description: Destination deleted.
/destinations/connectors:
get:
operationId: listDestinationConnectors
tags:
- Connectors
summary: List available destination connector types.
responses:
'200':
description: Available destination connectors.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Connector'
/pipelines:
get:
operationId: listPipelines
tags:
- Pipelines
summary: List all pipelines with filtering.
responses:
'200':
description: A list of pipelines.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pipeline'
post:
operationId: createPipeline
tags:
- Pipelines
summary: Create a new pipeline.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineInput'
responses:
'201':
description: Pipeline created.
content:
application/json:
schema:
$ref: '#/components/schemas/Pipeline'
/pipelines/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getPipeline
tags:
- Pipelines
summary: Retrieve specific pipeline details.
responses:
'200':
description: Pipeline details.
content:
application/json:
schema:
$ref: '#/components/schemas/Pipeline'
delete:
operationId: deletePipeline
tags:
- Pipelines
summary: Delete a pipeline.
responses:
'204':
description: Pipeline deleted.
/transforms:
get:
operationId: listTransforms
tags:
- Transforms
summary: List all transforms with filtering.
responses:
'200':
description: A list of transforms.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Transform'
post:
operationId: createTransform
tags:
- Transforms
summary: Create a new transform.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TransformInput'
responses:
'201':
description: Transform created.
content:
application/json:
schema:
$ref: '#/components/schemas/Transform'
/transforms/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getTransform
tags:
- Transforms
summary: Get full transform details.
responses:
'200':
description: Transform details.
content:
application/json:
schema:
$ref: '#/components/schemas/Transform'
delete:
operationId: deleteTransform
tags:
- Transforms
summary: Delete a transform.
responses:
'204':
description: Transform deleted.
/transforms/deploy-live:
post:
operationId: deployTransformLive
tags:
- Transforms
summary: Deploy a transform job to live.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
id:
type: string
required:
- id
responses:
'202':
description: Deploy accepted.
/topics:
get:
operationId: listTopics
tags:
- Topics
summary: List all topics with filtering.
responses:
'200':
description: A list of topics.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Topic'
post:
operationId: createTopic
tags:
- Topics
summary: Create a new Kafka topic.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TopicInput'
responses:
'201':
description: Topic created.
content:
application/json:
schema:
$ref: '#/components/schemas/Topic'
/topics/{id}/messages:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getTopicMessages
tags:
- Topics
summary: Get messages for a topic.
responses:
'200':
description: Topic messages.
content:
application/json:
schema:
type: array
items:
type: object
/tags:
get:
operationId: listTags
tags:
- Tags
summary: Get tags by type.
responses:
'200':
description: A list of tags.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Tag'
post:
operationId: createTag
tags:
- Tags
summary: Create a new tag.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TagInput'
responses:
'201':
description: Tag created.
content:
application/json:
schema:
$ref: '#/components/schemas/Tag'
/kafka-access/users:
get:
operationId: listKafkaUsers
tags:
- Kafka Access
summary: List Kafka users.
responses:
'200':
description: A list of Kafka users.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/KafkaUser'
post:
operationId: createKafkaUser
tags:
- Kafka Access
summary: Create a new Kafka user.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/KafkaUserInput'
responses:
'201':
description: Kafka user created.
content:
application/json:
schema:
$ref: '#/components/schemas/KafkaUser'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: >-
JWT access token obtained from POST /authentication/access-token by
exchanging a client-id and secret (or a project key). Passed as
Authorization: Bearer <token>.
parameters:
Id:
name: id
in: path
required: true
description: Resource identifier.
schema:
type: string
Page:
name: page
in: query
required: false
schema:
type: integer
default: 1
Limit:
name: limit
in: query
required: false
schema:
type: integer
default: 20
responses:
ValidationError:
description: Validation error.
content:
application/json:
schema:
type: object
properties:
detail:
type: array
items:
type: object
properties:
loc:
type: array
items:
type: string
msg:
type: string
type:
type: string
schemas:
AccessTokenRequest:
type: object
description: Provide either client_id + secret, or a project_key.
properties:
client_id:
type: string
maxLength: 256
secret:
type: string
maxLength: 512
project_key:
type: string
maxLength: 8192
AccessTokenResponse:
type: object
properties:
accessToken:
type: string
refreshToken:
type: string
expiresIn:
type: integer
expires:
type: string
Source:
type: object
properties:
id:
type: string
name:
type: string
connector:
type: string
description: Source connector type, e.g. postgresql, mysql, mongodb.
status:
type: string
enum: [PENDING, ACTIVE, PAUSED, STOPPED, FAILED]
config:
type: object
additionalProperties: true
tags:
type: array
items:
type: string
SourceInput:
type: object
required:
- name
- connector
- config
properties:
name:
type: string
connector:
type: string
config:
type: object
additionalProperties: true
tags:
type: array
items:
type: string
Destination:
type: object
properties:
id:
type: string
name:
type: string
connector:
type: string
description: Destination connector type, e.g. snowflake, databricks, bigquery, clickhouse.
status:
type: string
enum: [PENDING, ACTIVE, PAUSED, STOPPED, FAILED]
config:
type: object
additionalProperties: true
DestinationInput:
type: object
required:
- name
- connector
- config
properties:
name:
type: string
connector:
type: string
config:
type: object
additionalProperties: true
Pipeline:
type: object
properties:
id:
type: string
name:
type: string
sourceId:
type: string
destinationId:
type: string
transformIds:
type: array
items:
type: string
status:
type: string
PipelineInput:
type: object
required:
- name
- sourceId
- destinationId
properties:
name:
type: string
sourceId:
type: string
destinationId:
type: string
transformIds:
type: array
items:
type: string
Connector:
type: object
properties:
name:
type: string
displayName:
type: string
category:
type: string
enum: [source, destination]
configSchema:
type: object
additionalProperties: true
Transform:
type: object
properties:
id:
type: string
name:
type: string
language:
type: string
enum: [SQL, Python, TypeScript]
status:
type: string
inputTopics:
type: array
items:
type: string
outputTopics:
type: array
items:
type: string
TransformInput:
type: object
required:
- name
- language
properties:
name:
type: string
language:
type: string
enum: [SQL, Python, TypeScript]
code:
type: string
Topic:
type: object
properties:
id:
type: string
name:
type: string
partitions:
type: integer
replicationFactor:
type: integer
TopicInput:
type: object
required:
- name
properties:
name:
type: string
partitions:
type: integer
replicationFactor:
type: integer
Tag:
type: object
properties:
id:
type: string
name:
type: string
type:
type: string
TagInput:
type: object
required:
- name
properties:
name:
type: string
type:
type: string
KafkaUser:
type: object
properties:
id:
type: string
username:
type: string
acls:
type: array
items:
type: object
KafkaUserInput:
type: object
required:
- username
properties:
username:
type: string
acls:
type: array
items:
type: object
SnapshotRequest:
type: object
required:
- id
properties:
id:
type: string
description: Source id to snapshot.
tables:
type: array
items:
type: string