327 lines
8.7 KiB
YAML
327 lines
8.7 KiB
YAML
openapi: 3.0.3
|
||
info:
|
||
title: AI建站 Platform API
|
||
version: 1.0.0
|
||
description: |
|
||
通用中台契约。业务行数据仅通过 apps/{slug}/{resource} CRUD 传输;
|
||
行业字段由蓝图定义,不在此增加行业专用路由。
|
||
动词约定:GET 读 / POST 创建或动作 / PUT 更新 / DELETE 删除。
|
||
servers:
|
||
- url: http://127.0.0.1:8180
|
||
paths:
|
||
/api/v1/meta/apis:
|
||
get:
|
||
operationId: listApis
|
||
summary: API 目录
|
||
responses:
|
||
"200":
|
||
description: OK
|
||
/api/v1/meta/openapi.yaml:
|
||
get:
|
||
operationId: getOpenAPI
|
||
summary: OpenAPI 原文
|
||
responses:
|
||
"200":
|
||
description: YAML
|
||
/api/v1/auth/register:
|
||
post:
|
||
operationId: authRegister
|
||
summary: 注册
|
||
responses:
|
||
"201": { description: Created }
|
||
/api/v1/auth/login:
|
||
post:
|
||
operationId: authLogin
|
||
summary: 登录
|
||
responses:
|
||
"200": { description: OK }
|
||
/api/v1/auth/token:
|
||
post:
|
||
operationId: authToken
|
||
summary: 服务签发 JWT
|
||
responses:
|
||
"200": { description: OK }
|
||
|
||
/api/v1/apps/{slug}/publish:
|
||
post:
|
||
operationId: publishApp
|
||
summary: 发布蓝图
|
||
parameters:
|
||
- $ref: "#/components/parameters/Slug"
|
||
- $ref: "#/components/parameters/Authorization"
|
||
responses:
|
||
"200": { description: OK }
|
||
/api/v1/apps/{slug}/blueprint:
|
||
get:
|
||
operationId: getBlueprint
|
||
summary: 读取蓝图
|
||
parameters:
|
||
- $ref: "#/components/parameters/Slug"
|
||
- $ref: "#/components/parameters/Authorization"
|
||
responses:
|
||
"200": { description: OK }
|
||
/api/v1/apps/{slug}/agent-capsule:
|
||
get:
|
||
operationId: getAgentCapsule
|
||
summary: 智能体胶囊
|
||
parameters:
|
||
- $ref: "#/components/parameters/Slug"
|
||
- $ref: "#/components/parameters/Authorization"
|
||
responses:
|
||
"200": { description: OK }
|
||
|
||
/api/v1/apps/{slug}/{resource}:
|
||
parameters:
|
||
- $ref: "#/components/parameters/Slug"
|
||
- $ref: "#/components/parameters/Resource"
|
||
- $ref: "#/components/parameters/Authorization"
|
||
get:
|
||
operationId: listRows
|
||
summary: 列表
|
||
parameters:
|
||
- name: page
|
||
in: query
|
||
schema: { type: integer, minimum: 1, default: 1 }
|
||
- name: page_size
|
||
in: query
|
||
schema: { type: integer, minimum: 1, maximum: 100, default: 20 }
|
||
- name: sort
|
||
in: query
|
||
schema: { type: string }
|
||
- name: filter.*
|
||
in: query
|
||
description: 如 filter.status=在售,键须在蓝图 allowed_filters
|
||
schema: { type: string }
|
||
responses:
|
||
"200":
|
||
description: OK
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/PageResult"
|
||
post:
|
||
operationId: createRow
|
||
summary: 创建
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
additionalProperties: true
|
||
responses:
|
||
"201":
|
||
description: Created
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Row"
|
||
|
||
/api/v1/apps/{slug}/{resource}/{id}:
|
||
parameters:
|
||
- $ref: "#/components/parameters/Slug"
|
||
- $ref: "#/components/parameters/Resource"
|
||
- $ref: "#/components/parameters/Id"
|
||
- $ref: "#/components/parameters/Authorization"
|
||
get:
|
||
operationId: getRow
|
||
summary: 详情
|
||
responses:
|
||
"200":
|
||
description: OK
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Row"
|
||
"404":
|
||
$ref: "#/components/responses/NotFound"
|
||
put:
|
||
operationId: updateRow
|
||
summary: 更新
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
additionalProperties: true
|
||
responses:
|
||
"200":
|
||
description: OK
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Row"
|
||
delete:
|
||
operationId: deleteRow
|
||
summary: 删除
|
||
responses:
|
||
"204": { description: No Content }
|
||
|
||
/api/v1/apps/{slug}/{resource}/import:
|
||
post:
|
||
operationId: importRows
|
||
summary: 导入
|
||
parameters:
|
||
- $ref: "#/components/parameters/Slug"
|
||
- $ref: "#/components/parameters/Resource"
|
||
- $ref: "#/components/parameters/Authorization"
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
multipart/form-data:
|
||
schema:
|
||
type: object
|
||
required: [file]
|
||
properties:
|
||
file: { type: string, format: binary }
|
||
responses:
|
||
"200": { description: OK }
|
||
|
||
/api/v1/apps/{slug}/{resource}/export:
|
||
get:
|
||
operationId: exportRows
|
||
summary: 导出
|
||
parameters:
|
||
- $ref: "#/components/parameters/Slug"
|
||
- $ref: "#/components/parameters/Resource"
|
||
- $ref: "#/components/parameters/Authorization"
|
||
- name: format
|
||
in: query
|
||
schema: { type: string, enum: [xlsx, csv], default: xlsx }
|
||
responses:
|
||
"200": { description: 文件流 }
|
||
|
||
/api/v1/apps/{slug}/{resource}/aggregate:
|
||
get:
|
||
operationId: aggregateRows
|
||
summary: 聚合
|
||
parameters:
|
||
- $ref: "#/components/parameters/Slug"
|
||
- $ref: "#/components/parameters/Resource"
|
||
- $ref: "#/components/parameters/Authorization"
|
||
- name: group_by
|
||
in: query
|
||
schema: { type: string }
|
||
- name: sum
|
||
in: query
|
||
schema: { type: string }
|
||
responses:
|
||
"200": { description: OK }
|
||
|
||
/api/v1/audit/logs:
|
||
get:
|
||
operationId: listAuditLogs
|
||
summary: 审计日志
|
||
parameters:
|
||
- $ref: "#/components/parameters/Authorization"
|
||
responses:
|
||
"200": { description: OK }
|
||
|
||
/api/v1/storage:
|
||
post:
|
||
operationId: uploadObject
|
||
summary: 上传
|
||
parameters:
|
||
- $ref: "#/components/parameters/Authorization"
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
multipart/form-data:
|
||
schema:
|
||
type: object
|
||
required: [file]
|
||
properties:
|
||
file: { type: string, format: binary }
|
||
responses:
|
||
"200": { description: OK }
|
||
|
||
/api/v1/storage/{tenant}/{day}/{name}:
|
||
get:
|
||
operationId: downloadObject
|
||
summary: 下载
|
||
parameters:
|
||
- $ref: "#/components/parameters/Authorization"
|
||
- name: tenant
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
- name: day
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
- name: name
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
responses:
|
||
"200": { description: 文件流 }
|
||
|
||
/api/v1/apps/generate:
|
||
post:
|
||
operationId: generateBlueprint
|
||
summary: 生成蓝图(AI 服务,经网关 /ai 前缀)
|
||
description: 实际请求 /ai/api/v1/apps/generate;勿在 platform 重复实现。
|
||
requestBody:
|
||
content:
|
||
multipart/form-data:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
prompt: { type: string }
|
||
excel: { type: string, format: binary }
|
||
images: { type: string, format: binary }
|
||
responses:
|
||
"200": { description: OK }
|
||
|
||
/api/v1/llm/providers:
|
||
get:
|
||
operationId: listLlmProviders
|
||
summary: LLM 厂商(AI 服务)
|
||
responses:
|
||
"200": { description: OK }
|
||
|
||
components:
|
||
parameters:
|
||
Authorization:
|
||
name: Authorization
|
||
in: header
|
||
required: true
|
||
schema: { type: string }
|
||
description: Bearer JWT
|
||
Slug:
|
||
name: slug
|
||
in: path
|
||
required: true
|
||
schema: { type: string, pattern: "^[a-z][a-z0-9_]{1,47}$" }
|
||
Resource:
|
||
name: resource
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
description: 蓝图 apis.resources.path(无前导 /);不可为保留名
|
||
Id:
|
||
name: id
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
schemas:
|
||
PageResult:
|
||
type: object
|
||
properties:
|
||
items: { type: array, items: { $ref: "#/components/schemas/Row" } }
|
||
total: { type: integer }
|
||
Row:
|
||
type: object
|
||
additionalProperties: true
|
||
responses:
|
||
NotFound:
|
||
description: Not Found
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
code: { type: integer }
|
||
message: { type: string }
|