VNLEWIKI이야기를 만들고, 세계를 연결하세요.
한국어
VNLE 사용 설명서

JSON 필드 참조

실행 및 내용

format과 containerVersion은 컨테이너를 식별합니다. execution에는 시작점과 노드가, content에는 텍스트, 번역, 카탈로그가 들어 있습니다. UUID가 테이블을 연결하므로 표시 이름으로 참조하지 마세요. JSON은 주석을 허용하지 않아 설명을 따로 두었습니다. 따라서 예제는 유효한 JSON으로 유지됩니다.

// Explanation only — not a JSON file
// execution.entries[entryId].nodeRef -> execution.nodes[nodeId]
// node.text.textRef -> content.texts[textId].sourceMessage
// content.translations[locale][textId].message -> translated segments
// dialogue.continuation.nodeRef -> next node
// end -> stop; never keep advancing

story.json

언어 전환 및 누락 된 번역

언어는 현재 노드와 별도로 저장하세요. 바꾸면 같은 textRef를 다시 처리합니다. locale의 번역이 있으면 사용하고, 없으면 sourceMessage를 사용하세요. 언어 테이블이 없으면 번역이 없는 것입니다. allowEmpty는 의도적으로 빈 텍스트를 허용합니다. 자리표시자 세그먼트는 자료형에 맞게 서식화하고, JSON 자체를 문자열로 표시하지 마세요. 원문 지문으로 오래된 번역을 식별합니다. workflowStatus만으로 최신 여부를 알 수는 없습니다.

현재 이야기 내보내기 스키마에서 참조할 수 있는 모든 정의를 설명합니다. 아래에는 모든 속성, 변형, 제약이 있으며 Schema에서는 중첩 규칙도 확인할 수 있습니다. additionalProperties가 false인 곳에서는 추가 필드를 허용하지 않습니다.

JSON Schema · Draft 2020-12

Capability

필드유형 / 필수의미 / 규칙
Schema · Capability
{
  "type": "string",
  "pattern": "^[a-z][a-z0-9.-]*$",
  "title": "Capability"
}

ContentAsset

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
mediaTypestring · 필수미디어 콘텐츠의 MIME 유형.
relativePathRelativePath · 필수검증된 상대 에셋 경로입니다. 확인 없이 파일 시스템 경로로 사용하지 마세요.
contentHashHash · 필수참조 된 미디어 바이트의 SHA-256.
displayNamestring · 필수사람이 읽기 쉬운 에셋 표시 이름입니다.
licenseNotestring에셋 라이선스에 관한 메모입니다. 법적 검토가 자동으로 수행되지는 않습니다.
widthinteger구조와 허용되는 값은 유형 및 스키마를 참고하세요.
{"minimum":0,"maximum":2147483647}
heightinteger구조와 허용되는 값은 유형 및 스키마를 참고하세요.
{"minimum":0,"maximum":2147483647}
byteSizeinteger구조와 허용되는 값은 유형 및 스키마를 참고하세요.
{"minimum":0,"maximum":2147483647}
originalNamestring구조와 허용되는 값은 유형 및 스키마를 참고하세요.
Schema · ContentAsset
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "mediaType": {
      "type": "string"
    },
    "relativePath": {
      "$ref": "#/$defs/RelativePath"
    },
    "contentHash": {
      "$ref": "#/$defs/Hash"
    },
    "displayName": {
      "type": "string"
    },
    "licenseNote": {
      "type": "string"
    },
    "width": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2147483647
    },
    "height": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2147483647
    },
    "byteSize": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2147483647
    },
    "originalName": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "mediaType",
    "relativePath",
    "contentHash",
    "displayName"
  ],
  "additionalProperties": false,
  "title": "ContentAsset"
}

ContentCharacter

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
keyKey · 필수읽기 쉬운 고정 키입니다. 기술적인 참조에는 계속 ID를 사용합니다.
nameTextRefId · 필수로컬 이름에 대한 텍스트 ID.
colorstring · 필수캐릭터의 표시 색상이며, 로직에 사용하는 값이 아닙니다.
{"pattern":"^#[0-9a-fA-F]{6}$"}
defaultPortraitRefId기본 캐릭터 초상화 에셋입니다. 범용 내보내기에는 포함되지 않습니다.
emotionsobject · 필수감정 ID → 감정 정의.
{"additionalProperties":{"$ref":"#/$defs/Emotion"}}
emotions[key]Emotion구조와 허용되는 값은 유형 및 스키마를 참고하세요.
Schema · ContentCharacter
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "key": {
      "$ref": "#/$defs/Key"
    },
    "nameTextRef": {
      "$ref": "#/$defs/Id"
    },
    "color": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$"
    },
    "defaultPortraitRef": {
      "$ref": "#/$defs/Id"
    },
    "emotions": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/Emotion"
      }
    }
  },
  "required": [
    "id",
    "name",
    "key",
    "nameTextRef",
    "color",
    "emotions"
  ],
  "additionalProperties": false,
  "title": "ContentCharacter"
}

ContentCommandDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
keyKey · 필수읽기 쉬운 고정 키입니다. 기술적인 참조에는 계속 ID를 사용합니다.
categorystring · 필수정의를 구성하는 데 사용되는 카탈로그 범주.
inputsArray<ParameterDefinition> · 필수이름과 유형이 지정된 시그니처 입력입니다.
outcomesArray<OutcomeDefinition> · 필수명령이 반환할 수 있는 결과의 이름과 해당 데이터 규약 및 바인딩입니다.
{"minItems":1}
descriptionstring작성자가 입력한 설명이며, 실행 가능한 명령이 아닙니다.
Schema · ContentCommandDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "key": {
      "$ref": "#/$defs/Key"
    },
    "category": {
      "type": "string"
    },
    "inputs": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ParameterDefinition"
      }
    },
    "outcomes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/OutcomeDefinition"
      },
      "minItems": 1
    },
    "description": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "key",
    "category",
    "inputs",
    "outcomes"
  ],
  "additionalProperties": false,
  "title": "ContentCommandDefinition"
}

ContentItemDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
keyKey · 필수읽기 쉬운 고정 키입니다. 기술적인 참조에는 계속 ID를 사용합니다.
nameTextRefId · 필수로컬 이름에 대한 텍스트 ID.
descriptionTextRefId현지화된 설명에 사용하는 텍스트 ID입니다.
iconAssetRefId카탈로그 아이콘을 위한 Asset ID.
Schema · ContentItemDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "key": {
      "$ref": "#/$defs/Key"
    },
    "nameTextRef": {
      "$ref": "#/$defs/Id"
    },
    "descriptionTextRef": {
      "$ref": "#/$defs/Id"
    },
    "iconAssetRef": {
      "$ref": "#/$defs/Id"
    }
  },
  "required": [
    "id",
    "name",
    "key",
    "nameTextRef"
  ],
  "additionalProperties": false,
  "title": "ContentItemDefinition"
}

ContentLocationDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
keyKey · 필수읽기 쉬운 고정 키입니다. 기술적인 참조에는 계속 ID를 사용합니다.
nameTextRefId · 필수로컬 이름에 대한 텍스트 ID.
descriptionTextRefId현지화된 설명에 사용하는 텍스트 ID입니다.
previewAssetRefId미리보기 리소스의 자산 ID.
Schema · ContentLocationDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "key": {
      "$ref": "#/$defs/Key"
    },
    "nameTextRef": {
      "$ref": "#/$defs/Id"
    },
    "descriptionTextRef": {
      "$ref": "#/$defs/Id"
    },
    "previewAssetRef": {
      "$ref": "#/$defs/Id"
    }
  },
  "required": [
    "id",
    "name",
    "key",
    "nameTextRef"
  ],
  "additionalProperties": false,
  "title": "ContentLocationDefinition"
}

ContentMinigameDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
keyKey · 필수읽기 쉬운 고정 키입니다. 기술적인 참조에는 계속 ID를 사용합니다.
nameTextRefId로컬 이름에 대한 텍스트 ID.
commandRefId · 필수실행할 게임 명령의 ID.
Schema · ContentMinigameDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "key": {
      "$ref": "#/$defs/Key"
    },
    "nameTextRef": {
      "$ref": "#/$defs/Id"
    },
    "commandRef": {
      "$ref": "#/$defs/Id"
    }
  },
  "required": [
    "id",
    "name",
    "key",
    "commandRef"
  ],
  "additionalProperties": false,
  "title": "ContentMinigameDefinition"
}

ContentQuestDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
keyKey · 필수읽기 쉬운 고정 키입니다. 기술적인 참조에는 계속 ID를 사용합니다.
titleTextRefId · 필수현지화 제목의 텍스트 ID.
descriptionTextRefId현지화된 설명에 사용하는 텍스트 ID입니다.
objectiveDefinitionsArray<QuestObjective> · 필수퀘스트 목표 ID → 목표 정의입니다.
Schema · ContentQuestDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "key": {
      "$ref": "#/$defs/Key"
    },
    "titleTextRef": {
      "$ref": "#/$defs/Id"
    },
    "descriptionTextRef": {
      "$ref": "#/$defs/Id"
    },
    "objectiveDefinitions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/QuestObjective"
      }
    }
  },
  "required": [
    "id",
    "name",
    "key",
    "titleTextRef",
    "objectiveDefinitions"
  ],
  "additionalProperties": false,
  "title": "ContentQuestDefinition"
}

ContentTextEntry

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
keyKey읽기 쉬운 고정 키입니다. 기술적인 참조에는 계속 ID를 사용합니다.
categorystring · 필수정의를 구성하는 데 사용되는 카탈로그 범주.
sourceMessage메시지 · 필수텍스트와 자리표시자 세그먼트로 구성된 원문 메시지입니다.
placeholdersobject · 필수자리표시자 키 → 자료형과 서식 정의입니다.
{"additionalProperties":{"$ref":"#/$defs/PlaceholderDefinition"}}
placeholders[key]PlaceholderDefinition구조와 허용되는 값은 유형 및 스키마를 참고하세요.
externalUseboolean · 필수노드 그래프 밖에서 사용하는 텍스트임을 표시합니다.
Schema · ContentTextEntry
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "key": {
      "$ref": "#/$defs/Key"
    },
    "category": {
      "type": "string"
    },
    "sourceMessage": {
      "$ref": "#/$defs/Message"
    },
    "placeholders": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/PlaceholderDefinition"
      }
    },
    "externalUse": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "category",
    "sourceMessage",
    "placeholders",
    "externalUse"
  ],
  "additionalProperties": false,
  "title": "ContentTextEntry"
}

ContentVariableDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
keyKey · 필수읽기 쉬운 고정 키입니다. 기술적인 참조에는 계속 ID를 사용합니다.
valueTypeScalarType · 필수허용되는 엔티티 유형을 포함한 예상 값의 데이터 규약입니다.
defaultValueScalarValue · 필수유형이 지정된 초기값 또는 기본값입니다.
descriptionstring작성자가 입력한 설명이며, 실행 가능한 명령이 아닙니다.
Schema · ContentVariableDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "key": {
      "$ref": "#/$defs/Key"
    },
    "valueType": {
      "$ref": "#/$defs/ScalarType"
    },
    "defaultValue": {
      "$ref": "#/$defs/ScalarValue"
    },
    "description": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "name",
    "key",
    "valueType",
    "defaultValue"
  ],
  "additionalProperties": false,
  "title": "ContentVariableDefinition"
}

Emotion

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
portraitRefId표정에 사용하는 초상화 에셋입니다. 범용 내보내기에는 포함되지 않습니다.
Schema · Emotion
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "portraitRef": {
      "$ref": "#/$defs/Id"
    }
  },
  "required": [
    "id",
    "name"
  ],
  "additionalProperties": false,
  "title": "Emotion"
}

EntityType

필드유형 / 필수의미 / 규칙
Schema · EntityType
{
  "type": "string",
  "enum": [
    "item",
    "quest",
    "location",
    "minigame",
    "asset"
  ],
  "title": "EntityType"
}

EntryRef

