You've already forked DataMate
640 lines
14 KiB
YAML
640 lines
14 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Pipeline Orchestration Service API
|
|
description: 流程编排服务API - 可视化、模板、执行计划
|
|
version: 1.0.0
|
|
contact:
|
|
name: Data Mate Platform Team
|
|
|
|
servers:
|
|
- url: http://localhost:8087
|
|
description: Development server
|
|
|
|
tags:
|
|
- name: pipelines
|
|
description: 流水线管理
|
|
- name: pipeline-templates
|
|
description: 流水线模板
|
|
- name: executions
|
|
description: 执行管理
|
|
- name: workflows
|
|
description: 工作流编排
|
|
|
|
paths:
|
|
/api/v1/pipelines:
|
|
get:
|
|
tags:
|
|
- pipelines
|
|
summary: 获取流水线列表
|
|
parameters:
|
|
- name: page
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: size
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 20
|
|
- name: status
|
|
in: query
|
|
schema:
|
|
$ref: '#/components/schemas/PipelineStatus'
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PipelinePageResponse'
|
|
|
|
post:
|
|
tags:
|
|
- pipelines
|
|
summary: 创建流水线
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreatePipelineRequest'
|
|
responses:
|
|
'201':
|
|
description: 创建成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PipelineResponse'
|
|
|
|
/api/v1/pipelines/{pipelineId}:
|
|
get:
|
|
tags:
|
|
- pipelines
|
|
summary: 获取流水线详情
|
|
parameters:
|
|
- name: pipelineId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PipelineDetailResponse'
|
|
|
|
put:
|
|
tags:
|
|
- pipelines
|
|
summary: 更新流水线
|
|
parameters:
|
|
- name: pipelineId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdatePipelineRequest'
|
|
responses:
|
|
'200':
|
|
description: 更新成功
|
|
|
|
/api/v1/pipelines/{pipelineId}/execute:
|
|
post:
|
|
tags:
|
|
- executions
|
|
summary: 执行流水线
|
|
parameters:
|
|
- name: pipelineId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: false
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ExecutePipelineRequest'
|
|
responses:
|
|
'200':
|
|
description: 执行开始
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PipelineExecutionResponse'
|
|
|
|
/api/v1/executions:
|
|
get:
|
|
tags:
|
|
- executions
|
|
summary: 获取执行历史
|
|
parameters:
|
|
- name: pipelineId
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: status
|
|
in: query
|
|
schema:
|
|
$ref: '#/components/schemas/ExecutionStatus'
|
|
- name: page
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ExecutionPageResponse'
|
|
|
|
/api/v1/executions/{executionId}:
|
|
get:
|
|
tags:
|
|
- executions
|
|
summary: 获取执行详情
|
|
parameters:
|
|
- name: executionId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ExecutionDetailResponse'
|
|
|
|
/api/v1/executions/{executionId}/stop:
|
|
post:
|
|
tags:
|
|
- executions
|
|
summary: 停止执行
|
|
parameters:
|
|
- name: executionId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 停止成功
|
|
|
|
/api/v1/templates:
|
|
get:
|
|
tags:
|
|
- pipeline-templates
|
|
summary: 获取模板列表
|
|
parameters:
|
|
- name: category
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 获取成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PipelineTemplateResponse'
|
|
|
|
post:
|
|
tags:
|
|
- pipeline-templates
|
|
summary: 创建模板
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreatePipelineTemplateRequest'
|
|
responses:
|
|
'201':
|
|
description: 创建成功
|
|
|
|
components:
|
|
schemas:
|
|
PipelineResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/PipelineStatus'
|
|
version:
|
|
type: string
|
|
category:
|
|
type: string
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
createdBy:
|
|
type: string
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
lastModified:
|
|
type: string
|
|
format: date-time
|
|
|
|
PipelineDetailResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/PipelineResponse'
|
|
- type: object
|
|
properties:
|
|
definition:
|
|
$ref: '#/components/schemas/PipelineDefinition'
|
|
parameters:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PipelineParameter'
|
|
dependencies:
|
|
type: array
|
|
items:
|
|
type: string
|
|
statistics:
|
|
$ref: '#/components/schemas/PipelineStatistics'
|
|
|
|
PipelinePageResponse:
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PipelineResponse'
|
|
totalElements:
|
|
type: integer
|
|
format: int64
|
|
totalPages:
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
number:
|
|
type: integer
|
|
|
|
CreatePipelineRequest:
|
|
type: object
|
|
required:
|
|
- name
|
|
- definition
|
|
properties:
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
category:
|
|
type: string
|
|
definition:
|
|
$ref: '#/components/schemas/PipelineDefinition'
|
|
parameters:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PipelineParameter'
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
|
|
UpdatePipelineRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
definition:
|
|
$ref: '#/components/schemas/PipelineDefinition'
|
|
status:
|
|
$ref: '#/components/schemas/PipelineStatus'
|
|
|
|
ExecutePipelineRequest:
|
|
type: object
|
|
properties:
|
|
parameters:
|
|
type: object
|
|
description: 执行参数
|
|
environment:
|
|
type: string
|
|
description: 执行环境
|
|
priority:
|
|
type: integer
|
|
description: 优先级
|
|
|
|
PipelineExecutionResponse:
|
|
type: object
|
|
properties:
|
|
executionId:
|
|
type: string
|
|
pipelineId:
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/ExecutionStatus'
|
|
startTime:
|
|
type: string
|
|
format: date-time
|
|
message:
|
|
type: string
|
|
|
|
ExecutionResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
pipelineId:
|
|
type: string
|
|
pipelineName:
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/ExecutionStatus'
|
|
progress:
|
|
type: number
|
|
format: double
|
|
startTime:
|
|
type: string
|
|
format: date-time
|
|
endTime:
|
|
type: string
|
|
format: date-time
|
|
duration:
|
|
type: integer
|
|
format: int64
|
|
description: 执行时长(毫秒)
|
|
|
|
ExecutionDetailResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/ExecutionResponse'
|
|
- type: object
|
|
properties:
|
|
steps:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ExecutionStep'
|
|
logs:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ExecutionLog'
|
|
metrics:
|
|
$ref: '#/components/schemas/ExecutionMetrics'
|
|
artifacts:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ExecutionArtifact'
|
|
|
|
ExecutionPageResponse:
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ExecutionResponse'
|
|
totalElements:
|
|
type: integer
|
|
format: int64
|
|
totalPages:
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
number:
|
|
type: integer
|
|
|
|
PipelineTemplateResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
category:
|
|
type: string
|
|
version:
|
|
type: string
|
|
definition:
|
|
$ref: '#/components/schemas/PipelineDefinition'
|
|
usageCount:
|
|
type: integer
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
CreatePipelineTemplateRequest:
|
|
type: object
|
|
required:
|
|
- name
|
|
- definition
|
|
properties:
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
category:
|
|
type: string
|
|
definition:
|
|
$ref: '#/components/schemas/PipelineDefinition'
|
|
|
|
PipelineDefinition:
|
|
type: object
|
|
properties:
|
|
nodes:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PipelineNode'
|
|
edges:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PipelineEdge'
|
|
settings:
|
|
type: object
|
|
description: 流水线设置
|
|
|
|
PipelineNode:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
type:
|
|
type: string
|
|
enum: [OPERATOR, CONDITION, LOOP, PARALLEL]
|
|
name:
|
|
type: string
|
|
operatorId:
|
|
type: string
|
|
configuration:
|
|
type: object
|
|
position:
|
|
$ref: '#/components/schemas/NodePosition'
|
|
|
|
PipelineEdge:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
source:
|
|
type: string
|
|
target:
|
|
type: string
|
|
condition:
|
|
type: string
|
|
type:
|
|
type: string
|
|
enum: [SUCCESS, FAILURE, ALWAYS]
|
|
|
|
NodePosition:
|
|
type: object
|
|
properties:
|
|
x:
|
|
type: number
|
|
y:
|
|
type: number
|
|
|
|
PipelineParameter:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
required:
|
|
type: boolean
|
|
defaultValue:
|
|
type: string
|
|
description:
|
|
type: string
|
|
|
|
PipelineStatistics:
|
|
type: object
|
|
properties:
|
|
totalExecutions:
|
|
type: integer
|
|
successfulExecutions:
|
|
type: integer
|
|
failedExecutions:
|
|
type: integer
|
|
averageDuration:
|
|
type: number
|
|
format: double
|
|
lastExecutionTime:
|
|
type: string
|
|
format: date-time
|
|
|
|
ExecutionStep:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
nodeId:
|
|
type: string
|
|
name:
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/ExecutionStatus'
|
|
startTime:
|
|
type: string
|
|
format: date-time
|
|
endTime:
|
|
type: string
|
|
format: date-time
|
|
duration:
|
|
type: integer
|
|
format: int64
|
|
message:
|
|
type: string
|
|
|
|
ExecutionLog:
|
|
type: object
|
|
properties:
|
|
timestamp:
|
|
type: string
|
|
format: date-time
|
|
level:
|
|
type: string
|
|
enum: [DEBUG, INFO, WARN, ERROR]
|
|
nodeId:
|
|
type: string
|
|
message:
|
|
type: string
|
|
|
|
ExecutionMetrics:
|
|
type: object
|
|
properties:
|
|
totalNodes:
|
|
type: integer
|
|
completedNodes:
|
|
type: integer
|
|
failedNodes:
|
|
type: integer
|
|
cpuUsage:
|
|
type: number
|
|
format: double
|
|
memoryUsage:
|
|
type: number
|
|
format: double
|
|
throughput:
|
|
type: number
|
|
format: double
|
|
|
|
ExecutionArtifact:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
size:
|
|
type: integer
|
|
format: int64
|
|
path:
|
|
type: string
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
PipelineStatus:
|
|
type: string
|
|
enum:
|
|
- DRAFT
|
|
- ACTIVE
|
|
- INACTIVE
|
|
- DEPRECATED
|
|
|
|
ExecutionStatus:
|
|
type: string
|
|
enum:
|
|
- PENDING
|
|
- RUNNING
|
|
- SUCCESS
|
|
- FAILED
|
|
- CANCELLED
|
|
- SKIPPED
|
|
|
|
securitySchemes:
|
|
BearerAuth:
|
|
type: http
|
|
scheme: bearer
|
|
bearerFormat: JWT
|
|
|
|
security:
|
|
- BearerAuth: []
|