Manuel VNLE
Référence des champs JSON
Exécution et contenu
format et containerVersion identifient le conteneur. execution contient les entrées et les nœuds ; content contient les textes, traductions et catalogues. Les UUID relient les tables : n’utilisez pas les noms affichés comme références. JSON n’autorise pas les commentaires ; les explications sont donc séparées pour garder un exemple valide.
// 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
Changement de langue et traductions manquantes
Stockez la langue séparément du nœud courant. Au changement, résolvez à nouveau le même textRef : utilisez la traduction de locale si elle existe, sinon sourceMessage. Une table de langue absente signifie que les traductions manquent. allowEmpty autorise un texte volontairement vide. Formatez les paramètres de substitution selon leur type, sans convertir le JSON lui-même en texte. L’empreinte du texte source permet de détecter une traduction obsolète ; workflowStatus seul ne suffit pas.
Vous trouverez ci-dessous toutes les définitions accessibles depuis le schéma actuel de l’export, avec leurs propriétés, variantes et contraintes. Schema révèle aussi les règles imbriquées. Les champs supplémentaires sont refusés lorsque additionalProperties vaut false.
JSON Schema · Draft 2020-12
Capability
| Champ | Type / obligatoire | Signification / règles |
|---|
Schema · Capability
{
"type": "string",
"pattern": "^[a-z][a-z0-9.-]*$",
"title": "Capability"
}
ContentAsset
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
mediaType | string · obligatoire | Type MIME du contenu multimédia. |
relativePath | RelativePath · obligatoire | Chemin relatif de ressource validé ; ne l’utilisez jamais comme chemin du système de fichiers sans vérification. |
contentHash | Hash · obligatoire | SHA-256 des octets des médias référencés. |
displayName | string · obligatoire | Nom lisible de la ressource. |
licenseNote | string | Note de licence de la ressource ; elle ne constitue pas une vérification juridique. |
width | integer | Consultez le type et le schéma pour connaître la structure et les valeurs valides.
{"minimum":0,"maximum":2147483647} |
height | integer | Consultez le type et le schéma pour connaître la structure et les valeurs valides.
{"minimum":0,"maximum":2147483647} |
byteSize | integer | Consultez le type et le schéma pour connaître la structure et les valeurs valides.
{"minimum":0,"maximum":2147483647} |
originalName | string | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
key | Key · obligatoire | Clé lisible stable ; les ID restent les références techniques. |
nameTextRef | Id · obligatoire | ID texte pour le nom localisé. |
color | string · obligatoire | Couleur d’affichage du personnage ; ce n’est pas une valeur de logique du jeu.
{"pattern":"^#[0-9a-fA-F]{6}$"} |
defaultPortraitRef | Id | Ressource du portrait par défaut du personnage ; absente de l’export générique. |
emotions | object · obligatoire | Identifiant d’émotion → définition de l’émotion.
{"additionalProperties":{"$ref":"#/$defs/Emotion"}} |
emotions[key] | Emotion | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
key | Key · obligatoire | Clé lisible stable ; les ID restent les références techniques. |
category | string · obligatoire | Catégorie de catalogue utilisée pour organiser la définition. |
inputs | Array<ParameterDefinition> · obligatoire | Entrées nommées et typées de la signature. |
outcomes | Array<OutcomeDefinition> · obligatoire | Issues possibles de la commande, avec leur nom, leur contrat de données et leurs associations.
{"minItems":1} |
description | string | Description écrite; pas une instruction exécutable. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
key | Key · obligatoire | Clé lisible stable ; les ID restent les références techniques. |
nameTextRef | Id · obligatoire | ID texte pour le nom localisé. |
descriptionTextRef | Id | ID texte pour la description localisée. |
iconAssetRef | Id | Identifiant de ressource pour une icône de catalogue. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
key | Key · obligatoire | Clé lisible stable ; les ID restent les références techniques. |
nameTextRef | Id · obligatoire | ID texte pour le nom localisé. |
descriptionTextRef | Id | ID texte pour la description localisée. |
previewAssetRef | Id | Identifiant de ressource pour un aperçu. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
key | Key · obligatoire | Clé lisible stable ; les ID restent les références techniques. |
nameTextRef | Id | ID texte pour le nom localisé. |
commandRef | Id · obligatoire | ID de la commande de jeu à exécuter. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
key | Key · obligatoire | Clé lisible stable ; les ID restent les références techniques. |
titleTextRef | Id · obligatoire | ID texte d'un titre localisé. |
descriptionTextRef | Id | ID texte pour la description localisée. |
objectiveDefinitions | Array<QuestObjective> · obligatoire | Identifiant d’objectif de quête → définition de l’objectif. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
key | Key | Clé lisible stable ; les ID restent les références techniques. |
category | string · obligatoire | Catégorie de catalogue utilisée pour organiser la définition. |
sourceMessage | Message · obligatoire | Message source composé de segments de texte et de paramètres de substitution. |
placeholders | object · obligatoire | Clé du paramètre de substitution → définition de son type et de son format.
{"additionalProperties":{"$ref":"#/$defs/PlaceholderDefinition"}} |
placeholders[key] | PlaceholderDefinition | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
externalUse | boolean · obligatoire | Indique un texte utilisé en dehors du graphe de nœuds. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
key | Key · obligatoire | Clé lisible stable ; les ID restent les références techniques. |
valueType | ScalarType · obligatoire | Contrat de la valeur attendue, y compris les types d’entités possibles. |
defaultValue | ScalarValue · obligatoire | Valeur initiale ou par défaut typée. |
description | string | Description écrite; pas une instruction exécutable. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
portraitRef | Id | Ressource du portrait pour cette émotion ; absente de l’export générique. |
Schema · Emotion
{
"type": "object",
"properties": {
"id": {
"$ref": "#/$defs/Id"
},
"name": {
"type": "string"
},
"portraitRef": {
"$ref": "#/$defs/Id"
}
},
"required": [
"id",
"name"
],
"additionalProperties": false,
"title": "Emotion"
}
EntityType
| Champ | Type / obligatoire | Signification / règles |
|---|
Schema · EntityType
{
"type": "string",
"enum": [
"item",
"quest",
"location",
"minigame",
"asset"
],
"title": "EntityType"
}
EntryRef
| Champ | Type / obligatoire | Signification / règles |
|---|
flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
entryRef | Id · obligatoire | ID d'entrée à l'intérieur du flux spécifié. |
Schema · EntryRef
{
"type": "object",
"properties": {
"flowRef": {
"$ref": "#/$defs/Id"
},
"entryRef": {
"$ref": "#/$defs/Id"
}
},
"required": [
"flowRef",
"entryRef"
],
"additionalProperties": false,
"title": "EntryRef"
}
ExecutableChoiceOption
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
text | ExecutableTextUse · obligatoire | Pour un segment de texte : contenu littéral. Pour une utilisation de texte : textRef et bindings. |
condition | ExecutableCondition | Condition évaluée avant un embranchement ou l’activation d’une option. |
effects | Array<ExecutableEffect> · obligatoire | Effets sur l’état, exécutés dans l’ordre pour ce nœud d’action. |
continuation | ExecutableContinuation · obligatoire | Continuation après la fin du nœud. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 1].kind | "compare" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 1].left | ExecutableOperand · obligatoire | Opérande gauche typé de la comparaison. |
[oneOf 1].operator | "eq" | "ne" | "lt" | "lte" | "gt" | "gte" · obligatoire | Opérateur de comparaison/logique; les valeurs autorisées apparaissent dans les variantes. |
[oneOf 1].right | ExecutableOperand · obligatoire | Opérande droit typé de la comparaison. |
[oneOf 2].kind | "all" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 2].children | Array<ExecutableCondition> · obligatoire | Conditions enfants d’une expression composée. |
[oneOf 3].kind | "any" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 3].children | Array<ExecutableCondition> · obligatoire | Conditions enfants d’une expression composée. |
[oneOf 4].kind | "not" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 4].child | ExecutableCondition · obligatoire | Condition enfant de l’opérateur unaire. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 1].kind | "node" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 1].nodeRef | Id · obligatoire | Identifiant du prochain nœud exécutable. |
[oneOf 2].kind | "end" · obligatoire | Discriminateur choisissant la variante valide. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 1].kind | "set" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 1].variableRef | Id · obligatoire | ID de la variable à lire ou à écrire. |
[oneOf 1].value | ExecutableOperand · obligatoire | Valeur littérale ; elle doit correspondre au type déclaré. |
[oneOf 2].kind | "add" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 2].variableRef | Id · obligatoire | ID de la variable à lire ou à écrire. |
[oneOf 2].value | ExecutableOperand · obligatoire | Valeur littérale ; elle doit correspondre au type déclaré. |
[oneOf 3].kind | "subtract" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 3].variableRef | Id · obligatoire | ID de la variable à lire ou à écrire. |
[oneOf 3].value | ExecutableOperand · obligatoire | Valeur littérale ; elle doit correspondre au type déclaré. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 1].kind | "continue" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 1].continuation | ExecutableContinuation · obligatoire | Continuation après la fin du nœud. |
[oneOf 2].kind | "fault" · obligatoire | Discriminateur choisissant la variante valide. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 1].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 1].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 1].kind | "dialogue" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 1].text | ExecutableTextUse · obligatoire | Pour un segment de texte : contenu littéral. Pour une utilisation de texte : textRef et bindings. |
[oneOf 1].speakerRef | Id | Identifiant du personnage qui parle ; son absence signifie qu’il n’y a pas de locuteur. |
[oneOf 1].emotionRef | Id | Émotion du personnage pour cette réplique. |
[oneOf 1].continuation | ExecutableContinuation · obligatoire | Continuation après la fin du nœud. |
[oneOf 2].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 2].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 2].kind | "choice" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 2].optionOrder | Array<Id> · obligatoire | Identifiants des options dans leur ordre d’affichage. |
[oneOf 2].options | object · obligatoire | Identifiant d’option → option avec texte, condition et suite.
{"additionalProperties":{"$ref":"#/$defs/ExecutableChoiceOption"}} |
[oneOf 2].options[key] | ExecutableChoiceOption | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
[oneOf 2].whenEmpty | ExecutableEmptyChoice · obligatoire | Comportement quand aucune option n'est disponible. |
[oneOf 3].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 3].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 3].kind | "branch" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 3].condition | ExecutableCondition · obligatoire | Condition évaluée avant un embranchement ou l’activation d’une option. |
[oneOf 3].whenTrue | ExecutableContinuation · obligatoire | Suite à suivre si la condition est vraie. |
[oneOf 3].whenFalse | ExecutableContinuation · obligatoire | Suite à suivre si la condition est fausse. |
[oneOf 4].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 4].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 4].kind | "action" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 4].effects | Array<ExecutableEffect> · obligatoire | Effets sur l’état, exécutés dans l’ordre pour ce nœud d’action. |
[oneOf 4].continuation | ExecutableContinuation · obligatoire | Continuation après la fin du nœud. |
[oneOf 5].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 5].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 5].kind | "command" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 5].commandRef | Id · obligatoire | ID de la commande de jeu à exécuter. |
[oneOf 5].arguments | object · obligatoire | Valeurs des arguments nommés transmises à l’appel.
{"additionalProperties":{"$ref":"#/$defs/ExecutableOperand"}} |
[oneOf 5].arguments[key] | ExecutableOperand | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
[oneOf 5].outcomes | object · obligatoire | Issues possibles de la commande, avec leur nom, leur contrat de données et leurs associations.
{"additionalProperties":{"$ref":"#/$defs/ExecutableOutcomeBinding"}} |
[oneOf 5].outcomes[key] | ExecutableOutcomeBinding | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
[oneOf 6].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 6].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 6].kind | "jump" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 6].target | EntryRef · obligatoire | Référence cible typée, par exemple une variable ou une entrée ; consultez la variante pour connaître sa structure exacte. |
[oneOf 7].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 7].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 7].kind | "end" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 8].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 8].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 8].kind | "call" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 8].target | EntryRef · obligatoire | Référence cible typée, par exemple une variable ou une entrée ; consultez la variante pour connaître sa structure exacte. |
[oneOf 8].continuation | ExecutableContinuation · obligatoire | Continuation après la fin du nœud. |
[oneOf 9].id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
[oneOf 9].flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
[oneOf 9].kind | "return" · obligatoire | Discriminateur choisissant la variante valide. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 1].kind | "literal" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 1].value | TypedValue · obligatoire | Valeur littérale ; elle doit correspondre au type déclaré. |
[oneOf 2].kind | "variable" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 2].variableRef | Id · obligatoire | ID de la variable à lire ou à écrire. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
resultBindings | object · obligatoire | Nom du résultat de commande → variable de destination pour la valeur retournée.
{"additionalProperties":{"$ref":"#/$defs/Id"}} |
resultBindings[key] | Id | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
continuation | ExecutableContinuation · obligatoire | Continuation après la fin du nœud. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
format | "vnle.story" · obligatoire | Identificateur de format exact pour ce conteneur de données. |
containerVersion | 1 · obligatoire | Version entière du conteneur de l’histoire ; actuellement 1. |
storyBuildId | Hash · obligatoire | SHA-256 de données d'exécution canonique ; les modifications de contenu seulement ne le changent pas. |
execution | ExecutionContract · obligatoire | Contrat d’exécution typé. |
content | object · obligatoire | Données de langue et de catalogue séparées de l’exécution.
{"additionalProperties":false} |
content.sourceLocale | Locale · obligatoire | Langue des textes sources, utilisée comme langue de repli. |
content.locales | Array<Locale> · obligatoire | Langues déclarées, y compris la langue source.
{"minItems":1} |
content.fallbackPolicy | FallbackPolicy · obligatoire | Actuellement source: les traductions manquantes utilisent le texte source. |
content.texts | object · obligatoire | Identifiant de texte → message source, paramètres de substitution et métadonnées.
{"additionalProperties":{"$ref":"#/$defs/ContentTextEntry"}} |
content.texts[key] | ContentTextEntry | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.translations | object · obligatoire | Langue → identifiant de texte → traduction ; si une entrée manque, le texte source est utilisé.
{"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 | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.characters | object · obligatoire | Identifiant de personnage → personnage avec ses noms localisés et ses émotions.
{"additionalProperties":{"$ref":"#/$defs/ContentCharacter"}} |
content.characters[key] | ContentCharacter | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.quests | object · obligatoire | Identifiant de quête → définition de la quête et de ses objectifs.
{"additionalProperties":{"$ref":"#/$defs/ContentQuestDefinition"}} |
content.quests[key] | ContentQuestDefinition | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.items | object · obligatoire | Identifiant d’objet → définition de l’objet.
{"additionalProperties":{"$ref":"#/$defs/ContentItemDefinition"}} |
content.items[key] | ContentItemDefinition | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.locations | object · obligatoire | Identifiant de lieu → définition du lieu.
{"additionalProperties":{"$ref":"#/$defs/ContentLocationDefinition"}} |
content.locations[key] | ContentLocationDefinition | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.minigames | object · obligatoire | Identifiant de mini-jeu → définition du mini-jeu ; le jeu appelant assure son exécution.
{"additionalProperties":{"$ref":"#/$defs/ContentMinigameDefinition"}} |
content.minigames[key] | ContentMinigameDefinition | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.assets | object · obligatoire | Identifiant de ressource → définition du média ; l’export générique ne fournit actuellement aucune ressource déjà résolue pour un moteur.
{"additionalProperties":{"$ref":"#/$defs/ContentAsset"}} |
content.assets[key] | ContentAsset | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.variableDefinitions | object · obligatoire | Définitions des variables créées par l’auteur, avec leurs noms et références de texte.
{"additionalProperties":{"$ref":"#/$defs/ContentVariableDefinition"}} |
content.variableDefinitions[key] | ContentVariableDefinition | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
content.commandDefinitions | object · obligatoire | Définitions des commandes créées par l’auteur, y compris leurs références de texte.
{"additionalProperties":{"$ref":"#/$defs/ContentCommandDefinition"}} |
content.commandDefinitions[key] | ContentCommandDefinition | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
textRef | Id · obligatoire | Référence à content.texts et à son contrat de texte. |
bindings | object · obligatoire | Noms des paramètres de substitution → opérandes typés.
{"additionalProperties":{"$ref":"#/$defs/ExecutableOperand"}} |
bindings[key] | ExecutableOperand | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
format | "vnle.execution" · obligatoire | Identificateur de format exact pour ce conteneur de données. |
contractVersion | RuntimeVersion · obligatoire | Version de compatibilité d'exécution : majeure et mineure. |
projectId | Id · obligatoire | Identification stable du projet source. |
requiredCapabilities | Array<Capability> · obligatoire | Fonctionnalités que l’adaptateur d’exécution complet doit vérifier avant le démarrage. |
limits | object · obligatoire | Limites d'exécution et de récursion automatiques.
{"additionalProperties":false} |
limits.maxAutomaticTransitions | 1000 · obligatoire | Transitions automatiques maximales sans entrée utilisateur. |
limits.maxConditionDepth | 32 · obligatoire | Profondeur maximale d’imbrication des conditions. |
limits.maxConditionTerms | 1024 · obligatoire | Nombre maximal de termes dans les conditions. |
limits.maxCallDepth | 32 · obligatoire | Profondeur maximale d’imbrication des appels de sous-histoires. |
entries | object · obligatoire | ID d'entrée → référence de flux et de nœud.
{"additionalProperties":{"$ref":"#/$defs/RuntimeEntry"}} |
entries[key] | RuntimeEntry | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
nodes | object · obligatoire | Identifiant de nœud → nœud exécutable ; kind détermine ses champs.
{"additionalProperties":{"$ref":"#/$defs/ExecutableNode"}} |
nodes[key] | ExecutableNode | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
variables | object · obligatoire | Identifiant de variable → définition typée de la variable d’exécution.
{"additionalProperties":{"$ref":"#/$defs/RuntimeVariable"}} |
variables[key] | RuntimeVariable | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
commands | object · obligatoire | Identifiant de commande → signature d’exécution typée.
{"additionalProperties":{"$ref":"#/$defs/RuntimeSignature"}} |
commands[key] | RuntimeSignature | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
textContracts | object · obligatoire | Identifiant de texte → contrats des paramètres de substitution requis par l’exécution.
{"additionalProperties":{"$ref":"#/$defs/PlaceholderContract"}} |
textContracts[key] | PlaceholderContract | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
Schema · FallbackPolicy
{
"type": "string",
"enum": [
"block",
"source"
],
"title": "FallbackPolicy"
}
Hash
| Champ | Type / obligatoire | Signification / règles |
|---|
Schema · Hash
{
"type": "string",
"pattern": "^sha256:[0-9a-f]{64}$",
"title": "Hash"
}
Id
| Champ | Type / obligatoire | Signification / règles |
|---|
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
| Champ | Type / obligatoire | Signification / règles |
|---|
Schema · Key
{
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,127}$",
"title": "Key"
}
Locale
| Champ | Type / obligatoire | Signification / règles |
|---|
Schema · Locale
{
"type": "string",
"pattern": "^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$",
"title": "Locale"
}
Message
| Champ | Type / obligatoire | Signification / règles |
|---|
kind | "segments" · obligatoire | Discriminateur choisissant la variante valide. |
segments | Array<object | object> · obligatoire | Segments de texte et de paramètres de substitution du message, dans leur ordre. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
results | Array<ResultDefinition> · obligatoire | Valeurs de résultat nommées et typées d’une issue. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
valueType | ValueType · obligatoire | Contrat de la valeur attendue, y compris les types d’entités possibles. |
defaultValue | TypedValue | Valeur initiale ou par défaut typée. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
map[key] | ScalarType | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
displayName | string · obligatoire | Nom lisible de la ressource. |
valueType | ScalarType · obligatoire | Contrat de la valeur attendue, y compris les types d’entités possibles. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
labelTextRef | Id · obligatoire | Identifiant du texte du libellé traduit. |
descriptionTextRef | Id | ID texte pour la description localisée. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
Schema · RelativePath
{
"type": "string",
"minLength": 1,
"maxLength": 1024,
"title": "RelativePath"
}
ResultDefinition
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
name | string · obligatoire | Nom saisi par l’auteur ; ne pas utiliser comme clé de référence. |
valueType | ValueType · obligatoire | Contrat de la valeur attendue, y compris les types d’entités possibles. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
flowRef | Id · obligatoire | Identifiant de scène ou de sous-histoire. |
nodeRef | Id · obligatoire | Identifiant du prochain nœud exécutable. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
inputs | Array<object> · obligatoire | Entrées nommées et typées de la signature. |
outcomes | Array<object> · obligatoire | Issues possibles de la commande, avec leur nom, leur contrat de données et leurs associations.
{"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
| Champ | Type / obligatoire | Signification / règles |
|---|
id | Id · obligatoire | Identifiant stable ; les noms affichés ne servent pas de clés. |
valueType | ScalarType · obligatoire | Contrat de la valeur attendue, y compris les types d’entités possibles. |
defaultValue | ScalarValue · obligatoire | Valeur initiale ou par défaut typée. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
major | 1 · obligatoire | Version majeure incompatible; rejeter les versions non prises en charge. |
minor | 1 · obligatoire | Version d'extension dans la version principale. |
Schema · RuntimeVersion
{
"type": "object",
"properties": {
"major": {
"const": 1
},
"minor": {
"const": 1
}
},
"required": [
"major",
"minor"
],
"additionalProperties": false,
"title": "RuntimeVersion"
}
ScalarType
| Champ | Type / obligatoire | Signification / règles |
|---|
Schema · ScalarType
{
"type": "string",
"enum": [
"boolean",
"integer",
"string"
],
"title": "ScalarType"
}
ScalarValue
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 1].type | "boolean" · obligatoire | Discriminant de type ; les valeurs autorisées dépendent du schéma qui l’entoure. |
[oneOf 1].value | boolean · obligatoire | Valeur littérale ; elle doit correspondre au type déclaré. |
[oneOf 2].type | "integer" · obligatoire | Discriminant de type ; les valeurs autorisées dépendent du schéma qui l’entoure. |
[oneOf 2].value | integer · obligatoire | Valeur littérale ; elle doit correspondre au type déclaré.
{"minimum":-2147483648,"maximum":2147483647} |
[oneOf 3].type | "string" · obligatoire | Discriminant de type ; les valeurs autorisées dépendent du schéma qui l’entoure. |
[oneOf 3].value | string · obligatoire | Valeur littérale ; elle doit correspondre au type déclaré. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
textRef | Id · obligatoire | Référence à content.texts et à son contrat de texte. |
locale | Locale · obligatoire | Code de langue de cette traduction. |
message | Message · obligatoire | Message traduit respectant le contrat des paramètres de substitution. |
allowEmpty | boolean · obligatoire | Permettre une traduction intentionnellement vide. |
workflowStatus | "draft" | "translated" | "reviewed" · obligatoire | État du flux de travail de traduction, pas une branche d'exécution. |
basedOnSourceFingerprint | Hash · obligatoire | Version source utilisée pour cette traduction ; une différence indique qu’elle est obsolète. |
reviewedContextFingerprint | Hash | Empreinte contextuelle pour l'état de traduction examiné. |
origin | "ai" | Consultez le type et le schéma pour connaître la structure et les valeurs valides. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 2].type | "reference" · obligatoire | Discriminant de type ; les valeurs autorisées dépendent du schéma qui l’entoure. |
[oneOf 2].entityType | EntityType · obligatoire | Type de catalogue pour une référence d'entité. |
[oneOf 2].value | Id · obligatoire | Valeur littérale ; elle doit correspondre au type déclaré. |
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
| Champ | Type / obligatoire | Signification / règles |
|---|
[oneOf 2].kind | "reference" · obligatoire | Discriminateur choisissant la variante valide. |
[oneOf 2].entityType | EntityType · obligatoire | Type de catalogue pour une référence d'entité. |
Schema · ValueType
{
"oneOf": [
{
"$ref": "#/$defs/ScalarType"
},
{
"type": "object",
"properties": {
"kind": {
"const": "reference"
},
"entityType": {
"$ref": "#/$defs/EntityType"
}
},
"required": [
"kind",
"entityType"
],
"additionalProperties": false
}
],
"title": "ValueType"
}