필드유형 / 필수의미 / 규칙
flowRefId · 필수장면 또는 서브스토리의 ID입니다.
entryRefId · 필수지정된 흐름 안의 시작점 ID입니다.
Schema · EntryRef
{
  "type": "object",
  "properties": {
    "flowRef": {
      "$ref": "#/$defs/Id"
    },
    "entryRef": {
      "$ref": "#/$defs/Id"
    }
  },
  "required": [
    "flowRef",
    "entryRef"
  ],
  "additionalProperties": false,
  "title": "EntryRef"
}

ExecutableChoiceOption

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
textExecutableTextUse · 필수텍스트 세그먼트에서는 실제 문자열입니다. 텍스트 사용 정보에서는 textRef와 bindings입니다.
conditionExecutableCondition분기하거나 선택지를 활성화하기 전에 평가하는 조건입니다.
effectsArray<ExecutableEffect> · 필수액션 노드가 순서대로 적용하는 상태 변경 효과입니다.
continuationExecutableContinuation · 필수노드 실행이 끝난 뒤의 다음 진행 정보입니다.
Schema · ExecutableChoiceOption
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "text": {
      "$ref": "#/$defs/ExecutableTextUse"
    },
    "condition": {
      "$ref": "#/$defs/ExecutableCondition"
    },
    "effects": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ExecutableEffect"
      }
    },
    "continuation": {
      "$ref": "#/$defs/ExecutableContinuation"
    }
  },
  "required": [
    "id",
    "text",
    "effects",
    "continuation"
  ],
  "additionalProperties": false,
  "title": "ExecutableChoiceOption"
}

ExecutableCondition

필드유형 / 필수의미 / 규칙
[oneOf 1].kind"compare" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 1].leftExecutableOperand · 필수자료형이 지정된 왼쪽 비교 피연산자입니다.
[oneOf 1].operator"eq" | "ne" | "lt" | "lte" | "gt" | "gte" · 필수비교/ 논리 연산자; 허용된 값은 변종에 나타납니다.
[oneOf 1].rightExecutableOperand · 필수자료형이 지정된 오른쪽 비교 피연산자입니다.
[oneOf 2].kind"all" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 2].childrenArray<ExecutableCondition> · 필수복합 표현식의 하위 조건입니다.
[oneOf 3].kind"any" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 3].childrenArray<ExecutableCondition> · 필수복합 표현식의 하위 조건입니다.
[oneOf 4].kind"not" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 4].childExecutableCondition · 필수단항 연산자의 하위 조건입니다.
Schema · ExecutableCondition
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "compare"
        },
        "left": {
          "$ref": "#/$defs/ExecutableOperand"
        },
        "operator": {
          "type": "string",
          "enum": [
            "eq",
            "ne",
            "lt",
            "lte",
            "gt",
            "gte"
          ]
        },
        "right": {
          "$ref": "#/$defs/ExecutableOperand"
        }
      },
      "required": [
        "kind",
        "left",
        "operator",
        "right"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "all"
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ExecutableCondition"
          }
        }
      },
      "required": [
        "kind",
        "children"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "any"
        },
        "children": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ExecutableCondition"
          }
        }
      },
      "required": [
        "kind",
        "children"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "not"
        },
        "child": {
          "$ref": "#/$defs/ExecutableCondition"
        }
      },
      "required": [
        "kind",
        "child"
      ],
      "additionalProperties": false
    }
  ],
  "title": "ExecutableCondition"
}

ExecutableContinuation

필드유형 / 필수의미 / 규칙
[oneOf 1].kind"node" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 1].nodeRefId · 필수다음 실행 가능한 노드 ID.
[oneOf 2].kind"end" · 필수유효한 변형을 선택하는 구분 값입니다.
Schema · ExecutableContinuation
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "node"
        },
        "nodeRef": {
          "$ref": "#/$defs/Id"
        }
      },
      "required": [
        "kind",
        "nodeRef"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "end"
        }
      },
      "required": [
        "kind"
      ],
      "additionalProperties": false
    }
  ],
  "title": "ExecutableContinuation"
}

ExecutableEffect

필드유형 / 필수의미 / 규칙
[oneOf 1].kind"set" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 1].variableRefId · 필수읽거나 쓰기 할 수있는 변수의 ID.
[oneOf 1].valueExecutableOperand · 필수리터럴 값입니다. 선언된 자료형과 일치해야 합니다.
[oneOf 2].kind"add" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 2].variableRefId · 필수읽거나 쓰기 할 수있는 변수의 ID.
[oneOf 2].valueExecutableOperand · 필수리터럴 값입니다. 선언된 자료형과 일치해야 합니다.
[oneOf 3].kind"subtract" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 3].variableRefId · 필수읽거나 쓰기 할 수있는 변수의 ID.
[oneOf 3].valueExecutableOperand · 필수리터럴 값입니다. 선언된 자료형과 일치해야 합니다.
Schema · ExecutableEffect
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "set"
        },
        "variableRef": {
          "$ref": "#/$defs/Id"
        },
        "value": {
          "$ref": "#/$defs/ExecutableOperand"
        }
      },
      "required": [
        "kind",
        "variableRef",
        "value"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "add"
        },
        "variableRef": {
          "$ref": "#/$defs/Id"
        },
        "value": {
          "$ref": "#/$defs/ExecutableOperand"
        }
      },
      "required": [
        "kind",
        "variableRef",
        "value"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "subtract"
        },
        "variableRef": {
          "$ref": "#/$defs/Id"
        },
        "value": {
          "$ref": "#/$defs/ExecutableOperand"
        }
      },
      "required": [
        "kind",
        "variableRef",
        "value"
      ],
      "additionalProperties": false
    }
  ],
  "title": "ExecutableEffect"
}

ExecutableEmptyChoice

필드유형 / 필수의미 / 규칙
[oneOf 1].kind"continue" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 1].continuationExecutableContinuation · 필수노드 실행이 끝난 뒤의 다음 진행 정보입니다.
[oneOf 2].kind"fault" · 필수유효한 변형을 선택하는 구분 값입니다.
Schema · ExecutableEmptyChoice
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "continue"
        },
        "continuation": {
          "$ref": "#/$defs/ExecutableContinuation"
        }
      },
      "required": [
        "kind",
        "continuation"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "fault"
        }
      },
      "required": [
        "kind"
      ],
      "additionalProperties": false
    }
  ],
  "title": "ExecutableEmptyChoice"
}

