Script 资源与端点
最后更新:2026年7月17日
Script 是前端通过 HTTP 调用的声明式后端端点(概念与顶层结构在 Script 概述 中介绍)。本页介绍 Script 资源的 sys 结构与正文属性,以及编写和执行 Script 的 HTTP 端点的规范。
Script 由两个管理 API 处理。在 CMA(Weegloo User 身份)中,可以进行列表、查询、创建、修改、删除以及执行、轮询的全部操作。在 ACMA(在产品中注册的 ServiceUser 身份)中,只能执行和轮询,编写(创建、修改、删除)为 CMA 专用。只读的投递 API(CDA、ACDA)中没有 Script。
Script 是带有 version 的资源,也是受各套餐数量限制的计费(Billable)资源。不过与 Content 或 Media 不同,它不具有发布状态。 sys 中没有 status 或 publish 之类的发布相关属性,每次变更只会使 version 递增。由于没有发布、取消发布的概念,删除时也无需取消发布即可直接进行。
资源结构
以下是 Script "t6-http" 的单个查询响应。除 sys(系统属性)外,还具有 name、definition 两个正文属性。
{
"sys": {
"id": "3trmXRMZcTAjDnphewjj1AaxYcaxlK",
"type": "Script",
"space": { "sys": { "id": "6jSUUAWT", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "3p4tcFbQYJNvYTBJf2rYKr42xegQLJ", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-07-15T12:35:47.575Z",
"updatedBy": { "sys": { "id": "3p4tcFbQYJNvYTBJf2rYKr42xegQLJ", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-07-15T12:35:47.575Z",
"version": 1
},
"name": "t6-http",
"definition": {
"method": "Post",
"executionMode": "Async",
"statements": [
{
"name": "resp",
"method": "POST",
"url": "https://postman-echo.com/post",
"headers": [ { "key": "Content-Type", "value": "application/json", "secret": false } ],
"body": { "prompt": "{ /payload/prompt }" },
"timeoutMs": 10000,
"retry": 0,
"type": "Http"
},
{
"value": { "status": "{ /resp/status }", "prompt": "{ /resp/body/json/prompt }" },
"isError": false,
"statusCode": 200,
"type": "Return"
}
]
}
}主要键:
sys.id:Script 的唯一标识符。用于单个查询、修改、删除、执行路径中的{scriptId}。name:Script 的名称(1~64 个字符)。用于界面列表和管理识别。definition:声明此 Script 做什么的ScriptDefinition。由调用方法(method)、执行模式(executionMode)、语句(statements)数组和可选的 payload 模式(payloadSchema)构成。详细结构见下方的定义与名称以及 Script 概述的顶层结构。
请注意 sys 中没有 status、publish、archive。Script 不是发布到投递路径的资源,而是在管理 API 中编写和执行的资源。
系统属性 (sys)
所有 Script 都在 sys 对象中包含通用的系统属性。space、createdBy、updatedBy 以 Refer 形态({ "sys": { "id", "type": "Refer", "targetType" } })呈现。
| 属性 | 类型 | 说明 |
|---|---|---|
id | string | 资源唯一标识符。 |
type | string | 资源种类。Script 始终为 "Script"。 |
space | Refer<Space> | 此 Script 所属的 Space。 |
createdBy | Refer<User> | 创建的用户。 |
createdAt | string (date-time) | 创建时间。 |
updatedBy | Refer<User> | 最后修改的用户。 |
updatedAt | string (date-time) | 最后修改时间。 |
version | integer (≥1) | 资源版本。每次创建、修改递增 1。 |
Content、Content Type、Media 的 sys 中的 status(发布状态)和 publish(发布历史),Script 并不具有。 因为 Script 不会被发布。也没有 archive 属性。因此 Script 的 version 不涉及发布,纯粹随创建、修改的次数递增。
定义与名称 (name, definition)
Script 的正文属性有 name 和 definition 两个。
| 属性 | 必填 | 说明 |
|---|---|---|
name | 必填 | Script 的名称。1~64 个字符。 |
definition | 必填 | ScriptDefinition。由下表的键构成。 |
definition(ScriptDefinition)的键:
| 键 | 必填 | 说明 |
|---|---|---|
method | 必填 | 调用此 Script 的 HTTP 方法。为 Get、Post、Put、Patch、Delete 之一。执行时按此值匹配。 |
executionMode | 必填 | 执行位置。Sync(在请求路径中即时)或 Async(后台)。 |
statements | 必填 | 要执行的语句(statement)的有序数组。至少 1 个。 |
payloadSchema | 选填 | JSON Schema。若指定,则在执行前用此模式校验请求 payload。 |
放入 statements 数组的每个语句的种类和字段在 Statement 目录 中介绍,用于传递值的 { /pointer } 表达式在 值表达式 中介绍。
上面示例 "t6-http" 的 definition 中 method 为 Post、executionMode 为 Async,先用 Http 语句调用外部 API,再用 Return 语句返回其结果。像 Http 语句这样存在外部 I/O 的 Script,executionMode 必须为 Async(参见下方的约束)。
约束
| 对象 | 约束 |
|---|---|
name | 1~64 个字符,必填。 |
definition.statements | 至少 1 个,必填。 |
| 存在外部 I/O 的定义 | executionMode 必须为 Async(保存为 Sync 时会被拒绝)。 |
| 每个定义的外部调用 | 最多 3 个(默认值)。 |
每个定义的 SetVar | 最多 5 个(默认值)。 |
| 每个定义的全部 statement | 最多 15 个(默认值,含嵌套)。 |
上述静态约束会在 Script 保存(创建、修改)时进行检查,违反时保存会被拒绝。保存时还会一并检查创建者是否实际拥有这些 statement 所使用的资源、动作权限(只要缺少任意一项,就以 WGL403015 拒绝)。详细规则和时间预算在 执行语义、约束与安全 中介绍。
Script 是计费(Billable)资源,每个 Organization 的数量按套餐受限(Free 3 / Basic 10 / Pro 50 / Enterprise 无限制)。达到上限后,新的 Script 创建会被拒绝(参见各套餐数量限额)。
API
下面列表、查询、创建、修改、删除端点的基准 URL 是 CMA 的 https://cma.weegloo.com/v1,Authorization 头中需要用于认证 CMA 的 Bearer 令牌。修改操作为实现乐观并发控制,必须一并发送 X-Weegloo-Version 头(当前资源的 sys.version)。
执行(/execute)和轮询(/executions/{requestId})在 ACMA 中也以相同路径提供。此时基准 URL 为 https://acma.weegloo.com/v1,使用 ServiceUser 身份的 Bearer 令牌进行认证。编写(创建、修改、删除)在 ACMA 中不存在,为 CMA 专用。
上面执行、轮询示例的完成响应中没有 return。因为目标 Script 未到达带值的 Return 就结束了(此时 statusCode 为默认值 200)。若通过 Return 返回值,则响应中会带有 return(若 Return.isError 为真,则为 error)。响应的完整规则在 Script 概述的请求与响应 中介绍。
相关文档
- Script 概述:介绍顶层
ScriptDefinition结构、执行模式、请求与响应。 - Statement 目录:介绍放入
statements的每个语句的字段和结果。 - 值表达式:介绍
{ /pointer }引用和 JsonLogic 运算。 - 执行语义、约束与安全:介绍静态约束、各套餐数量限额、权限与安全模型。
- SpaceRole、ServiceUserRole:介绍如何将 Script 的动作权限(含
Execute)授予角色。
