Руководство 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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
mediaType | string · обязательно | MIME-тип медиаданных. |
relativePath | RelativePath · обязательно | Проверенный относительный путь к ресурсу; нельзя использовать его как путь файловой системы без проверки. |
contentHash | Hash · обязательно | SHA-256 содержимого указанного медиафайла. |
displayName | string · обязательно | Понятное человеку отображаемое название ресурса. |
licenseNote | string | Примечание о лицензии ресурса; автоматическая юридическая проверка не выполняется. |
width | integer | Структуру и допустимые значения см. в типе и схеме.
{"minimum":0,"maximum":2147483647} |
height | integer | Структуру и допустимые значения см. в типе и схеме.
{"minimum":0,"maximum":2147483647} |
byteSize | integer | Структуру и допустимые значения см. в типе и схеме.
{"minimum":0,"maximum":2147483647} |
originalName | string | Структуру и допустимые значения см. в типе и схеме. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
key | Key · обязательно | Стабильный читаемый ключ; идентификаторы остаются техническими ссылками. |
nameTextRef | Id · обязательно | Текстовый идентификатор для локализованного имени. |
color | string · обязательно | Цвет отображения персонажа, а не логическое значение.
{"pattern":"^#[0-9a-fA-F]{6}$"} |
defaultPortraitRef | Id | Ресурс стандартного портрета персонажа; не включается в универсальный экспорт. |
emotions | object · обязательно | 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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
key | Key · обязательно | Стабильный читаемый ключ; идентификаторы остаются техническими ссылками. |
category | string · обязательно | Категория каталога для организации определения. |
inputs | Array<ParameterDefinition> · обязательно | Именованные типизированные входные параметры сигнатуры. |
outcomes | Array<OutcomeDefinition> · обязательно | Именованные исходы команды и их контракты или привязки.
{"minItems":1} |
description | string | Авторское описание, а не исполняемая инструкция. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
key | Key · обязательно | Стабильный читаемый ключ; идентификаторы остаются техническими ссылками. |
nameTextRef | Id · обязательно | Текстовый идентификатор для локализованного имени. |
descriptionTextRef | Id | Текстовый идентификатор для локализованного описания. |
iconAssetRef | Id | 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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
key | Key · обязательно | Стабильный читаемый ключ; идентификаторы остаются техническими ссылками. |
nameTextRef | Id · обязательно | Текстовый идентификатор для локализованного имени. |
descriptionTextRef | Id | Текстовый идентификатор для локализованного описания. |
previewAssetRef | Id | 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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
key | Key · обязательно | Стабильный читаемый ключ; идентификаторы остаются техническими ссылками. |
nameTextRef | Id | Текстовый идентификатор для локализованного имени. |
commandRef | 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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
key | Key · обязательно | Стабильный читаемый ключ; идентификаторы остаются техническими ссылками. |
titleTextRef | Id · обязательно | Текстовый идентификатор локализованного заголовка. |
descriptionTextRef | Id | Текстовый идентификатор для локализованного описания. |
objectiveDefinitions | Array<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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
key | Key | Стабильный читаемый ключ; идентификаторы остаются техническими ссылками. |
category | string · обязательно | Категория каталога для организации определения. |
sourceMessage | Сообщение · обязательно | Исходное сообщение из текстовых сегментов и подстановочных полей. |
placeholders | object · обязательно | Ключ подстановочного поля → определение типа и формата.
{"additionalProperties":{"$ref":"#/$defs/PlaceholderDefinition"}} |
placeholders[key] | PlaceholderDefinition | Структуру и допустимые значения см. в типе и схеме. |
externalUse | boolean · обязательно | Помечает текст, используемый вне графа узлов. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
key | Key · обязательно | Стабильный читаемый ключ; идентификаторы остаются техническими ссылками. |
valueType | ScalarType · обязательно | Контракт ожидаемого значения, включая допустимые типы сущностей. |
defaultValue | ScalarValue · обязательно | Типизированное начальное значение или значение по умолчанию. |
description | string | Авторское описание, а не исполняемая инструкция. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
portraitRef | Id | Ресурс портрета для эмоции; не включается в универсальный экспорт. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
flowRef | Id · обязательно | ID сцены или подыстории. |
entryRef | Id · обязательно | ID точки входа внутри указанного сценария. |
Schema · EntryRef
{
"type": "object",
"properties": {
"flowRef": {
"$ref": "#/$defs/Id"
},
"entryRef": {
"$ref": "#/$defs/Id"
}
},
"required": [
"flowRef",
"entryRef"
],
"additionalProperties": false,
"title": "EntryRef"
}
ExecutableChoiceOption
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
text | ExecutableTextUse · обязательно | Для текстовых сегментов: буквальный текст. Для использования текста: textRef и bindings. |
condition | ExecutableCondition | Условие, проверяемое перед ветвлением или включением варианта ответа. |
effects | Array<ExecutableEffect> · обязательно | Изменения состояния, применяемые узлом действия в заданном порядке. |
continuation | ExecutableContinuation · обязательно | Продолжение после завершения узла. |
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].left | ExecutableOperand · обязательно | Типизированный левый операнд сравнения. |
[oneOf 1].operator | "eq" | "ne" | "lt" | "lte" | "gt" | "gte" · обязательно | Оператор сравнения или логический оператор; допустимые значения приведены в вариантах. |
[oneOf 1].right | ExecutableOperand · обязательно | Типизированный правый операнд сравнения. |
[oneOf 2].kind | "all" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 2].children | Array<ExecutableCondition> · обязательно | Дочерние условия составного выражения. |
[oneOf 3].kind | "any" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 3].children | Array<ExecutableCondition> · обязательно | Дочерние условия составного выражения. |
[oneOf 4].kind | "not" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 4].child | ExecutableCondition · обязательно | Дочернее условие унарного оператора. |
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].nodeRef | Id · обязательно | 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].variableRef | Id · обязательно | Идентификатор переменной для чтения или записи. |
[oneOf 1].value | ExecutableOperand · обязательно | Константа; её тип должен совпадать с объявленным. |
[oneOf 2].kind | "add" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 2].variableRef | Id · обязательно | Идентификатор переменной для чтения или записи. |
[oneOf 2].value | ExecutableOperand · обязательно | Константа; её тип должен совпадать с объявленным. |
[oneOf 3].kind | "subtract" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 3].variableRef | Id · обязательно | Идентификатор переменной для чтения или записи. |
[oneOf 3].value | ExecutableOperand · обязательно | Константа; её тип должен совпадать с объявленным. |
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].continuation | ExecutableContinuation · обязательно | Продолжение после завершения узла. |
[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].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 1].flowRef | Id · обязательно | ID сцены или подыстории. |
[oneOf 1].kind | "dialogue" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 1].text | ExecutableTextUse · обязательно | Для текстовых сегментов: буквальный текст. Для использования текста: textRef и bindings. |
[oneOf 1].speakerRef | Id | ID говорящего персонажа; отсутствие означает, что персонаж не назначен. |
[oneOf 1].emotionRef | Id | Эмоция персонажа, выбранная для этого диалога. |
[oneOf 1].continuation | ExecutableContinuation · обязательно | Продолжение после завершения узла. |
[oneOf 2].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 2].flowRef | Id · обязательно | ID сцены или подыстории. |
[oneOf 2].kind | "choice" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 2].optionOrder | Array<Id> · обязательно | ID вариантов ответа в порядке отображения. |
[oneOf 2].options | object · обязательно | ID варианта → вариант с текстом, условием и продолжением.
{"additionalProperties":{"$ref":"#/$defs/ExecutableChoiceOption"}} |
[oneOf 2].options[key] | ExecutableChoiceOption | Структуру и допустимые значения см. в типе и схеме. |
[oneOf 2].whenEmpty | ExecutableEmptyChoice · обязательно | Поведение при отсутствии доступных вариантов ответа. |
[oneOf 3].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 3].flowRef | Id · обязательно | ID сцены или подыстории. |
[oneOf 3].kind | "branch" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 3].condition | ExecutableCondition · обязательно | Условие, проверяемое перед ветвлением или включением варианта ответа. |
[oneOf 3].whenTrue | ExecutableContinuation · обязательно | Продолжение, когда условие истинно. |
[oneOf 3].whenFalse | ExecutableContinuation · обязательно | Продолжение, когда условие ложное. |
[oneOf 4].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 4].flowRef | Id · обязательно | ID сцены или подыстории. |
[oneOf 4].kind | "action" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 4].effects | Array<ExecutableEffect> · обязательно | Изменения состояния, применяемые узлом действия в заданном порядке. |
[oneOf 4].continuation | ExecutableContinuation · обязательно | Продолжение после завершения узла. |
[oneOf 5].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 5].flowRef | Id · обязательно | ID сцены или подыстории. |
[oneOf 5].kind | "command" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 5].commandRef | Id · обязательно | Идентификатор команды игры для выполнения. |
[oneOf 5].arguments | object · обязательно | Значения именованных аргументов, передаваемые вызову.
{"additionalProperties":{"$ref":"#/$defs/ExecutableOperand"}} |
[oneOf 5].arguments[key] | ExecutableOperand | Структуру и допустимые значения см. в типе и схеме. |
[oneOf 5].outcomes | object · обязательно | Именованные исходы команды и их контракты или привязки.
{"additionalProperties":{"$ref":"#/$defs/ExecutableOutcomeBinding"}} |
[oneOf 5].outcomes[key] | ExecutableOutcomeBinding | Структуру и допустимые значения см. в типе и схеме. |
[oneOf 6].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 6].flowRef | Id · обязательно | ID сцены или подыстории. |
[oneOf 6].kind | "jump" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 6].target | EntryRef · обязательно | Типизированная ссылка на цель, например переменную или точку входа; точная структура указана в соответствующем варианте. |
[oneOf 7].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 7].flowRef | Id · обязательно | ID сцены или подыстории. |
[oneOf 7].kind | "end" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 8].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 8].flowRef | Id · обязательно | ID сцены или подыстории. |
[oneOf 8].kind | "call" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 8].target | EntryRef · обязательно | Типизированная ссылка на цель, например переменную или точку входа; точная структура указана в соответствующем варианте. |
[oneOf 8].continuation | ExecutableContinuation · обязательно | Продолжение после завершения узла. |
[oneOf 9].id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
[oneOf 9].flowRef | Id · обязательно | 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].value | TypedValue · обязательно | Константа; её тип должен совпадать с объявленным. |
[oneOf 2].kind | "variable" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
[oneOf 2].variableRef | 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
| Поле | Тип / обязательность | Значение / правила |
|---|
resultBindings | object · обязательно | Имя результата команды → переменная назначения для возвращаемого значения.
{"additionalProperties":{"$ref":"#/$defs/Id"}} |
resultBindings[key] | Id | Структуру и допустимые значения см. в типе и схеме. |
continuation | ExecutableContinuation · обязательно | Продолжение после завершения узла. |
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" · обязательно | Идентификатор точного формата для этого контейнера данных. |
containerVersion | 1 · обязательно | Целочисленная версия контейнера истории; сейчас 1. |
storyBuildId | Hash · обязательно | SHA-256 канонических данных исполнения; изменения только содержания не изменяют его. |
execution | ExecutionContract · обязательно | Типизированный контракт исполнения. |
content | object · обязательно | Языковые и каталожные данные отделены от исполнения.
{"additionalProperties":false} |
content.sourceLocale | Locale · обязательно | Исходный язык текстов; используется также при отсутствии перевода. |
content.locales | Array<Locale> · обязательно | Заявленные языки экспорта, включая исходный.
{"minItems":1} |
content.fallbackPolicy | FallbackPolicy · обязательно | Сейчас source: при отсутствии перевода используется оригинал. |
content.texts | object · обязательно | ID текста → исходное сообщение, подстановочные поля и метаданные.
{"additionalProperties":{"$ref":"#/$defs/ContentTextEntry"}} |
content.texts[key] | ContentTextEntry | Структуру и допустимые значения см. в типе и схеме. |
content.translations | object · обязательно | Код языка → 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.characters | object · обязательно | Идентификатор персонажа — персонаж с локализованными именами и эмоциями.
{"additionalProperties":{"$ref":"#/$defs/ContentCharacter"}} |
content.characters[key] | ContentCharacter | Структуру и допустимые значения см. в типе и схеме. |
content.quests | object · обязательно | ID задания → определение задания с целями.
{"additionalProperties":{"$ref":"#/$defs/ContentQuestDefinition"}} |
content.quests[key] | ContentQuestDefinition | Структуру и допустимые значения см. в типе и схеме. |
content.items | object · обязательно | ID предмета → определение предмета.
{"additionalProperties":{"$ref":"#/$defs/ContentItemDefinition"}} |
content.items[key] | ContentItemDefinition | Структуру и допустимые значения см. в типе и схеме. |
content.locations | object · обязательно | Идентификатор местоположения — определение местоположения.
{"additionalProperties":{"$ref":"#/$defs/ContentLocationDefinition"}} |
content.locations[key] | ContentLocationDefinition | Структуру и допустимые значения см. в типе и схеме. |
content.minigames | object · обязательно | ID мини-игры → определение; игровой процесс реализует сама игра.
{"additionalProperties":{"$ref":"#/$defs/ContentMinigameDefinition"}} |
content.minigames[key] | ContentMinigameDefinition | Структуру и допустимые значения см. в типе и схеме. |
content.assets | object · обязательно | ID ресурса → определение медиа; универсальный экспорт пока не содержит разрешённых ресурсов движка.
{"additionalProperties":{"$ref":"#/$defs/ContentAsset"}} |
content.assets[key] | ContentAsset | Структуру и допустимые значения см. в типе и схеме. |
content.variableDefinitions | object · обязательно | Определения переменных, заданные автором, с именами и ссылками на текст.
{"additionalProperties":{"$ref":"#/$defs/ContentVariableDefinition"}} |
content.variableDefinitions[key] | ContentVariableDefinition | Структуру и допустимые значения см. в типе и схеме. |
content.commandDefinitions | object · обязательно | Авторские определения команд, включая текстовые ссылки.
{"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
| Поле | Тип / обязательность | Значение / правила |
|---|
textRef | Id · обязательно | Ссылка на content.texts и его текстовый контракт. |
bindings | object · обязательно | Имя подстановочного поля или параметра → типизированный операнд.
{"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" · обязательно | Идентификатор точного формата для этого контейнера данных. |
contractVersion | RuntimeVersion · обязательно | Версия совместимости исполнения: основной и дополнительный номера. |
projectId | Id · обязательно | Стабильный идентификатор исходного проекта. |
requiredCapabilities | Array<Capability> · обязательно | Возможности, которые полноценный адаптер исполнения обязан проверить перед запуском. |
limits | object · обязательно | Пределы автоматического исполнения и рекурсии.
{"additionalProperties":false} |
limits.maxAutomaticTransitions | 1000 · обязательно | Максимальное число автоматических переходов без ввода пользователя. |
limits.maxConditionDepth | 32 · обязательно | Максимальная глубина вложенности условий. |
limits.maxConditionTerms | 1024 · обязательно | Максимальное число элементов условия. |
limits.maxCallDepth | 32 · обязательно | Максимальная глубина вложенных вызовов подысторий. |
entries | object · обязательно | ID точки входа → ссылки на сценарий и узел.
{"additionalProperties":{"$ref":"#/$defs/RuntimeEntry"}} |
entries[key] | RuntimeEntry | Структуру и допустимые значения см. в типе и схеме. |
nodes | object · обязательно | ID узла → исполняемый узел; kind определяет его поля.
{"additionalProperties":{"$ref":"#/$defs/ExecutableNode"}} |
nodes[key] | ExecutableNode | Структуру и допустимые значения см. в типе и схеме. |
variables | object · обязательно | ID переменной → типизированное определение переменной времени выполнения.
{"additionalProperties":{"$ref":"#/$defs/RuntimeVariable"}} |
variables[key] | RuntimeVariable | Структуру и допустимые значения см. в типе и схеме. |
commands | object · обязательно | ID команды → типизированная сигнатура времени выполнения.
{"additionalProperties":{"$ref":"#/$defs/RuntimeSignature"}} |
commands[key] | RuntimeSignature | Структуру и допустимые значения см. в типе и схеме. |
textContracts | object · обязательно | 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" · обязательно | Поле-дискриминатор, выбирающее допустимый вариант структуры. |
segments | Array<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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
results | Array<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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
valueType | ValueType · обязательно | Контракт ожидаемого значения, включая допустимые типы сущностей. |
defaultValue | TypedValue | Типизированное начальное значение или значение по умолчанию. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
displayName | string · обязательно | Понятное человеку отображаемое название ресурса. |
valueType | ScalarType · обязательно | Контракт ожидаемого значения, включая допустимые типы сущностей. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
labelTextRef | Id · обязательно | ID текста локализованной подписи. |
descriptionTextRef | 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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
name | string · обязательно | Название, заданное автором; не используйте его как ключ ссылки. |
valueType | ValueType · обязательно | Контракт ожидаемого значения, включая допустимые типы сущностей. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
flowRef | Id · обязательно | ID сцены или подыстории. |
nodeRef | Id · обязательно | 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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
inputs | Array<object> · обязательно | Именованные типизированные входные параметры сигнатуры. |
outcomes | Array<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
| Поле | Тип / обязательность | Значение / правила |
|---|
id | Id · обязательно | Стабильный ID; отображаемые названия не являются ключами. |
valueType | ScalarType · обязательно | Контракт ожидаемого значения, включая допустимые типы сущностей. |
defaultValue | ScalarValue · обязательно | Типизированное начальное значение или значение по умолчанию. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
major | 1 · обязательно | Несовместимая основная версия; отклонить неподдерживаемые версии. |
minor | 1 · обязательно | Версия расширения в пределах основной версии. |
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].value | boolean · обязательно | Константа; её тип должен совпадать с объявленным. |
[oneOf 2].type | "integer" · обязательно | Дискриминатор типа; допустимые значения зависят от содержащей его схемы. |
[oneOf 2].value | integer · обязательно | Константа; её тип должен совпадать с объявленным.
{"minimum":-2147483648,"maximum":2147483647} |
[oneOf 3].type | "string" · обязательно | Дискриминатор типа; допустимые значения зависят от содержащей его схемы. |
[oneOf 3].value | string · обязательно | Константа; её тип должен совпадать с объявленным. |
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
| Поле | Тип / обязательность | Значение / правила |
|---|
textRef | Id · обязательно | Ссылка на content.texts и его текстовый контракт. |
locale | Locale · обязательно | Код языка этой записи перевода. |
message | Сообщение · обязательно | Переведённое сообщение, соблюдающее контракт подстановочных полей. |
allowEmpty | boolean · обязательно | Разрешить намеренно пустой перевод. |
workflowStatus | "draft" | "translated" | "reviewed" · обязательно | Статус рабочего процесса перевода, а не ветка времени выполнения. |
basedOnSourceFingerprint | Hash · обязательно | Исходная основа перевода; несовпадение означает, что перевод устарел. |
reviewedContextFingerprint | Hash | Отпечаток контекста на момент проверки перевода. |
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].entityType | EntityType · обязательно | Тип каталога для ссылки на сущность. |
[oneOf 2].value | Id · обязательно | Константа; её тип должен совпадать с объявленным. |
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].entityType | EntityType · обязательно | Тип каталога для ссылки на сущность. |
Schema · ValueType
{
"oneOf": [
{
"$ref": "#/$defs/ScalarType"
},
{
"type": "object",
"properties": {
"kind": {
"const": "reference"
},
"entityType": {
"$ref": "#/$defs/EntityType"
}
},
"required": [
"kind",
"entityType"
],
"additionalProperties": false
}
],
"title": "ValueType"
}