1071 lines
27 KiB
JSON
1071 lines
27 KiB
JSON
{
|
||
"openapi": "3.0.3",
|
||
"info": {
|
||
"title": "AI视频分镜生成器 API",
|
||
"description": "用于管理提示词、项目,并通过AI生成视频分镜、首帧图和视频的后端服务API。",
|
||
"version": "1.0.0"
|
||
},
|
||
"servers": [
|
||
{
|
||
"url": "http://localhost:8000/api/v1",
|
||
"description": "本地开发服务器"
|
||
}
|
||
],
|
||
"tags": [
|
||
{
|
||
"name": "Public Services",
|
||
"description": "公共服务接口,如获取上传Token"
|
||
},
|
||
{
|
||
"name": "Prompt Management",
|
||
"description": "管理和维护系统中的各类提示词"
|
||
},
|
||
{
|
||
"name": "Project Management",
|
||
"description": "项目的创建、查询以及素材管理"
|
||
},
|
||
{
|
||
"name": "Asset Management",
|
||
"description": "素材的生成和管理"
|
||
},
|
||
{
|
||
"name": "Storyboard Generation",
|
||
"description": "分镜的生成与处理"
|
||
}
|
||
],
|
||
"paths": {
|
||
"/qiniu/upload-token": {
|
||
"get": {
|
||
"tags": [
|
||
"Public Services"
|
||
],
|
||
"summary": "获取七牛云上传Token",
|
||
"description": "获取用于客户端直传文件到七牛云存储的临时Token。",
|
||
"operationId": "get_qiniu_upload_token",
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功获取Token",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/QiniuTokenResponse"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/prompts": {
|
||
"get": {
|
||
"tags": [
|
||
"Prompt Management"
|
||
],
|
||
"summary": "查询所有提示词",
|
||
"description": "获取系统中存储的所有可用提示词列表。",
|
||
"operationId": "get_all_prompts",
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功返回提示词列表",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/components/schemas/Prompt"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"post": {
|
||
"tags": [
|
||
"Prompt Management"
|
||
],
|
||
"summary": "新增或修改提示词",
|
||
"description": "创建一个新的提示词,或者根据 `step` 和 `name` 更新一个已有的提示词。",
|
||
"operationId": "create_or_update_prompt",
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/PromptCreate"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功创建或更新提示词",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/Prompt"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/projects": {
|
||
"get": {
|
||
"tags": [
|
||
"Project Management"
|
||
],
|
||
"summary": "分页获取项目列表",
|
||
"description": "获取已创建项目的分页列表。",
|
||
"operationId": "get_projects_paginated",
|
||
"parameters": [
|
||
{
|
||
"name": "page",
|
||
"in": "query",
|
||
"schema": {
|
||
"type": "integer",
|
||
"default": 1
|
||
},
|
||
"description": "页码"
|
||
},
|
||
{
|
||
"name": "size",
|
||
"in": "query",
|
||
"schema": {
|
||
"type": "integer",
|
||
"default": 20
|
||
},
|
||
"description": "每页数量"
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功返回项目分页列表",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/PaginatedProjects"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"post": {
|
||
"tags": [
|
||
"Project Management"
|
||
],
|
||
"summary": "新建项目",
|
||
"description": "创建一个新的空项目。",
|
||
"operationId": "create_project",
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/ProjectCreate"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"201": {
|
||
"description": "项目创建成功",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/Project"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/projects/{project_id}": {
|
||
"get": {
|
||
"tags": [
|
||
"Project Management"
|
||
],
|
||
"summary": "获取项目所有信息",
|
||
"description": "获取一个项目的完整信息,包括其关联的所有素材和分镜。",
|
||
"operationId": "get_project_details",
|
||
"parameters": [
|
||
{
|
||
"name": "project_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "项目的唯一ID"
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功返回项目详细信息",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/FullProjectResponse"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"404": {
|
||
"description": "项目未找到"
|
||
}
|
||
}
|
||
},
|
||
"delete": {
|
||
"tags": [
|
||
"Project Management"
|
||
],
|
||
"summary": "删除项目",
|
||
"description": "软删除指定的项目(不会真正删除数据,只是标记为已删除)",
|
||
"operationId": "delete_project",
|
||
"parameters": [
|
||
{
|
||
"name": "project_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "项目ID"
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "删除成功",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"message": {
|
||
"type": "string",
|
||
"example": "项目 1 删除成功"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"404": {
|
||
"description": "项目不存在"
|
||
},
|
||
"500": {
|
||
"description": "删除项目失败"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/projects/{project_id}/generate-script": {
|
||
"post": {
|
||
"tags": [
|
||
"Project Management"
|
||
],
|
||
"summary": "生成剧本",
|
||
"description": "根据创意或剧本生成完整剧本和所需素材信息",
|
||
"operationId": "generate_script",
|
||
"parameters": [
|
||
{
|
||
"name": "project_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "项目ID"
|
||
}
|
||
],
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"script_or_idea": {
|
||
"type": "string",
|
||
"description": "剧本或创意内容",
|
||
"example": "一个关于小猫冒险的故事,小猫在森林里遇到了各种动物朋友"
|
||
}
|
||
},
|
||
"required": [
|
||
"script_or_idea"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "生成成功",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/GenerateScriptResponse"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"400": {
|
||
"description": "请求参数错误"
|
||
},
|
||
"500": {
|
||
"description": "生成剧本失败"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/projects/{project_id}/compose-video": {
|
||
"post": {
|
||
"tags": [
|
||
"Project Management"
|
||
],
|
||
"summary": "合成项目视频",
|
||
"description": "将项目中所有分镜的视频合并成一个完整的项目视频",
|
||
"operationId": "compose_project_video",
|
||
"parameters": [
|
||
{
|
||
"name": "project_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "项目ID"
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "合成成功",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"video_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"description": "合成后的项目视频URL"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"400": {
|
||
"description": "项目不存在或分镜没有视频"
|
||
},
|
||
"500": {
|
||
"description": "合成项目视频失败"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/projects/{project_id}/generate-asset-images": {
|
||
"post": {
|
||
"tags": [
|
||
"Asset Management"
|
||
],
|
||
"summary": "创建素材图",
|
||
"description": "为项目中所有没有图片的素材自动生成图片",
|
||
"operationId": "generate_asset_images",
|
||
"parameters": [
|
||
{
|
||
"name": "project_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "项目ID"
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "生成成功",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/components/schemas/AssetResponse"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"400": {
|
||
"description": "项目不存在"
|
||
},
|
||
"500": {
|
||
"description": "创建素材图失败"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/projects/{project_id}/assets": {
|
||
"post": {
|
||
"tags": [
|
||
"Project Management"
|
||
],
|
||
"summary": "关联素材",
|
||
"description": "前端上传素材到七牛云后,调用此接口将URL关联到项目中,后端将对素材进行AI分析。",
|
||
"operationId": "associate_assets",
|
||
"parameters": [
|
||
{
|
||
"name": "project_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "项目的唯一ID"
|
||
}
|
||
],
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"asset_urls": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "string",
|
||
"format": "uri"
|
||
},
|
||
"description": "已上传到七牛云的素材URL数组"
|
||
}
|
||
},
|
||
"required": [
|
||
"asset_urls"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功关联并分析素材",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/components/schemas/Asset"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/assets/{asset_id}/image": {
|
||
"put": {
|
||
"tags": [
|
||
"Asset Management"
|
||
],
|
||
"summary": "更新素材图",
|
||
"description": "为素材更新图片URL",
|
||
"operationId": "update_asset_image",
|
||
"parameters": [
|
||
{
|
||
"name": "asset_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "素材ID"
|
||
}
|
||
],
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"image_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"description": "素材图片URL",
|
||
"example": "https://example.com/image.jpg"
|
||
}
|
||
},
|
||
"required": [
|
||
"image_url"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "更新成功",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"message": {
|
||
"type": "string",
|
||
"example": "素材图片更新成功"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"404": {
|
||
"description": "素材不存在"
|
||
},
|
||
"500": {
|
||
"description": "更新素材图失败"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/projects/{project_id}/generate-storyboards": {
|
||
"post": {
|
||
"tags": [
|
||
"Storyboard Generation"
|
||
],
|
||
"summary": "生成分镜",
|
||
"description": "为指定项目提交剧本和提示词,生成一系列结构化的分镜描述。",
|
||
"operationId": "generate_storyboards",
|
||
"parameters": [
|
||
{
|
||
"name": "project_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "项目的唯一ID"
|
||
}
|
||
],
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/StoryboardGenerateRequest"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功生成分镜列表",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/components/schemas/Storyboard"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/storyboards/{storyboard_id}/generate-frame": {
|
||
"post": {
|
||
"tags": [
|
||
"Storyboard Generation"
|
||
],
|
||
"summary": "生成分镜首帧图",
|
||
"description": "为一个已生成的分镜,生成其首帧静态图。",
|
||
"operationId": "generate_storyboard_frame",
|
||
"parameters": [
|
||
{
|
||
"name": "storyboard_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "分镜的唯一ID"
|
||
}
|
||
],
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"$ref": "#/components/schemas/GenerateFrameRequest"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功生成首帧图",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"frame_image_url": {
|
||
"type": "string",
|
||
"format": "uri"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/storyboards/{storyboard_id}/guide-frame": {
|
||
"post": {
|
||
"tags": [
|
||
"Storyboard Generation"
|
||
],
|
||
"summary": "首帧图指导修改",
|
||
"description": "使用指导图修改分镜的首帧图",
|
||
"operationId": "guide_frame_image",
|
||
"parameters": [
|
||
{
|
||
"name": "storyboard_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "分镜ID"
|
||
}
|
||
],
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"guide_image_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"description": "指导图URL(用户在白板上画的动作或位置指导草图)",
|
||
"example": "https://example.com/guide.jpg"
|
||
}
|
||
},
|
||
"required": [
|
||
"guide_image_url"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "修改成功",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"frame_image_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"description": "修改后的首帧图URL"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"400": {
|
||
"description": "分镜不存在或缺少原首帧图"
|
||
},
|
||
"500": {
|
||
"description": "首帧图指导修改失败"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/storyboards/{storyboard_id}/generate-video": {
|
||
"post": {
|
||
"tags": [
|
||
"Storyboard Generation"
|
||
],
|
||
"summary": "生成分镜视频",
|
||
"description": "为一个已生成首帧图的分镜,生成其动态视频。",
|
||
"operationId": "generate_storyboard_video",
|
||
"parameters": [
|
||
{
|
||
"name": "storyboard_id",
|
||
"in": "path",
|
||
"required": true,
|
||
"schema": {
|
||
"type": "integer"
|
||
},
|
||
"description": "分镜的唯一ID"
|
||
}
|
||
],
|
||
"requestBody": {
|
||
"required": true,
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"shot_prompt": {
|
||
"type": "string",
|
||
"description": "用于生成分镜视频的动态描述提示词(可编辑)"
|
||
}
|
||
},
|
||
"required": [
|
||
"shot_prompt"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功生成分镜视频",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"shot_video_url": {
|
||
"type": "string",
|
||
"format": "uri"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"components": {
|
||
"schemas": {
|
||
"QiniuTokenResponse": {
|
||
"type": "object",
|
||
"properties": {
|
||
"token": {
|
||
"type": "string",
|
||
"description": "七牛云上传Token"
|
||
},
|
||
"domain": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"description": "七牛云空间域名"
|
||
},
|
||
"bucket": {
|
||
"type": "string",
|
||
"description": "七牛云空间名称"
|
||
}
|
||
}
|
||
},
|
||
"Prompt": {
|
||
"type": "object",
|
||
"properties": {
|
||
"id": {
|
||
"type": "integer"
|
||
},
|
||
"step": {
|
||
"type": "string"
|
||
},
|
||
"name": {
|
||
"type": "string"
|
||
},
|
||
"prompt": {
|
||
"type": "string"
|
||
}
|
||
}
|
||
},
|
||
"PromptCreate": {
|
||
"type": "object",
|
||
"properties": {
|
||
"step": {
|
||
"type": "string",
|
||
"example": "create_shots"
|
||
},
|
||
"name": {
|
||
"type": "string",
|
||
"example": "default_v1"
|
||
},
|
||
"prompt": {
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"step",
|
||
"name",
|
||
"prompt"
|
||
]
|
||
},
|
||
"Project": {
|
||
"type": "object",
|
||
"properties": {
|
||
"id": {
|
||
"type": "integer"
|
||
},
|
||
"name": {
|
||
"type": "string"
|
||
},
|
||
"video_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"nullable": true,
|
||
"description": "项目合成视频URL"
|
||
}
|
||
}
|
||
},
|
||
"ProjectCreate": {
|
||
"type": "object",
|
||
"properties": {
|
||
"name": {
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"name"
|
||
]
|
||
},
|
||
"ProjectSummary": {
|
||
"type": "object",
|
||
"properties": {
|
||
"id": {
|
||
"type": "integer"
|
||
},
|
||
"name": {
|
||
"type": "string"
|
||
},
|
||
"video_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"nullable": true,
|
||
"description": "项目合成视频URL"
|
||
},
|
||
"created_at": {
|
||
"type": "string",
|
||
"format": "date-time"
|
||
},
|
||
"updated_at": {
|
||
"type": "string",
|
||
"format": "date-time"
|
||
}
|
||
}
|
||
},
|
||
"PaginatedProjects": {
|
||
"type": "object",
|
||
"properties": {
|
||
"items": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/components/schemas/ProjectSummary"
|
||
}
|
||
},
|
||
"total": {
|
||
"type": "integer"
|
||
},
|
||
"page": {
|
||
"type": "integer"
|
||
},
|
||
"size": {
|
||
"type": "integer"
|
||
}
|
||
}
|
||
},
|
||
"Asset": {
|
||
"type": "object",
|
||
"properties": {
|
||
"id": {
|
||
"type": "integer"
|
||
},
|
||
"name": {
|
||
"type": "string"
|
||
},
|
||
"description": {
|
||
"type": "string"
|
||
},
|
||
"tags": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "string"
|
||
}
|
||
},
|
||
"original_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"nullable": true
|
||
}
|
||
}
|
||
},
|
||
"Storyboard": {
|
||
"type": "object",
|
||
"properties": {
|
||
"id": {
|
||
"type": "integer"
|
||
},
|
||
"frame_prompt": {
|
||
"type": "string"
|
||
},
|
||
"frame_asset_ids": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "integer"
|
||
}
|
||
},
|
||
"frame_image_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"nullable": true
|
||
},
|
||
"shot_prompt": {
|
||
"type": "string"
|
||
},
|
||
"shot_video_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"nullable": true
|
||
}
|
||
}
|
||
},
|
||
"StoryboardGenerateRequest": {
|
||
"type": "object",
|
||
"properties": {
|
||
"script": {
|
||
"type": "string"
|
||
},
|
||
"prompt": {
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"script",
|
||
"prompt"
|
||
]
|
||
},
|
||
"GenerateFrameRequest": {
|
||
"type": "object",
|
||
"properties": {
|
||
"frame_prompt": {
|
||
"type": "string"
|
||
},
|
||
"frame_asset_ids": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "integer"
|
||
}
|
||
}
|
||
},
|
||
"required": [
|
||
"frame_prompt",
|
||
"frame_asset_ids"
|
||
]
|
||
},
|
||
"FullProjectResponse": {
|
||
"type": "object",
|
||
"properties": {
|
||
"project": {
|
||
"$ref": "#/components/schemas/ProjectSummary"
|
||
},
|
||
"assets": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/components/schemas/Asset"
|
||
}
|
||
},
|
||
"storyboards": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/components/schemas/Storyboard"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"AssetResponse": {
|
||
"type": "object",
|
||
"properties": {
|
||
"id": {
|
||
"type": "integer",
|
||
"description": "素材ID"
|
||
},
|
||
"project_id": {
|
||
"type": "integer",
|
||
"description": "项目ID"
|
||
},
|
||
"name": {
|
||
"type": "string",
|
||
"description": "素材名称"
|
||
},
|
||
"description": {
|
||
"type": "string",
|
||
"nullable": true,
|
||
"description": "素材描述"
|
||
},
|
||
"tags": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"nullable": true,
|
||
"description": "素材标签"
|
||
},
|
||
"original_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"nullable": true,
|
||
"description": "素材原始URL"
|
||
},
|
||
"created_at": {
|
||
"type": "string",
|
||
"format": "date-time",
|
||
"description": "创建时间"
|
||
},
|
||
"updated_at": {
|
||
"type": "string",
|
||
"format": "date-time",
|
||
"description": "更新时间"
|
||
}
|
||
},
|
||
"required": [
|
||
"id",
|
||
"project_id",
|
||
"name",
|
||
"created_at",
|
||
"updated_at"
|
||
]
|
||
},
|
||
"GenerateScriptResponse": {
|
||
"type": "object",
|
||
"properties": {
|
||
"full_script": {
|
||
"type": "string",
|
||
"description": "生成的完整剧本"
|
||
},
|
||
"assets": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/components/schemas/AssetResponse"
|
||
}
|
||
}
|
||
},
|
||
"required": [
|
||
"full_script",
|
||
"assets"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
} |