ExecutableNode

필드유형 / 필수의미 / 규칙
[oneOf 1].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 1].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 1].kind"dialogue" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 1].textExecutableTextUse · 필수텍스트 세그먼트에서는 실제 문자열입니다. 텍스트 사용 정보에서는 textRef와 bindings입니다.
[oneOf 1].speakerRefId화자 캐릭터 ID입니다. 없으면 지정된 화자가 없다는 뜻입니다.
[oneOf 1].emotionRefId이 대화에서 선택한 캐릭터의 감정입니다.
[oneOf 1].continuationExecutableContinuation · 필수노드 실행이 끝난 뒤의 다음 진행 정보입니다.
[oneOf 2].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 2].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 2].kind"choice" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 2].optionOrderArray<Id> · 필수표시 순서대로 나열된 선택지 ID입니다.
[oneOf 2].optionsobject · 필수선택지 ID → 텍스트, 조건, 다음 진행 정보를 담은 선택지입니다.
{"additionalProperties":{"$ref":"#/$defs/ExecutableChoiceOption"}}
[oneOf 2].options[key]ExecutableChoiceOption구조와 허용되는 값은 유형 및 스키마를 참고하세요.
[oneOf 2].whenEmptyExecutableEmptyChoice · 필수사용 가능한 선택지가 없을 때의 동작입니다.
[oneOf 3].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 3].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 3].kind"branch" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 3].conditionExecutableCondition · 필수분기하거나 선택지를 활성화하기 전에 평가하는 조건입니다.
[oneOf 3].whenTrueExecutableContinuation · 필수조건이 참일 때의 다음 진행 정보입니다.
[oneOf 3].whenFalseExecutableContinuation · 필수조건이 거짓일 때의 다음 진행 정보입니다.
[oneOf 4].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 4].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 4].kind"action" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 4].effectsArray<ExecutableEffect> · 필수액션 노드가 순서대로 적용하는 상태 변경 효과입니다.
[oneOf 4].continuationExecutableContinuation · 필수노드 실행이 끝난 뒤의 다음 진행 정보입니다.
[oneOf 5].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 5].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 5].kind"command" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 5].commandRefId · 필수실행할 게임 명령의 ID.
[oneOf 5].argumentsobject · 필수호출에 전달하는 이름이 있는 인수 값입니다.
{"additionalProperties":{"$ref":"#/$defs/ExecutableOperand"}}
[oneOf 5].arguments[key]ExecutableOperand구조와 허용되는 값은 유형 및 스키마를 참고하세요.
[oneOf 5].outcomesobject · 필수명령이 반환할 수 있는 결과의 이름과 해당 데이터 규약 및 바인딩입니다.
{"additionalProperties":{"$ref":"#/$defs/ExecutableOutcomeBinding"}}
[oneOf 5].outcomes[key]ExecutableOutcomeBinding구조와 허용되는 값은 유형 및 스키마를 참고하세요.
[oneOf 6].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 6].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 6].kind"jump" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 6].targetEntryRef · 필수변수나 시작점처럼 자료형이 지정된 대상 참조입니다. 정확한 구조는 해당 변형을 확인하세요.
[oneOf 7].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 7].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 7].kind"end" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 8].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 8].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 8].kind"call" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 8].targetEntryRef · 필수변수나 시작점처럼 자료형이 지정된 대상 참조입니다. 정확한 구조는 해당 변형을 확인하세요.
[oneOf 8].continuationExecutableContinuation · 필수노드 실행이 끝난 뒤의 다음 진행 정보입니다.
[oneOf 9].idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
[oneOf 9].flowRefId · 필수장면 또는 서브스토리의 ID입니다.
[oneOf 9].kind"return" · 필수유효한 변형을 선택하는 구분 값입니다.
Schema · ExecutableNode
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "dialogue"
        },
        "text": {
          "$ref": "#/$defs/ExecutableTextUse"
        },
        "speakerRef": {
          "$ref": "#/$defs/Id"
        },
        "emotionRef": {
          "$ref": "#/$defs/Id"
        },
        "continuation": {
          "$ref": "#/$defs/ExecutableContinuation"
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind",
        "text",
        "continuation"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "choice"
        },
        "optionOrder": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Id"
          },
          "uniqueItems": true
        },
        "options": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ExecutableChoiceOption"
          }
        },
        "whenEmpty": {
          "$ref": "#/$defs/ExecutableEmptyChoice"
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind",
        "optionOrder",
        "options",
        "whenEmpty"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "branch"
        },
        "condition": {
          "$ref": "#/$defs/ExecutableCondition"
        },
        "whenTrue": {
          "$ref": "#/$defs/ExecutableContinuation"
        },
        "whenFalse": {
          "$ref": "#/$defs/ExecutableContinuation"
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind",
        "condition",
        "whenTrue",
        "whenFalse"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "action"
        },
        "effects": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ExecutableEffect"
          }
        },
        "continuation": {
          "$ref": "#/$defs/ExecutableContinuation"
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind",
        "effects",
        "continuation"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "command"
        },
        "commandRef": {
          "$ref": "#/$defs/Id"
        },
        "arguments": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ExecutableOperand"
          }
        },
        "outcomes": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ExecutableOutcomeBinding"
          }
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind",
        "commandRef",
        "arguments",
        "outcomes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "jump"
        },
        "target": {
          "$ref": "#/$defs/EntryRef"
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind",
        "target"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "end"
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "call"
        },
        "target": {
          "$ref": "#/$defs/EntryRef"
        },
        "continuation": {
          "$ref": "#/$defs/ExecutableContinuation"
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind",
        "target",
        "continuation"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Id"
        },
        "flowRef": {
          "$ref": "#/$defs/Id"
        },
        "kind": {
          "const": "return"
        }
      },
      "required": [
        "id",
        "flowRef",
        "kind"
      ],
      "additionalProperties": false
    }
  ],
  "title": "ExecutableNode"
}

ExecutableOperand

