Popsink pipelines API
The pipelines API from Popsink — 9 operation(s) for pipelines.
The pipelines API from Popsink — 9 operation(s) for pipelines.
openapi: 3.1.0
info:
title: Fast admin pipelines API
version: 0.1.0
servers:
- url: /api
tags:
- name: pipelines
paths:
/pipelines/:
get:
tags:
- pipelines
summary: List pipelines
description: Retrieve a paginated list of pipelines with optional filters for state, search keyword, and team.
operationId: pipelines_list_pipelines__get
security:
- OAuth2PasswordBearer: []
parameters:
- name: state
in: query
required: false
schema:
anyOf:
- $ref: '#/components/schemas/PipelineState'
- type: 'null'
description: Filter pipelines by state (e.g., BUILDING, PAUSED).
title: State
description: Filter pipelines by state (e.g., BUILDING, PAUSED).
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Search term to filter pipelines by name or description.
title: Search
description: Search term to filter pipelines by name or description.
- name: team_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
description: Filter pipelines by the ID of the team they belong to.
title: Team Id
description: Filter pipelines by the ID of the team they belong to.
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
default: 1
title: Page
- name: size
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
default: 50
title: Size
responses:
'200':
description: A paginated list of pipelines
content:
application/json:
schema:
$ref: '#/components/schemas/Page_PipelineList_'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- pipelines
summary: Create a new pipeline
description: Register a new pipeline in the system, requires write permissions on the team.
operationId: pipelines_register_pipelines__post
security:
- OAuth2PasswordBearer: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineCreate'
responses:
'201':
description: The created pipeline
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineRead'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/pipelines/count-status:
get:
tags:
- pipelines
summary: Count pipelines by status
description: Return the number of pipelines grouped by their state in the current environment.
operationId: pipelines_count_status_pipelines_count_status_get
responses:
'200':
description: The number of pipelines grouped by their state
content:
application/json:
schema:
$ref: '#/components/schemas/PipelinesStatusCounter'
'403':
description: Access prohibited
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseModel403'
example:
detail: Unauthorized.
security:
- OAuth2PasswordBearer: []
/pipelines/{pipeline_id}:
patch:
tags:
- pipelines
summary: Update a pipeline
description: Update properties of an existing pipeline, requires write permission on the pipeline.
operationId: pipelines_update_pipelines__pipeline_id__patch
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to update
title: Pipeline Id
description: UUID of the pipeline to update
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineUpdate'
responses:
'200':
description: The updated pipeline
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineRead'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- pipelines
summary: Delete a pipeline
description: Delete the specified pipeline, requires delete permission.
operationId: pipelines_delete_pipelines__pipeline_id__delete
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to delete
title: Pipeline Id
description: UUID of the pipeline to delete
responses:
'204':
description: No content
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
get:
tags:
- pipelines
summary: Get pipeline details
description: Retrieve detailed information of a pipeline by its ID.
operationId: pipelines_get_pipelines__pipeline_id__get
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to get
title: Pipeline Id
description: UUID of the pipeline to get
responses:
'200':
description: The pipeline details
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineRead'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/pipelines/{pipeline_id}/start:
post:
tags:
- pipelines
summary: Start pipeline execution
description: Start the pipeline's worker process, requires write permission on the pipeline's team.
operationId: pipelines_start_pipelines__pipeline_id__start_post
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to start
title: Pipeline Id
description: UUID of the pipeline to start
responses:
'200':
description: The updated pipeline state (BUILDING)
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineState'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/pipelines/{pipeline_id}/pause:
post:
tags:
- pipelines
summary: Pause pipeline execution
description: Pause the running pipeline, requires access permission.
operationId: pipelines_pause_pipelines__pipeline_id__pause_post
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to pause
title: Pipeline Id
description: UUID of the pipeline to pause
responses:
'200':
description: The updated pipeline state (PAUSED)
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineState'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/pipelines/{pipeline_id}/logs:
get:
tags:
- pipelines
summary: Get pipeline logs
description: Retrieve logs of a pipeline execution.
operationId: pipelines_logs_pipelines__pipeline_id__logs_get
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to get logs for
title: Pipeline Id
description: UUID of the pipeline to get logs for
responses:
'200':
description: The pipeline logs
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineLogs'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/pipelines/{pipeline_id}/status:
get:
tags:
- pipelines
summary: Get pipeline status
description: Get the current status of the pipeline, refreshing state from worker logs.
operationId: pipelines_status_pipelines__pipeline_id__status_get
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to get status for
title: Pipeline Id
description: UUID of the pipeline to get status for
responses:
'200':
description: The pipeline status
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineRead'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/pipelines/{pipeline_id}/configuration:
get:
tags:
- pipelines
summary: Export pipeline configuration
description: Export the JSON configuration of the pipeline.
operationId: pipelines_export_config_pipelines__pipeline_id__configuration_get
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to export config for
title: Pipeline Id
description: UUID of the pipeline to export config for
responses:
'200':
description: The pipeline configuration
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineConfigAsSerializer-Output'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- pipelines
summary: Import pipeline configuration
description: Update pipeline configuration by importing a new JSON config,requires write permission.
operationId: pipelines_import_config_pipelines__pipeline_id__configuration_post
security:
- OAuth2PasswordBearer: []
parameters:
- name: pipeline_id
in: path
required: true
schema:
type: string
format: uuid
description: UUID of the pipeline to import config for
title: Pipeline Id
description: UUID of the pipeline to import config for
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineConfigAsSerializer-Input'
responses:
'200':
description: The imported pipeline configuration
content:
application/json:
schema:
$ref: '#/components/schemas/PipelineConfigAsSerializer-Output'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/pipelines/status/all-non-draft:
get:
tags:
- pipelines
summary: List status of all non-draft pipelines
description: Retrieve a paginated list of all pipelines that are not in DRAFT state. Supports filtering by state (excluding DRAFT by default), team, and search. Returns pipeline status and summary information.
operationId: pipelines_status_all_non_draft_pipelines_status_all_non_draft_get
security:
- OAuth2PasswordBearer: []
parameters:
- name: state
in: query
required: false
schema:
anyOf:
- $ref: '#/components/schemas/PipelineState'
- type: 'null'
description: Filter pipelines by state (e.g., BUILDING, PAUSED, LIVE, ERROR). If omitted, returns all non-draft pipelines.
title: State
description: Filter pipelines by state (e.g., BUILDING, PAUSED, LIVE, ERROR). If omitted, returns all non-draft pipelines.
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Search term to filter pipelines by name or description.
title: Search
description: Search term to filter pipelines by name or description.
- name: team_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
description: Filter pipelines by the ID of the team they belong to.
title: Team Id
description: Filter pipelines by the ID of the team they belong to.
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
default: 1
title: Page
- name: size
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
default: 50
title: Size
responses:
'200':
description: A paginated list of non-draft pipelines with their status.
content:
application/json:
schema:
$ref: '#/components/schemas/Page_PipelineStateList_'
'403':
description: Access prohibited
content:
application/json:
example:
detail: Unauthorized.
schema:
$ref: '#/components/schemas/ResponseModel403'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
PipelineLogs:
properties:
uuid:
type: string
title: Uuid
description: UUID of the pipeline run or worker
status:
type: string
enum:
- Running
- NotFound
- Pending
- Succeeded
- Failed
- Unknown
title: Status
description: Status of the current pipeline run
count_errors:
type: string
title: Count Errors
description: Number of errors encountered during run
example: '3'
logs:
type: string
title: Logs
description: Logs produced by the pipeline worker
type: object
required:
- uuid
- status
- count_errors
- logs
title: PipelineLogs
description: Status and logs for a pipeline worker.
PipelineState:
type: string
enum:
- draft
- building
- paused
- error
- live
title: PipelineState
description: Handle pipeline states.
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
StringifyFunctionConfiguration:
properties:
function_type:
type: string
const: stringifykey
title: Function Type
function_config:
$ref: '#/components/schemas/KeysConfiguration'
type: object
required:
- function_type
- function_config
title: StringifyFunctionConfiguration
description: Stringify config.
HashFunctionConfiguration:
properties:
function_type:
type: string
const: hash
title: Function Type
function_config:
$ref: '#/components/schemas/HashConfig'
type: object
required:
- function_type
- function_config
title: HashFunctionConfiguration
description: Hash config.
EmptyFunctionConfiguration:
properties:
function_type:
type: 'null'
title: Function Type
function_config:
type: 'null'
title: Function Config
type: object
required:
- function_type
- function_config
title: EmptyFunctionConfiguration
description: Empty function config.
KeyMoverConfig:
properties:
key:
type: string
title: Key
key_path:
type: string
title: Key Path
type: object
required:
- key
- key_path
title: KeyMoverConfig
description: Config for KeyMover function.
EncryptFunctionConfiguration:
properties:
function_type:
type: string
const: encrypt
title: Function Type
function_config:
$ref: '#/components/schemas/EncryptConfiguration'
type: object
required:
- function_type
- function_config
title: EncryptFunctionConfiguration
description: Encrypt function config.
PipelineCreate:
properties:
name:
type: string
title: Name
description: Name of the pipeline
examples:
- data-ingest-pipeline
team_id:
type: string
format: uuid
title: Team Id
description: ID of the team that owns the pipeline
state:
$ref: '#/components/schemas/PipelineState'
description: Current state of the pipeline
json_configuration:
$ref: '#/components/schemas/PipelineConfigAsSerializer-Input'
description: Complete configuration of the pipeline
type: object
required:
- name
- team_id
- state
- json_configuration
title: PipelineCreate
description: Request model for creating a new pipeline.
PipelineList:
properties:
id:
type: string
format: uuid
title: Id
description: Unique identifier of the pipeline
source_name:
type: string
title: Source Name
description: Source connector name
source_type:
anyOf:
- $ref: '#/components/schemas/ConnectorType'
- type: 'null'
description: Source connector type
transform:
type: integer
title: Transform
description: Number of SMT transformations applied
target_name:
type: string
title: Target Name
description: Target connector name
target_type:
anyOf:
- $ref: '#/components/schemas/ConnectorType'
- type: 'null'
description: Target connector type
name:
type: string
title: Name
description: Name of the pipeline
state:
$ref: '#/components/schemas/PipelineState'
description: Current state of the pipeline
owner:
type: string
title: Owner
description: Name of the pipeline's owner
type: object
required:
- id
- source_name
- transform
- target_name
- name
- state
- owner
title: PipelineList
description: Lightweight model used to list pipelines.
PipelineStateList:
properties:
id:
type: string
format: uuid
title: Id
description: Unique identifier of the pipeline
name:
type: string
title: Name
description: Name of the pipeline
state:
$ref: '#/components/schemas/PipelineState'
description: Current state of the pipeline
type: object
required:
- id
- name
- state
title: PipelineStateList
description: Lightweight model used to list pipelines.
KeysConfiguration:
properties:
keys:
items:
type: string
type: array
title: Keys
type: object
required:
- keys
title: KeysConfiguration
description: Keys config.
SplitterFunctionConfiguration:
properties:
function_type:
type: string
const: splitter
title: Function Type
function_config:
$ref: '#/components/schemas/SplitterConfiguration'
type: object
required:
- function_type
- function_config
title: SplitterFunctionConfiguration
description: Splitter config.
FilteringConfiguration:
properties:
operator:
type: string
enum:
- EQUAL
- IN
- NOT_EQUAL
- NOT_IN
title: Operator
key:
type: string
title: Key
value:
type: string
title: Value
type: object
required:
- operator
- key
- value
title: FilteringConfiguration
description: Filtering config.
PipelineConfigAsSerializer-Output:
properties:
source_name:
type: string
title: Source Name
description: Name of the source connector
example: postgres-source
source_type:
anyOf:
- $ref: '#/components/schemas/ConnectorType'
- type: 'null'
description: Type of the source connector
source_config:
additionalProperties:
anyOf:
- type: string
- type: integer
- type: 'null'
type: object
title: Source Config
description: Configuration parameters for the source connector
target_name:
type: string
title: Target Name
description: Name of the target connector
example: kafka-target
target_type:
anyOf:
- $ref: '#/components/schemas/ConnectorType'
- type: 'null'
description: Type of the target connector
target_config:
additionalProperties:
anyOf:
- type: string
- type: integer
- type: 'null'
type: object
title: Target Config
description: Configuration parameters for the target connector
smt_name:
type: string
title: Smt Name
description: Name of the SMT (Simple Message Transform) applied
smt_config:
items:
anyOf:
- $ref: '#/components/schemas/MapperFunctionConfiguration-Output'
- $ref: '#/components/schemas/EmptyFunctionConfiguration'
- $ref: '#/components/schemas/FlattenerFunctionConfiguration'
- $ref: '#/components/schemas/SplitterFunctionConfiguration'
- $ref: '#/components/schemas/StringifyListFunctionConfiguration'
- $ref: '#/components/schemas/StringifyFunctionConfiguration'
- $ref: '#/components/schemas/UnenvelopeFunctionConfiguration'
- $ref: '#/components/schemas/KeyFilterFunctionConfiguration'
- $ref: '#/components/schemas/KeyMoverFunctionConfiguration'
- $ref: '#/components/schemas/DictMoverFunctionConfiguration'
- $ref: '#/components/schemas/KeyNormalizerFunctionConfiguration'
- $ref: '#/components/schemas/HashFunctionConfiguration'
- $ref: '#/components/schemas/EncryptFunctionConfiguration'
- $ref: '#/components/schemas/FilteringFunctionConfiguration'
type: array
title: Smt Config
description: List of transformation configurations
draft_step:
type: string
title: Draft Step
description: Current draft step of the pipeline (e.g., 'config', 'review')
type: object
required:
- source_name
- source_type
- source_config
- target_name
- target_type
- target_config
- smt_name
- smt_config
- draft_step
title: PipelineConfigAsSerializer
description: 'Configuration structure for a pipeline.
Describes connectors and transformation details.'
Page_PipelineList_:
properties:
items:
items:
$ref: '#/components/schemas/PipelineList'
type: array
title: Items
total:
anyOf:
- type: integer
minimum: 0
- type: 'null'
title: Total
page:
anyOf:
- type: integer
minimum: 1
- type: 'null'
title: Page
size:
anyOf:
- type: integer
minimum: 1
- type: 'null'
title: Size
pages:
anyOf:
- type: integer
minimum: 0
- type: 'null'
title: Pages
type: object
required:
- items
- total
- page
- size
title: Page[PipelineList]
KeyMoverFunctionConfiguration:
properties:
function_type:
type: string
const: keymover
title: Function Type
function_config:
items:
$ref: '#/components/schemas/KeyMoverConfig'
type: array
title: Function Config
type: object
required:
- function_type
- function_config
title: KeyMoverFunctionConfiguration
description: Key mover config.
PipelineUpdate:
properties:
name:
anyOf:
- type: string
- type: 'null'
title: Name
description: Updated name of the pipeline
team_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Team Id
description: Updated team ID
state:
anyOf:
- $ref: '#/components/schemas/PipelineState'
- type: 'null'
description: Updated pipeline state
json_configuration:
anyOf:
- $ref: '#/components/schemas/PipelineConfigAsSerializer-Input'
- type: 'null'
description: Updated configuration
type: object
title: PipelineUpdate
description: Request model for updating an existing pipeline.
PipelineRead:
properties:
name:
type: string
title: Name
description: Name of the pipeline
state:
$ref: '#/components/schemas/PipelineState'
description: Current state of the pipeline
json_configuration:
$ref: '#/components/schemas/PipelineConfigAsSerializer-Output'
description: Pipeline configuration structure
id:
type: string
format: uuid
title: Id
description: Unique identifier of the pipeline
team_name:
type: string
title: Team Name
description: Name of the team that owns the pipeline
team_id:
type: string
format: uuid
title: Team Id
description: UUID of the owning team
type: object
required:
- name
- state
- json_configuration
- id
- team_name
- team_id
title: PipelineRead
description: Response model for reading a pipeline's details.
MapperFunctionConfiguration-Input:
properties:
function_type:
type: string
const: mapper
title: Function Type
function_config:
items:
$ref: '#/components/schemas/MapperTableConfig'
type: array
title: Function Config
type: object
required:
- function_type
- function_config
title: MapperFunctionConfiguration
description: Mapper config.
FilteringFunctionConfiguration:
properties:
function_type:
type: string
const: filtering
title: Function
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/popsink/refs/heads/main/openapi/popsink-pipelines-api-openapi.yml