You've already forked DataMate
518 lines
12 KiB
YAML
518 lines
12 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Data Collection Service API
|
|
description: |
|
|
数据归集服务API,基于数据归集实现数据采集和归集功能。
|
|
|
|
主要功能:
|
|
- 数据归集任务创建和管理
|
|
- 数据同步任务执行
|
|
- 任务监控和状态查询
|
|
- 执行日志查看
|
|
|
|
version: 1.0.0
|
|
|
|
servers:
|
|
- url: http://localhost:8090/api/v1/collection
|
|
description: Development server
|
|
|
|
tags:
|
|
- name: CollectionTask
|
|
description: 数据归集任务管理(包括模板查询)
|
|
- name: TaskExecution
|
|
description: 任务执行管理
|
|
|
|
paths:
|
|
/data-collection/tasks:
|
|
get:
|
|
operationId: getTasks
|
|
tags: [CollectionTask]
|
|
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/TaskStatus'
|
|
- name: name
|
|
in: query
|
|
description: 任务名称关键字搜索
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 归集任务列表
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PagedCollectionTaskSummary'
|
|
|
|
post:
|
|
operationId: createTask
|
|
tags: [CollectionTask]
|
|
summary: 创建归集任务
|
|
description: 创建新的数据归集任务
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CreateCollectionTaskRequest'
|
|
responses:
|
|
'201':
|
|
description: 归集任务创建成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CollectionTaskResponse'
|
|
|
|
/data-collection/tasks/{id}:
|
|
get:
|
|
operationId: getTaskDetail
|
|
tags: [CollectionTask]
|
|
summary: 获取归集任务详情
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 归集任务详情
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CollectionTaskResponse'
|
|
'404':
|
|
description: 归集任务不存在
|
|
|
|
put:
|
|
operationId: updateTask
|
|
tags: [CollectionTask]
|
|
summary: 更新归集任务
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UpdateCollectionTaskRequest'
|
|
responses:
|
|
'200':
|
|
description: 归集任务更新成功
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CollectionTaskResponse'
|
|
|
|
delete:
|
|
operationId: deleteTask
|
|
tags: [CollectionTask]
|
|
summary: 删除归集任务
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'204':
|
|
description: 归集任务删除成功
|
|
|
|
/tasks/{id}/execute:
|
|
post:
|
|
tags: [TaskExecution]
|
|
summary: 执行归集任务
|
|
description: 立即执行指定的归集任务
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'201':
|
|
description: 任务执行已启动
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TaskExecutionResponse'
|
|
|
|
/tasks/{id}/executions:
|
|
get:
|
|
tags: [TaskExecution]
|
|
summary: 获取任务执行记录
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: page
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: size
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 20
|
|
responses:
|
|
'200':
|
|
description: 任务执行记录列表
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PagedTaskExecutions'
|
|
|
|
/executions/{id}:
|
|
get:
|
|
tags: [TaskExecution]
|
|
summary: 获取执行详情
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: 执行详情
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TaskExecutionDetail'
|
|
|
|
delete:
|
|
tags: [TaskExecution]
|
|
summary: 停止任务执行
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'204':
|
|
description: 任务执行已停止
|
|
|
|
/templates:
|
|
get:
|
|
tags: [CollectionTask]
|
|
summary: 获取DataX模板列表
|
|
description: 获取可用的DataX任务模板列表,用于创建任务时选择
|
|
parameters:
|
|
- name: sourceType
|
|
in: query
|
|
description: 源数据源类型过滤
|
|
schema:
|
|
type: string
|
|
- name: targetType
|
|
in: query
|
|
description: 目标数据源类型过滤
|
|
schema:
|
|
type: string
|
|
- name: page
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 0
|
|
- name: size
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
default: 20
|
|
responses:
|
|
'200':
|
|
description: 归集模板列表
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PagedDataxTemplates'
|
|
|
|
components:
|
|
schemas:
|
|
TaskStatus:
|
|
type: string
|
|
enum:
|
|
- DRAFT
|
|
- READY
|
|
- RUNNING
|
|
- SUCCESS
|
|
- FAILED
|
|
- STOPPED
|
|
description: |
|
|
任务和执行状态枚举:
|
|
- DRAFT: 草稿状态
|
|
- READY: 就绪状态
|
|
- RUNNING: 运行中
|
|
- SUCCESS: 执行成功 (对应原来的COMPLETED/SUCCESS)
|
|
- FAILED: 执行失败
|
|
- STOPPED: 已停止
|
|
|
|
SyncMode:
|
|
type: string
|
|
enum: [ONCE, SCHEDULED]
|
|
description: 同步方式:一次性(ONCE) 或 定时(SCHEDULED)
|
|
|
|
CollectionTaskSummary:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/TaskStatus'
|
|
syncMode:
|
|
$ref: '#/components/schemas/SyncMode'
|
|
lastExecutionId:
|
|
type: string
|
|
description: 最后执行ID
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
updatedAt:
|
|
type: string
|
|
format: date-time
|
|
description: 任务列表摘要信息(不包含详细配置与调度表达式)
|
|
|
|
CollectionTaskResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
description:
|
|
type: string
|
|
config:
|
|
type: object
|
|
additionalProperties: true
|
|
description: 归集配置,包含源端和目标端配置信息
|
|
status:
|
|
$ref: '#/components/schemas/TaskStatus'
|
|
syncMode:
|
|
$ref: '#/components/schemas/SyncMode'
|
|
scheduleExpression:
|
|
type: string
|
|
description: Cron调度表达式 (仅当 syncMode = SCHEDULED 时有效)
|
|
lastExecutionId:
|
|
type: string
|
|
description: 最后执行ID
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
updatedAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
CreateCollectionTaskRequest:
|
|
type: object
|
|
required:
|
|
- name
|
|
- config
|
|
- syncMode
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: 任务名称
|
|
minLength: 1
|
|
maxLength: 100
|
|
description:
|
|
type: string
|
|
description: 任务描述
|
|
maxLength: 500
|
|
config:
|
|
type: object
|
|
description: 归集配置,包含源端和目标端配置信息
|
|
additionalProperties: true
|
|
syncMode:
|
|
$ref: '#/components/schemas/SyncMode'
|
|
scheduleExpression:
|
|
type: string
|
|
description: Cron调度表达式 (syncMode=SCHEDULED 时必填)
|
|
|
|
UpdateCollectionTaskRequest:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: 任务名称
|
|
minLength: 1
|
|
maxLength: 100
|
|
description:
|
|
type: string
|
|
description: 任务描述
|
|
maxLength: 500
|
|
config:
|
|
type: object
|
|
description: 归集配置,包含源端和目标端配置信息
|
|
additionalProperties: true
|
|
syncMode:
|
|
$ref: '#/components/schemas/SyncMode'
|
|
scheduleExpression:
|
|
type: string
|
|
description: Cron调度表达式 (syncMode=SCHEDULED 时必填)
|
|
|
|
PagedCollectionTaskSummary:
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CollectionTaskSummary'
|
|
totalElements:
|
|
type: integer
|
|
totalPages:
|
|
type: integer
|
|
number:
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
|
|
PagedCollectionTasks:
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CollectionTaskResponse'
|
|
totalElements:
|
|
type: integer
|
|
totalPages:
|
|
type: integer
|
|
number:
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
|
|
TaskExecutionResponse:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
taskId:
|
|
type: string
|
|
taskName:
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/TaskStatus'
|
|
startedAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
TaskExecutionDetail:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
taskId:
|
|
type: string
|
|
taskName:
|
|
type: string
|
|
status:
|
|
$ref: '#/components/schemas/TaskStatus'
|
|
progress:
|
|
type: number
|
|
format: double
|
|
minimum: 0
|
|
maximum: 100
|
|
recordsTotal:
|
|
type: integer
|
|
recordsProcessed:
|
|
type: integer
|
|
recordsSuccess:
|
|
type: integer
|
|
recordsFailed:
|
|
type: integer
|
|
throughput:
|
|
type: number
|
|
format: double
|
|
dataSizeBytes:
|
|
type: integer
|
|
startedAt:
|
|
type: string
|
|
format: date-time
|
|
completedAt:
|
|
type: string
|
|
format: date-time
|
|
durationSeconds:
|
|
type: integer
|
|
errorMessage:
|
|
type: string
|
|
|
|
PagedTaskExecutions:
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TaskExecutionDetail'
|
|
totalElements:
|
|
type: integer
|
|
totalPages:
|
|
type: integer
|
|
number:
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
|
|
DataxTemplateSummary:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
sourceType:
|
|
type: string
|
|
description: 源数据源类型
|
|
targetType:
|
|
type: string
|
|
description: 目标数据源类型
|
|
description:
|
|
type: string
|
|
version:
|
|
type: string
|
|
isSystem:
|
|
type: boolean
|
|
description: 是否为系统模板
|
|
createdAt:
|
|
type: string
|
|
format: date-time
|
|
|
|
PagedDataxTemplates:
|
|
type: object
|
|
properties:
|
|
content:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/DataxTemplateSummary'
|
|
totalElements:
|
|
type: integer
|
|
totalPages:
|
|
type: integer
|
|
number:
|
|
type: integer
|
|
size:
|
|
type: integer
|