필드유형 / 필수의미 / 규칙
[oneOf 1].kind"literal" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 1].valueTypedValue · 필수리터럴 값입니다. 선언된 자료형과 일치해야 합니다.
[oneOf 2].kind"variable" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 2].variableRefId · 필수읽거나 쓰기 할 수있는 변수의 ID.
Schema · ExecutableOperand
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "literal"
        },
        "value": {
          "$ref": "#/$defs/TypedValue"
        }
      },
      "required": [
        "kind",
        "value"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "variable"
        },
        "variableRef": {
          "$ref": "#/$defs/Id"
        }
      },
      "required": [
        "kind",
        "variableRef"
      ],
      "additionalProperties": false
    }
  ],
  "title": "ExecutableOperand"
}

ExecutableOutcomeBinding

필드유형 / 필수의미 / 규칙
resultBindingsobject · 필수명령 결과 이름 → 반환 값을 저장할 대상 변수입니다.
{"additionalProperties":{"$ref":"#/$defs/Id"}}
resultBindings[key]Id구조와 허용되는 값은 유형 및 스키마를 참고하세요.
continuationExecutableContinuation · 필수노드 실행이 끝난 뒤의 다음 진행 정보입니다.
Schema · ExecutableOutcomeBinding
{
  "type": "object",
  "properties": {
    "resultBindings": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/Id"
      }
    },
    "continuation": {
      "$ref": "#/$defs/ExecutableContinuation"
    }
  },
  "required": [
    "resultBindings",
    "continuation"
  ],
  "additionalProperties": false,
  "title": "ExecutableOutcomeBinding"
}

ExecutableStory

필드유형 / 필수의미 / 규칙
format"vnle.story" · 필수이 데이터 컨테이너에 대한 정확한 형식 식별자.
containerVersion1 · 필수스토리 컨테이너 정수 버전; 현재 1.
storyBuildIdHash · 필수정규화된 실행 데이터의 SHA-256입니다. 콘텐츠만 변경하면 바뀌지 않습니다.
executionExecutionContract · 필수자료형이 지정된 실행 규약입니다.
contentobject · 필수실행 정보와 분리된 언어 및 카탈로그 데이터입니다.
{"additionalProperties":false}
content.sourceLocaleLocale · 필수원문 언어입니다. 번역이 없을 때도 이 언어를 사용합니다.
content.localesArray<Locale> · 필수원문 언어를 포함해 내보내기에 선언된 언어 목록입니다.
{"minItems":1}
content.fallbackPolicyFallbackPolicy · 필수현재 값은 source이며, 번역이 없으면 원문을 사용합니다.
content.textsobject · 필수텍스트 ID → 원문 메시지, 자리표시자, 메타데이터입니다.
{"additionalProperties":{"$ref":"#/$defs/ContentTextEntry"}}
content.texts[key]ContentTextEntry구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.translationsobject · 필수언어 → 텍스트 ID → 번역입니다. 항목이 없으면 원문을 사용합니다.
{"additionalProperties":{"type":"object","propertyNames":{"pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"additionalProperties":{"$ref":"#/$defs/Translation"},"minProperties":1}}
content.translations[key]object구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.charactersobject · 필수캐릭터 ID → 번역된 이름과 감정이 있는 캐릭터입니다.
{"additionalProperties":{"$ref":"#/$defs/ContentCharacter"}}
content.characters[key]ContentCharacter구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.questsobject · 필수퀘스트 ID → 목표를 포함한 퀘스트 정의입니다.
{"additionalProperties":{"$ref":"#/$defs/ContentQuestDefinition"}}
content.quests[key]ContentQuestDefinition구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.itemsobject · 필수아이템 ID → 아이템 정의입니다.
{"additionalProperties":{"$ref":"#/$defs/ContentItemDefinition"}}
content.items[key]ContentItemDefinition구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.locationsobject · 필수위치 ID → 위치 정의.
{"additionalProperties":{"$ref":"#/$defs/ContentLocationDefinition"}}
content.locations[key]ContentLocationDefinition구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.minigamesobject · 필수미니게임 ID → 정의입니다. 실제 플레이는 호스트 게임에서 구현합니다.
{"additionalProperties":{"$ref":"#/$defs/ContentMinigameDefinition"}}
content.minigames[key]ContentMinigameDefinition구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.assetsobject · 필수에셋 ID → 미디어 정의입니다. 범용 내보내기는 현재 엔진용으로 해석된 에셋을 제공하지 않습니다.
{"additionalProperties":{"$ref":"#/$defs/ContentAsset"}}
content.assets[key]ContentAsset구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.variableDefinitionsobject · 필수작성자가 정의한 변수이며 이름과 텍스트 참조를 포함합니다.
{"additionalProperties":{"$ref":"#/$defs/ContentVariableDefinition"}}
content.variableDefinitions[key]ContentVariableDefinition구조와 허용되는 값은 유형 및 스키마를 참고하세요.
content.commandDefinitionsobject · 필수작성자가 정의한 명령이며 텍스트 참조를 포함합니다.
{"additionalProperties":{"$ref":"#/$defs/ContentCommandDefinition"}}
content.commandDefinitions[key]ContentCommandDefinition구조와 허용되는 값은 유형 및 스키마를 참고하세요.
Schema · ExecutableStory
{
  "type": "object",
  "properties": {
    "format": {
      "const": "vnle.story"
    },
    "containerVersion": {
      "const": 1
    },
    "storyBuildId": {
      "$ref": "#/$defs/Hash"
    },
    "execution": {
      "$ref": "#/$defs/ExecutionContract"
    },
    "content": {
      "type": "object",
      "properties": {
        "sourceLocale": {
          "$ref": "#/$defs/Locale"
        },
        "locales": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Locale"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "fallbackPolicy": {
          "$ref": "#/$defs/FallbackPolicy"
        },
        "texts": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentTextEntry"
          }
        },
        "translations": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$"
          },
          "additionalProperties": {
            "type": "object",
            "propertyNames": {
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
            },
            "additionalProperties": {
              "$ref": "#/$defs/Translation"
            },
            "minProperties": 1
          }
        },
        "characters": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentCharacter"
          }
        },
        "quests": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentQuestDefinition"
          }
        },
        "items": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentItemDefinition"
          }
        },
        "locations": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentLocationDefinition"
          }
        },
        "minigames": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentMinigameDefinition"
          }
        },
        "assets": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentAsset"
          }
        },
        "variableDefinitions": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentVariableDefinition"
          }
        },
        "commandDefinitions": {
          "type": "object",
          "propertyNames": {
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
          },
          "additionalProperties": {
            "$ref": "#/$defs/ContentCommandDefinition"
          }
        }
      },
      "required": [
        "sourceLocale",
        "locales",
        "fallbackPolicy",
        "texts",
        "translations",
        "characters",
        "quests",
        "items",
        "locations",
        "minigames",
        "assets",
        "variableDefinitions",
        "commandDefinitions"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "format",
    "containerVersion",
    "storyBuildId",
    "execution",
    "content"
  ],
  "additionalProperties": false,
  "title": "ExecutableStory"
}

