Script 리소스와 엔드포인트

최종 수정: 2026년 7월 16일

Script는 프런트엔드가 HTTP로 호출하는 선언형 백엔드 엔드포인트입니다(개념과 최상위 구조는 Script 개요에서 다룹니다). 이 페이지는 Script 리소스sys 구조와 본문 속성, 그리고 Script를 저작·실행하는 HTTP 엔드포인트의 명세를 다룹니다.

Script는 두 관리 API에서 다룹니다. CMA(Weegloo User 신원)에서는 목록·조회·생성·수정·삭제와 실행·폴링을 모두 할 수 있습니다. ACMA(제품에 가입한 ServiceUser 신원)에서는 실행과 폴링만 할 수 있고, 저작(생성·수정·삭제)은 CMA 전용입니다. 읽기 전용 전달 API(CDA, ACDA)에는 Script가 없습니다.

Scriptversion을 가지는 리소스이며 플랜별 개수 제한을 받는 과금 대상(Billable) 리소스입니다. 다만 ContentMedia와 달리 발행 상태를 가지지 않습니다. sysstatuspublish 같은 발행 관련 속성이 없고, 변경할 때마다 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 개요의 최상위 구조에서 다룹니다.

sysstatus·publish·archive가 없다는 점에 유의하세요. Script는 전달 경로에 발행되는 리소스가 아니라, 관리 API에서 저작·실행하는 리소스입니다.

시스템 속성 (sys)

모든 Script는 공통 시스템 속성을 sys 객체에 담습니다. space, createdBy, updatedByRefer 모양({ "sys": { "id", "type": "Refer", "targetType" } })으로 들어갑니다.

속성타입설명
idstring리소스 고유 식별자.
typestring리소스 종류. Script는 항상 "Script".
spaceRefer<Space>Script가 속한 Space.
createdByRefer<User>생성한 사용자.
createdAtstring (date-time)생성 시각.
updatedByRefer<User>마지막으로 수정한 사용자.
updatedAtstring (date-time)마지막 수정 시각.
versioninteger (≥1)리소스 버전. 생성·수정마다 1씩 올라갑니다.

Content·Content Type·Mediasys에 있는 status(발행 상태)와 publish(발행 이력)가 Script에는 없습니다. Script는 발행되지 않기 때문입니다. archive 속성도 없습니다. 그래서 Scriptversion은 발행 없이 순수하게 생성·수정 횟수만큼 증가합니다.

정의와 이름 (name, definition)

Script의 본문 속성은 namedefinition 둘입니다.

속성필수설명
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"의 definitionmethodPost, executionModeAsync이고, Http 문으로 외부 API를 호출한 뒤 Return 문으로 그 결과를 돌려줍니다. Http 문처럼 외부 I/O가 있는 ScriptexecutionMode가 반드시 Async여야 합니다(아래 제약 참조).

제약

대상제약
name1~64자, 필수.
definition.statements최소 1개, 필수.
외부 I/O가 있는 정의executionModeAsync여야 함(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 개요의 요청과 응답에서 다룹니다.