Files
ttstd-infinite-canvas/plugin-packages/volcengine-jimeng-video/manifest.json

263 lines
19 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"apiVersion": "yingce.plugin/v2",
"id": "volcengine-jimeng-video",
"name": "Volcengine Jimeng Video",
"version": "2.0.0",
"author": "Volcengine / 影策",
"description": "Volcengine Jimeng Video 独立请求协议插件。",
"documentation": "# Volcengine Jimeng Video\n\n该目录是独立官方协议插件源码。后端从生成的 `volcengine-jimeng-video.yingce-plugin` 包加载,不依赖系统内置 `host:` 适配器。\n\n完整接口见 [docs/interface.md](docs/interface.md)。\n\n---\n\n# Volcengine Jimeng Video 接口字段\n\n## 协议身份\n\n- 插件 ID:`volcengine-jimeng-video`。\n- Provider ID:`volcengine-jimeng-video`。\n- 能力:`video`。\n- 默认 Base URL:`https://visual.volcengineapi.com`。\n- 鉴权驱动:`volcengine-v4`。\n- 创建:`POST /`。\n- 查询:`POST /`。\n\n## 配置字段\n\n| 字段 | 类型 | 必填 | 含义 |\n| --- | --- | --- | --- |\n| `apiKey` | secret | 是 | API Key |\n| `secretKey` | secret | 是 | Secret Key |\n\n## 统一字段映射\n\n| 统一字段 | 类型 | 必填 | 上游映射 | 说明 |\n| --- | --- | --- | --- | --- |\n| `model` | string | 是 | `model` | 视频模型 ID。 |\n| `prompt` | string | 是 | `prompt/content/input` | 视频提示词。 |\n| `images` | media[] | 否 | `first/last/reference image` | 显式 role 图片输入。 |\n| `videos` | media[] | 否 | `reference video` | 参考视频。 |\n| `audios` | media[] | 否 | `reference audio/voice` | 参考音频或音色。 |\n| `duration` | integer | 否 | `duration/seconds` | 时长秒数。 |\n| `aspectRatio` | string | 否 | `ratio/aspect_ratio/size` | 画幅比例或尺寸。 |\n| `resolution` | string | 否 | `resolution` | 分辨率档位。 |\n| `generateAudio` | boolean | 否 | `generate_audio` | 是否生成音频。 |\n| `watermark` | boolean | 否 | `watermark` | 水印开关。 |\n| `providerOptions` | object | 否 | `provider-specific fields` | 插件命名空间内的厂商扩展字段。 |\n\n## 上游请求模板逐字段清单\n\n下表由插件请求模板生成,覆盖 body、query、headers 和 multipart 文件声明中的每个字段。\n\n| 上游位置 | 值或转换表达式 |\n| --- | --- |\n| `create.method` | `\"POST\"` |\n| `create.path` | `\"/\"` |\n| `create.contentType` | `\"application/json\"` |\n| `create.body.req_key` | `{\"$ref\":\"request.model\"}` |\n| `create.body.prompt` | `{\"$ref\":\"request.prompt\"}` |\n| `create.body.image_urls` | `{\"$omitEmpty\":{\"$map\":{\"from\":{\"$sortByOrder\":{\"$ref\":\"request.images\"}},\"as\":\"media\",\"in\":{\"$ref\":\"media.value\"}}}}` |\n| `create.body.duration` | `{\"$omitEmpty\":{\"$ref\":\"request.duration\"}}` |\n| `create.body.ratio` | `{\"$omitEmpty\":{\"$ref\":\"request.aspectRatio\"}}` |\n| `create.body.resolution` | `{\"$omitEmpty\":{\"$ref\":\"request.resolution\"}}` |\n| `create.body.req_json` | `{\"$omitEmpty\":{\"$ref\":\"request.providerOptions.volcengine-jimeng-video.req_json\"}}` |\n| `create.query.Action` | `\"CVSync2AsyncSubmitTask\"` |\n| `create.query.Version` | `\"2022-08-31\"` |\n| `poll.method` | `\"POST\"` |\n| `poll.path` | `\"/\"` |\n| `poll.contentType` | `\"application/json\"` |\n| `poll.body.req_key` | `{\"$ref\":\"request.model\"}` |\n| `poll.body.task_id` | `{\"$ref\":\"taskId\"}` |\n| `poll.query.Action` | `\"CVSync2AsyncGetResult\"` |\n| `poll.query.Version` | `\"2022-08-31\"` |\n\n## Provider 扩展键\n\n- `providerOptions.volcengine-jimeng-video.req_json`\n\n动态模型或工作流允许使用文档声明的完整 `parameters/input/extra_body` 对象;该对象是协议本身的开放 schema,不会被宿主裁剪。\n\n## 响应映射逐字段清单\n\n| 映射位置 | 上游路径或转换表达式 |\n| --- | --- |\n| `response.taskId` | `{\"$coalesce\":[{\"$ref\":\"response.data.task_id\"},{\"$ref\":\"response.task_id\"},{\"$ref\":\"taskId\"}]}` |\n| `response.status` | `{\"$coalesce\":[{\"$ref\":\"response.data.status\"},{\"$ref\":\"response.status\"},\"pending\"]}` |\n| `response.message` | `{\"$coalesce\":[{\"$ref\":\"response.error.message\"},{\"$ref\":\"response.message\"},{\"$ref\":\"response.fail_reason\"}]}` |\n| `response.videos` | `{\"$coalesce\":[{\"$ref\":\"response.data.video_urls\"},{\"$ref\":\"response.data.video_url\"}]}` |\n| `response.errorPaths[0]` | `\"code\"` |\n| `response.resultEphemeral` | `true` |\n| `response.messagePaths[0]` | `\"message\"` |\n\n## 响应与错误\n\n插件把上游 task/status/text/media/usage 映射为统一结果。临时媒体 URL 标记为 ephemeral,由宿主立即下载持久化。HTTP 错误、业务 code 和 error object 保持失败语义,不包装成成功。\n\n## 兼容边界\n\n该包只代表上述线协议 profile;同一品牌的其他 endpoint、云区域或网关包装必须使用独立插件,不能根据模型名猜测。\n\n<!-- YINGCE_MANIFEST_CONTRACT_START -->\n## Manifest 完整接口定义\n\n以下 JSON 与插件包内实际 `manifest.json` 逐字段一致,覆盖插件身份、权限、配置、鉴权、参数、校验、创建、Agent、查询、取消、结果下载、响应和 Agent 响应映射。`documentation` 字段的值就是当前完整文档;为避免文档在自身内部无限递归,JSON 中仅用等义占位文本表示正文。\n\n```json\n{\n \"apiVersion\": \"yingce.plugin/v2\",\n \"id\": \"volcengine-jimeng-video\",\n \"name\": \"Volcengine Jimeng Video\",\n \"version\": \"2.0.0\",\n \"author\": \"Volcengine / 影策\",\n \"description\": \"Volcengine Jimeng Video 独立请求协议插件。\",\n \"documentation\": \"<当前插件的完整 documentation,由 README.md 与 docs/interface.md 拼接而成;为避免 JSON 递归,此处不重复展开正文。>\",\n \"permissions\": [\n \"generation.run\",\n \"media.read\"\n ],\n \"configuration\": {\n \"fields\": [\n {\n \"name\": \"apiKey\",\n \"type\": \"secret\",\n \"label\": \"API Key\",\n \"required\": true\n },\n {\n \"name\": \"secretKey\",\n \"type\": \"secret\",\n \"label\": \"Secret Key\",\n \"required\": true\n }\n ]\n },\n \"contributes\": {\n \"providers\": [\n {\n \"id\": \"volcengine-jimeng-video\",\n \"label\": \"Volcengine Jimeng Video\",\n \"capabilities\": [\n \"video\"\n ],\n \"scopes\": [\n \"admin.system-channel\",\n \"user.custom-channel\",\n \"canvas\",\n \"creation\",\n \"agent\"\n ],\n \"baseUrl\": \"https://visual.volcengineapi.com\",\n \"requiresPublicMediaUrls\": false,\n \"auth\": {\n \"type\": \"volcengine-v4\",\n \"field\": \"apiKey\",\n \"secretField\": \"secretKey\",\n \"service\": \"cv\",\n \"region\": \"cn-north-1\"\n },\n \"parameters\": [\n {\n \"name\": \"model\",\n \"type\": \"string\",\n \"required\": true,\n \"mapping\": \"model\",\n \"description\": \"视频模型 ID。\"\n },\n {\n \"name\": \"prompt\",\n \"type\": \"string\",\n \"required\": true,\n \"mapping\": \"prompt/content/input\",\n \"description\": \"视频提示词。\"\n },\n {\n \"name\": \"images\",\n \"type\": \"media[]\",\n \"required\": false,\n \"mapping\": \"first/last/reference image\",\n \"description\": \"显式 role 图片输入。\"\n },\n {\n \"name\": \"videos\",\n \"type\": \"media[]\",\n \"required\": false,\n \"mapping\": \"reference video\",\n \"description\": \"参考视频。\"\n },\n {\n \"name\": \"audios\",\n \"type\": \"media[]\",\n \"required\": false,\n \"mapping\": \"reference audio/voice\",\n \"description\": \"参考音频或音色。\"\n },\n {\n \"name\": \"duration\",\n \"type\": \"integer\",\n \"required\": false,\n \"mapping\": \"duration/seconds\",\n \"description\": \"时长秒数。\"\n },\n {\n \"name\": \"aspectRatio\",\n \"type\": \"string\",\n \"required\": false,\n \"mapping\": \"ratio/aspect_ratio/size\",\n \"description\": \"画幅比例或尺寸。\"\n },\n {\n \"name\": \"resolution\",\n \"type\": \"string\",\n \"required\": false,\n \"mapping\": \"resolution\",\n \"description\": \"分辨率档位。\"\n },\n {\n \"name\": \"generateAudio\",\n \"type\": \"boolean\",\n \"required\": false,\n \"mapping\": \"generate_audio\",\n \"description\": \"是否生成音频。\"\n },\n {\n \"name\": \"watermark\",\n \"type\": \"boolean\",\n \"required\": false,\n \"mapping\": \"watermark\",\n \"description\": \"水印开关。\"\n },\n {\n \"name\": \"providerOptions\",\n \"type\": \"object\",\n \"required\": false,\n \"mapping\": \"provider-specific fields\",\n \"description\": \"插件命名空间内的厂商扩展字段。\"\n }\n ],\n \"create\": {\n \"method\": \"POST\",\n \"path\": \"/\",\n \"contentType\": \"application/json\",\n \"body\": {\n \"req_key\": {\n \"$ref\": \"request.model\"\n },\n \"prompt\": {\n \"$ref\": \"request.prompt\"\n },\n \"image_urls\": {\n \"$omitEmpty\": {\n \"$map\": {\n \"from\": {\n \"$sortByOrder\": {\n \"$ref\": \"request.images\"\n }\n },\n \"as\": \"media\",\n \"in\": {\n \"$ref\": \"media.value\"\n }\n }\n }\n },\n \"duration\": {\n \"$omitEmpty\": {\n \"$ref\": \"request.duration\"\n }\n },\n \"ratio\": {\n \"$omitEmpty\": {\n \"$ref\": \"request.aspectRatio\"\n }\n },\n \"resolution\": {\n \"$omitEmpty\": {\n \"$ref\": \"request.resolution\"\n }\n },\n \"req_json\": {\n \"$omitEmpty\": {\n \"$ref\": \"request.providerOptions.volcengine-jimeng-video.req_json\"\n }\n }\n },\n \"originPath\": true,\n \"query\": {\n \"Action\": \"CVSync2AsyncSubmitTask\",\n \"Version\": \"2022-08-31\"\n }\n },\n \"poll\": {\n \"method\": \"POST\",\n \"path\": \"/\",\n \"originPath\": true,\n \"contentType\": \"application/json\",\n \"query\": {\n \"Action\": \"CVSync2AsyncGetResult\",\n \"Version\": \"2022-08-31\"\n },\n \"body\": {\n \"req_key\": {\n \"$ref\": \"request.model\"\n },\n \"task_id\": {\n \"$ref\": \"taskId\"\n }\n }\n },\n \"response\": {\n \"taskId\": {\n \"$coalesce\": [\n {\n \"$ref\": \"response.data.task_id\"\n },\n {\n \"$ref\": \"response.task_id\"\n },\n {\n \"$ref\": \"taskId\"\n }\n ]\n },\n \"status\": {\n \"$coalesce\": [\n {\n \"$ref\": \"response.data.status\"\n },\n {\n \"$ref\": \"response.status\"\n },\n \"pending\"\n ]\n },\n \"message\": {\n \"$coalesce\": [\n {\n \"$ref\": \"response.error.message\"\n },\n {\n \"$ref\": \"response.message\"\n },\n {\n \"$ref\": \"response.fail_reason\"\n }\n ]\n },\n \"videos\": {\n \"$coalesce\": [\n {\n \"$ref\": \"response.data.video_urls\"\n },\n {\n \"$ref\": \"response.data.video_url\"\n }\n ]\n },\n \"errorPaths\": [\n \"code\"\n ],\n \"resultEphemeral\": true,\n \"messagePaths\": [\n \"message\"\n ]\n }\n }\n ]\n }\n}\n```\n<!-- YINGCE_MANIFEST_CONTRACT_END -->\n",
"permissions": [
"generation.run",
"media.read"
],
"configuration": {
"fields": [
{
"name": "apiKey",
"type": "secret",
"label": "API Key",
"required": true
},
{
"name": "secretKey",
"type": "secret",
"label": "Secret Key",
"required": true
}
]
},
"contributes": {
"providers": [
{
"id": "volcengine-jimeng-video",
"label": "Volcengine Jimeng Video",
"capabilities": [
"video"
],
"scopes": [
"admin.system-channel",
"user.custom-channel",
"canvas",
"creation",
"agent"
],
"baseUrl": "https://visual.volcengineapi.com",
"requiresPublicMediaUrls": false,
"auth": {
"type": "volcengine-v4",
"field": "apiKey",
"secretField": "secretKey",
"service": "cv",
"region": "cn-north-1"
},
"parameters": [
{
"name": "model",
"type": "string",
"required": true,
"mapping": "model",
"description": "视频模型 ID。"
},
{
"name": "prompt",
"type": "string",
"required": true,
"mapping": "prompt/content/input",
"description": "视频提示词。"
},
{
"name": "images",
"type": "media[]",
"required": false,
"mapping": "first/last/reference image",
"description": "显式 role 图片输入。"
},
{
"name": "videos",
"type": "media[]",
"required": false,
"mapping": "reference video",
"description": "参考视频。"
},
{
"name": "audios",
"type": "media[]",
"required": false,
"mapping": "reference audio/voice",
"description": "参考音频或音色。"
},
{
"name": "duration",
"type": "integer",
"required": false,
"mapping": "duration/seconds",
"description": "时长秒数。"
},
{
"name": "aspectRatio",
"type": "string",
"required": false,
"mapping": "ratio/aspect_ratio/size",
"description": "画幅比例或尺寸。"
},
{
"name": "resolution",
"type": "string",
"required": false,
"mapping": "resolution",
"description": "分辨率档位。"
},
{
"name": "generateAudio",
"type": "boolean",
"required": false,
"mapping": "generate_audio",
"description": "是否生成音频。"
},
{
"name": "watermark",
"type": "boolean",
"required": false,
"mapping": "watermark",
"description": "水印开关。"
},
{
"name": "providerOptions",
"type": "object",
"required": false,
"mapping": "provider-specific fields",
"description": "插件命名空间内的厂商扩展字段。"
}
],
"create": {
"method": "POST",
"path": "/",
"contentType": "application/json",
"body": {
"req_key": {
"$ref": "request.model"
},
"prompt": {
"$ref": "request.prompt"
},
"image_urls": {
"$omitEmpty": {
"$map": {
"from": {
"$sortByOrder": {
"$ref": "request.images"
}
},
"as": "media",
"in": {
"$ref": "media.value"
}
}
}
},
"duration": {
"$omitEmpty": {
"$ref": "request.duration"
}
},
"ratio": {
"$omitEmpty": {
"$ref": "request.aspectRatio"
}
},
"resolution": {
"$omitEmpty": {
"$ref": "request.resolution"
}
},
"req_json": {
"$omitEmpty": {
"$ref": "request.providerOptions.volcengine-jimeng-video.req_json"
}
}
},
"originPath": true,
"query": {
"Action": "CVSync2AsyncSubmitTask",
"Version": "2022-08-31"
}
},
"poll": {
"method": "POST",
"path": "/",
"originPath": true,
"contentType": "application/json",
"query": {
"Action": "CVSync2AsyncGetResult",
"Version": "2022-08-31"
},
"body": {
"req_key": {
"$ref": "request.model"
},
"task_id": {
"$ref": "taskId"
}
}
},
"response": {
"taskId": {
"$coalesce": [
{
"$ref": "response.data.task_id"
},
{
"$ref": "response.task_id"
},
{
"$ref": "taskId"
}
]
},
"status": {
"$coalesce": [
{
"$ref": "response.data.status"
},
{
"$ref": "response.status"
},
"pending"
]
},
"message": {
"$coalesce": [
{
"$ref": "response.error.message"
},
{
"$ref": "response.message"
},
{
"$ref": "response.fail_reason"
}
]
},
"videos": {
"$coalesce": [
{
"$ref": "response.data.video_urls"
},
{
"$ref": "response.data.video_url"
}
]
},
"errorPaths": [
"code"
],
"resultEphemeral": true,
"messagePaths": [
"message"
]
}
}
]
}
}