ExecutableTextUse

필드유형 / 필수의미 / 규칙
textRefId · 필수content.texts와 해당 텍스트 규약에 대한 참조입니다.
bindingsobject · 필수자리표시자 또는 매개변수 이름 → 자료형이 지정된 피연산자입니다.
{"additionalProperties":{"$ref":"#/$defs/ExecutableOperand"}}
bindings[key]ExecutableOperand구조와 허용되는 값은 유형 및 스키마를 참고하세요.
Schema · ExecutableTextUse
{
  "type": "object",
  "properties": {
    "textRef": {
      "$ref": "#/$defs/Id"
    },
    "bindings": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/ExecutableOperand"
      }
    }
  },
  "required": [
    "textRef",
    "bindings"
  ],
  "additionalProperties": false,
  "title": "ExecutableTextUse"
}

ExecutionContract

필드유형 / 필수의미 / 규칙
format"vnle.execution" · 필수이 데이터 컨테이너에 대한 정확한 형식 식별자.
contractVersionRuntimeVersion · 필수실행 호환성 버전입니다. 메이저와 마이너 버전으로 구성됩니다.
projectIdId · 필수소스 프로젝트의 안정적인 ID.
requiredCapabilitiesArray<Capability> · 필수완전한 런타임 어댑터가 시작 전에 확인해야 하는 지원 기능입니다.
limitsobject · 필수자동 실행과 재귀의 제한입니다.
{"additionalProperties":false}
limits.maxAutomaticTransitions1000 · 필수사용자 입력없이 최대 자동 전환.
limits.maxConditionDepth32 · 필수조건의 최대 중첩 깊이입니다.
limits.maxConditionTerms1024 · 필수조건 항목의 최대 개수입니다.
limits.maxCallDepth32 · 필수하위 이야기 호출의 최대 중첩 깊이입니다.
entriesobject · 필수시작점 ID → 흐름과 노드 참조입니다.
{"additionalProperties":{"$ref":"#/$defs/RuntimeEntry"}}
entries[key]RuntimeEntry구조와 허용되는 값은 유형 및 스키마를 참고하세요.
nodesobject · 필수노드 ID → 실행 가능한 노드입니다. kind가 필드를 결정합니다.
{"additionalProperties":{"$ref":"#/$defs/ExecutableNode"}}
nodes[key]ExecutableNode구조와 허용되는 값은 유형 및 스키마를 참고하세요.
variablesobject · 필수변수 ID → 자료형이 지정된 런타임 변수 정의입니다.
{"additionalProperties":{"$ref":"#/$defs/RuntimeVariable"}}
variables[key]RuntimeVariable구조와 허용되는 값은 유형 및 스키마를 참고하세요.
commandsobject · 필수명령 ID → 자료형이 지정된 런타임 시그니처입니다.
{"additionalProperties":{"$ref":"#/$defs/RuntimeSignature"}}
commands[key]RuntimeSignature구조와 허용되는 값은 유형 및 스키마를 참고하세요.
textContractsobject · 필수텍스트 ID → 실행에 필요한 자리표시자 규약입니다.
{"additionalProperties":{"$ref":"#/$defs/PlaceholderContract"}}
textContracts[key]PlaceholderContract구조와 허용되는 값은 유형 및 스키마를 참고하세요.
Schema · ExecutionContract
{
  "type": "object",
  "properties": {
    "format": {
      "const": "vnle.execution"
    },
    "contractVersion": {
      "$ref": "#/$defs/RuntimeVersion"
    },
    "projectId": {
      "$ref": "#/$defs/Id"
    },
    "requiredCapabilities": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Capability"
      },
      "uniqueItems": true
    },
    "limits": {
      "type": "object",
      "properties": {
        "maxAutomaticTransitions": {
          "const": 1000
        },
        "maxConditionDepth": {
          "const": 32
        },
        "maxConditionTerms": {
          "const": 1024
        },
        "maxCallDepth": {
          "const": 32
        }
      },
      "required": [
        "maxAutomaticTransitions",
        "maxConditionDepth",
        "maxConditionTerms",
        "maxCallDepth"
      ],
      "additionalProperties": false
    },
    "entries": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/RuntimeEntry"
      }
    },
    "nodes": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/ExecutableNode"
      }
    },
    "variables": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/RuntimeVariable"
      }
    },
    "commands": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/RuntimeSignature"
      }
    },
    "textContracts": {
      "type": "object",
      "propertyNames": {
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "additionalProperties": {
        "$ref": "#/$defs/PlaceholderContract"
      }
    }
  },
  "required": [
    "format",
    "contractVersion",
    "projectId",
    "requiredCapabilities",
    "limits",
    "entries",
    "nodes",
    "variables",
    "commands",
    "textContracts"
  ],
  "additionalProperties": false,
  "title": "ExecutionContract"
}

FallbackPolicy

필드유형 / 필수의미 / 규칙
Schema · FallbackPolicy
{
  "type": "string",
  "enum": [
    "block",
    "source"
  ],
  "title": "FallbackPolicy"
}

Hash

필드유형 / 필수의미 / 규칙
Schema · Hash
{
  "type": "string",
  "pattern": "^sha256:[0-9a-f]{64}$",
  "title": "Hash"
}

Id

