Script 리소스와 엔드포인트
최종 수정: 2026년 7월 16일
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포함)을 역할에 부여하는 방법을 다룹니다.