필드유형 / 필수의미 / 규칙
Schema · Id
{
  "type": "string",
  "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
  "title": "Id"
}

Key

필드유형 / 필수의미 / 규칙
Schema · Key
{
  "type": "string",
  "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,127}$",
  "title": "Key"
}

Locale

필드유형 / 필수의미 / 규칙
Schema · Locale
{
  "type": "string",
  "pattern": "^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$",
  "title": "Locale"
}

메시지

필드유형 / 필수의미 / 규칙
kind"segments" · 필수유효한 변형을 선택하는 구분 값입니다.
segmentsArray<object | object> · 필수순서대로 나열된 텍스트 및 자리표시자 메시지 세그먼트입니다.
Schema · Message
{
  "type": "object",
  "properties": {
    "kind": {
      "const": "segments"
    },
    "segments": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "kind": {
                "const": "text"
              },
              "text": {
                "type": "string"
              }
            },
            "required": [
              "kind",
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "const": "placeholder"
              },
              "placeholderRef": {
                "$ref": "#/$defs/Id"
              }
            },
            "required": [
              "kind",
              "placeholderRef"
            ],
            "additionalProperties": false
          }
        ]
      }
    }
  },
  "required": [
    "kind",
    "segments"
  ],
  "additionalProperties": false,
  "title": "Message"
}

OutcomeDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
resultsArray<ResultDefinition> · 필수결과에 포함되는 이름과 자료형이 있는 반환 값입니다.
Schema · OutcomeDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ResultDefinition"
      }
    }
  },
  "required": [
    "id",
    "name",
    "results"
  ],
  "additionalProperties": false,
  "title": "OutcomeDefinition"
}

ParameterDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
valueTypeValueType · 필수허용되는 엔티티 유형을 포함한 예상 값의 데이터 규약입니다.
defaultValueTypedValue유형이 지정된 초기값 또는 기본값입니다.
Schema · ParameterDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "valueType": {
      "$ref": "#/$defs/ValueType"
    },
    "defaultValue": {
      "$ref": "#/$defs/TypedValue"
    }
  },
  "required": [
    "id",
    "name",
    "valueType"
  ],
  "additionalProperties": false,
  "title": "ParameterDefinition"
}

PlaceholderContract

필드유형 / 필수의미 / 규칙
map[key]ScalarType구조와 허용되는 값은 유형 및 스키마를 참고하세요.
Schema · PlaceholderContract
{
  "type": "object",
  "propertyNames": {
    "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
  },
  "additionalProperties": {
    "$ref": "#/$defs/ScalarType"
  },
  "title": "PlaceholderContract"
}

PlaceholderDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
displayNamestring · 필수사람이 읽기 쉬운 에셋 표시 이름입니다.
valueTypeScalarType · 필수허용되는 엔티티 유형을 포함한 예상 값의 데이터 규약입니다.
Schema · PlaceholderDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "displayName": {
      "type": "string"
    },
    "valueType": {
      "$ref": "#/$defs/ScalarType"
    }
  },
  "required": [
    "id",
    "displayName",
    "valueType"
  ],
  "additionalProperties": false,
  "title": "PlaceholderDefinition"
}

QuestObjective

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
labelTextRefId · 필수로컬 라벨의 텍스트 ID.
descriptionTextRefId현지화된 설명에 사용하는 텍스트 ID입니다.
Schema · QuestObjective
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "labelTextRef": {
      "$ref": "#/$defs/Id"
    },
    "descriptionTextRef": {
      "$ref": "#/$defs/Id"
    }
  },
  "required": [
    "id",
    "labelTextRef"
  ],
  "additionalProperties": false,
  "title": "QuestObjective"
}

RelativePath

필드유형 / 필수의미 / 규칙
Schema · RelativePath
{
  "type": "string",
  "minLength": 1,
  "maxLength": 1024,
  "title": "RelativePath"
}

ResultDefinition

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
namestring · 필수작성자가 지정한 이름입니다. 참조 키로 사용하지 마세요.
valueTypeValueType · 필수허용되는 엔티티 유형을 포함한 예상 값의 데이터 규약입니다.
Schema · ResultDefinition
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "name": {
      "type": "string"
    },
    "valueType": {
      "$ref": "#/$defs/ValueType"
    }
  },
  "required": [
    "id",
    "name",
    "valueType"
  ],
  "additionalProperties": false,
  "title": "ResultDefinition"
}

RuntimeEntry

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
flowRefId · 필수장면 또는 서브스토리의 ID입니다.
nodeRefId · 필수다음 실행 가능한 노드 ID.
Schema · RuntimeEntry
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "flowRef": {
      "$ref": "#/$defs/Id"
    },
    "nodeRef": {
      "$ref": "#/$defs/Id"
    }
  },
  "required": [
    "id",
    "flowRef",
    "nodeRef"
  ],
  "additionalProperties": false,
  "title": "RuntimeEntry"
}

RuntimeSignature

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
inputsArray<object> · 필수이름과 유형이 지정된 시그니처 입력입니다.
outcomesArray<object> · 필수명령이 반환할 수 있는 결과의 이름과 해당 데이터 규약 및 바인딩입니다.
{"minItems":1}
Schema · RuntimeSignature
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "inputs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/$defs/Id"
          },
          "valueType": {
            "$ref": "#/$defs/ValueType"
          },
          "defaultValue": {
            "$ref": "#/$defs/TypedValue"
          }
        },
        "required": [
          "id",
          "valueType"
        ],
        "additionalProperties": false
      }
    },
    "outcomes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/$defs/Id"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "$ref": "#/$defs/Id"
                },
                "valueType": {
                  "$ref": "#/$defs/ValueType"
                }
              },
              "required": [
                "id",
                "valueType"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "id",
          "results"
        ],
        "additionalProperties": false
      },
      "minItems": 1
    }
  },
  "required": [
    "id",
    "inputs",
    "outcomes"
  ],
  "additionalProperties": false,
  "title": "RuntimeSignature"
}

RuntimeVariable

필드유형 / 필수의미 / 규칙
idId · 필수안정적인 ID입니다. 표시 이름은 키로 사용하지 않습니다.
valueTypeScalarType · 필수허용되는 엔티티 유형을 포함한 예상 값의 데이터 규약입니다.
defaultValueScalarValue · 필수유형이 지정된 초기값 또는 기본값입니다.
Schema · RuntimeVariable
{
  "type": "object",
  "properties": {
    "id": {
      "$ref": "#/$defs/Id"
    },
    "valueType": {
      "$ref": "#/$defs/ScalarType"
    },
    "defaultValue": {
      "$ref": "#/$defs/ScalarValue"
    }
  },
  "required": [
    "id",
    "valueType",
    "defaultValue"
  ],
  "additionalProperties": false,
  "title": "RuntimeVariable"
}

RuntimeVersion

필드유형 / 필수의미 / 규칙
major1 · 필수호환되지 않는 메이저 버전입니다. 지원하지 않는 버전은 거부하세요.
minor1 · 필수주요 버전의 확장 버전.
Schema · RuntimeVersion
{
  "type": "object",
  "properties": {
    "major": {
      "const": 1
    },
    "minor": {
      "const": 1
    }
  },
  "required": [
    "major",
    "minor"
  ],
  "additionalProperties": false,
  "title": "RuntimeVersion"
}

ScalarType

필드유형 / 필수의미 / 규칙
Schema · ScalarType
{
  "type": "string",
  "enum": [
    "boolean",
    "integer",
    "string"
  ],
  "title": "ScalarType"
}

ScalarValue

필드유형 / 필수의미 / 규칙
[oneOf 1].type"boolean" · 필수자료형 구분 값입니다. 허용 값은 상위 스키마에 따라 달라집니다.
[oneOf 1].valueboolean · 필수리터럴 값입니다. 선언된 자료형과 일치해야 합니다.
[oneOf 2].type"integer" · 필수자료형 구분 값입니다. 허용 값은 상위 스키마에 따라 달라집니다.
[oneOf 2].valueinteger · 필수리터럴 값입니다. 선언된 자료형과 일치해야 합니다.
{"minimum":-2147483648,"maximum":2147483647}
[oneOf 3].type"string" · 필수자료형 구분 값입니다. 허용 값은 상위 스키마에 따라 달라집니다.
[oneOf 3].valuestring · 필수리터럴 값입니다. 선언된 자료형과 일치해야 합니다.
Schema · ScalarValue
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "type": {
          "const": "boolean"
        },
        "value": {
          "type": "boolean"
        }
      },
      "required": [
        "type",
        "value"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "type": {
          "const": "integer"
        },
        "value": {
          "type": "integer",
          "minimum": -2147483648,
          "maximum": 2147483647
        }
      },
      "required": [
        "type",
        "value"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "type": {
          "const": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "required": [
        "type",
        "value"
      ],
      "additionalProperties": false
    }
  ],
  "title": "ScalarValue"
}

Translation

필드유형 / 필수의미 / 규칙
textRefId · 필수content.texts와 해당 텍스트 규약에 대한 참조입니다.
localeLocale · 필수이 번역 항목에 대한 Locale 코드.
message메시지 · 필수자리표시자 규약을 지키는 번역된 메시지입니다.
allowEmptyboolean · 필수의도적으로 빈 번역을 허용합니다.
workflowStatus"draft" | "translated" | "reviewed" · 필수번역 작업 흐름 상태, 런타임 지점이 아닙니다.
basedOnSourceFingerprintHash · 필수이 번역의 기준이 된 원문입니다. 일치하지 않으면 오래된 번역입니다.
reviewedContextFingerprintHash번역을 검토했을 때의 컨텍스트 지문입니다.
origin"ai"구조와 허용되는 값은 유형 및 스키마를 참고하세요.
Schema · Translation
{
  "type": "object",
  "properties": {
    "textRef": {
      "$ref": "#/$defs/Id"
    },
    "locale": {
      "$ref": "#/$defs/Locale"
    },
    "message": {
      "$ref": "#/$defs/Message"
    },
    "allowEmpty": {
      "type": "boolean"
    },
    "workflowStatus": {
      "type": "string",
      "enum": [
        "draft",
        "translated",
        "reviewed"
      ]
    },
    "basedOnSourceFingerprint": {
      "$ref": "#/$defs/Hash"
    },
    "reviewedContextFingerprint": {
      "$ref": "#/$defs/Hash"
    },
    "origin": {
      "const": "ai"
    }
  },
  "required": [
    "textRef",
    "locale",
    "message",
    "allowEmpty",
    "workflowStatus",
    "basedOnSourceFingerprint"
  ],
  "additionalProperties": false,
  "title": "Translation"
}

TypedValue

필드유형 / 필수의미 / 규칙
[oneOf 2].type"reference" · 필수자료형 구분 값입니다. 허용 값은 상위 스키마에 따라 달라집니다.
[oneOf 2].entityTypeEntityType · 필수엔티티 참조에 사용하는 카탈로그 유형입니다.
[oneOf 2].valueId · 필수리터럴 값입니다. 선언된 자료형과 일치해야 합니다.
Schema · TypedValue
{
  "oneOf": [
    {
      "$ref": "#/$defs/ScalarValue"
    },
    {
      "type": "object",
      "properties": {
        "type": {
          "const": "reference"
        },
        "entityType": {
          "$ref": "#/$defs/EntityType"
        },
        "value": {
          "$ref": "#/$defs/Id"
        }
      },
      "required": [
        "type",
        "entityType",
        "value"
      ],
      "additionalProperties": false
    }
  ],
  "title": "TypedValue"
}

ValueType

필드유형 / 필수의미 / 규칙
[oneOf 2].kind"reference" · 필수유효한 변형을 선택하는 구분 값입니다.
[oneOf 2].entityTypeEntityType · 필수엔티티 참조에 사용하는 카탈로그 유형입니다.
Schema · ValueType
{
  "oneOf": [
    {
      "$ref": "#/$defs/ScalarType"
    },
    {
      "type": "object",
      "properties": {
        "kind": {
          "const": "reference"
        },
        "entityType": {
          "$ref": "#/$defs/EntityType"
        }
      },
      "required": [
        "kind",
        "entityType"
      ],
      "additionalProperties": false
    }
  ],
  "title": "ValueType"
}