adaptorex
Version:
Connect all your live interactive storytelling devices and software
601 lines (600 loc) • 22 kB
JSON
{
"settings": {
"type": "object",
"title": "Logic",
"description": "Switch states based on conditions. Install event listeners.",
"additionalProperties": false,
"readonly": true
},
"definitions": {
"next": {
"type": "string",
"title": "Next State",
"format": "adaptorState",
"description": "Goto next state. Close all listeners in this state.",
"isAdaptorContent": false
},
"function": {
"type": "string",
"isAdaptorContent": false,
"enum": []
},
"field": {
"type": "string",
"propertyOrder": 1,
"description": "Define a field inside message with json object. Use 'dot.notation' for nested fields."
},
"value": {
"type": "string",
"required": true,
"propertyOrder": 1
},
"contains": {
"propertyOrder": 2,
"title": "contains any of",
"type": "array",
"minItems": 1,
"format": "table",
"default": [""],
"items": { "type": "string", "title": "contains" }
},
"equals": {
"propertyOrder": 2,
"title": "equals any of",
"type": "array",
"minItems": 1,
"format": "table",
"default": [""],
"items": { "type": "string", "title": "equals" }
},
"lessThan": {
"propertyOrder": 2,
"title": "is less than any of",
"type": "array",
"minItems": 1,
"format": "table",
"default": [""],
"items": {
"type": "string",
"title": "less than",
"isAdaptorContent": false
}
},
"greaterThan": {
"propertyOrder": 2,
"title": "is greater than any of",
"type": "array",
"minItems": 1,
"format": "table",
"default": [""],
"items": {
"type": "string",
"title": "greater than",
"isAdaptorContent": false
}
},
"regex": {
"type": "string",
"content": true,
"required": true
},
"javascript": {
"type": "string",
"isAdaptorContent": false,
"format": "textarea",
"default": "if(value){\n return true\n}"
},
"find": {
"type": "object",
"required": ["collection", "query"],
"additionalProperties": false,
"properties": {
"collection": { "$ref": "#/definitions/collection" },
"query": {
"type": "string",
"format": "textarea",
"isAdaptorContent": false
}
}
}
},
"actions": {
"switch": {
"type": "object",
"title": "Switch",
"description": "Check the state of a variable and switch to the next state if the checked condition is true.",
"documentation": "https://docs.adaptorex.org/basics/actions/logic/switch.html",
"required": ["if"],
"resolveAdaptorVariables": false,
"additionalProperties": false,
"properties": {
"if": {
"title": "if",
"type": "array",
"items": {
"title": "condition",
"oneOf": [
{
"title": "Equals",
"description": "Trigger next if value equals",
"type": "object",
"additionalProperties": false,
"required": ["value", "equals", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"equals": { "$ref": "#/definitions/equals" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Contains",
"description": "Trigger next if value contains",
"type": "object",
"additionalProperties": false,
"required": ["value", "contains", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"contains": { "$ref": "#/definitions/contains" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Less Than",
"description": "Trigger next if value is less",
"type": "object",
"additionalProperties": false,
"required": ["value", "lessThan", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"lessThan": { "$ref": "#/definitions/lessThan" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Greater Than",
"description": "Trigger next if value is greater",
"type": "object",
"additionalProperties": false,
"required": ["value", "greaterThan", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"greaterThan": { "$ref": "#/definitions/greaterThan" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Regular Expression",
"description": "If regular expression returns anything when used on value",
"type": "object",
"additionalProperties": false,
"required": ["value", "regex", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"regex": { "$ref": "#/definitions/regex" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Javascript function",
"description": "If javascript function returns true. Use value as function argument.",
"type": "object",
"additionalProperties": false,
"required": ["javascript", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"javascript": { "$ref": "#/definitions/javascript" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Database Query",
"description": "If value equals value in path of first query document that is returned.",
"type": "object",
"additionalProperties": false,
"required": ["find", "next"],
"properties": {
"find": { "$ref": "#/definitions/find" },
"next": { "$ref": "#/definitions/next" }
}
}
]
}
},
"else": {
"required": ["next"],
"properties": {
"next": { "$ref": "#/definitions/next" }
}
}
}
},
"iterate": {
"title": "Iterate",
"description": "Use next item or element each time this action runs. Allows you to create a for loop iterating arrays, collections, objects and strings",
"documentation": "https://docs.adaptorex.org/basics/actions/logic/iterate.html",
"mode": "run",
"additionalProperties": false,
"resolveAdaptorVariables": false,
"type": "object",
"required": ["with", "variable"],
"default": {
"with": "",
"variable": "element",
"next": "",
"repeat": false,
"reverse": false,
"nextOnDone": ""
},
"properties": {
"with": {
"type": "string",
"description": "Array, Collection or Object to iterate elements of."
},
"variable": {
"type": "string",
"title": "variable name",
"description": "Name of variable that holds the current element"
},
"next": {
"title": "Next Iteration",
"format": "adaptorState",
"type": "string",
"description": "Goto next state with next element in iteration.",
"isAdaptorContent": false
},
"repeat": {
"type": "boolean",
"title": "repeat",
"format": "checkbox",
"description": "If enabled restart with first element if last element was reached in previous iteration. If enabled, Iterate will never end and never dispatch Next On Done."
},
"reverse": {
"type": "boolean",
"title": "reverse order",
"format": "checkbox",
"description": "If enabled iterate in reverse order from last to first element."
},
"onDone": {
"type": "object",
"additionalProperties": false,
"title": "On Done",
"description": "If iteration is done and there are no more elements to iterate over.",
"options": {
"disable_edit_json": true,
"disable_properties": true
},
"properties": {
"next": { "$ref": "#/definitions/next" }
}
}
}
},
"onChange": {
"title": "On Change",
"description": "Listen for changes in Data sets and variables.",
"documentation": "https://docs.adaptorex.org/basics/actions/logic/onChange.html",
"mode": "listen",
"type": "object",
"additionalProperties": false,
"resolveAdaptorVariables": false,
"required": ["if"],
"properties": {
"if": {
"title": "if",
"type": "array",
"items": {
"title": "condition",
"oneOf": [
{
"title": "Equals",
"description": "Trigger next if value equals",
"type": "object",
"additionalProperties": false,
"required": ["value", "equals", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"equals": { "$ref": "#/definitions/equals" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Contains",
"description": "Trigger next if value contains",
"type": "object",
"additionalProperties": false,
"required": ["value", "contains", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"contains": { "$ref": "#/definitions/contains" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Less Than",
"description": "Trigger next if value is less",
"type": "object",
"additionalProperties": false,
"required": ["value", "lessThan", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"lessThan": { "$ref": "#/definitions/lessThan" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Greater Than",
"description": "Trigger next if value is greater",
"type": "object",
"additionalProperties": false,
"required": ["value", "greaterThan", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"greaterThan": { "$ref": "#/definitions/greaterThan" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Regular Expression",
"description": "If regular expression returns anything when used on value",
"type": "object",
"additionalProperties": false,
"required": ["value", "regex", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"regex": { "$ref": "#/definitions/regex" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Javascript function",
"description": "If javascript function returns true. Use value as function argument.",
"type": "object",
"additionalProperties": false,
"required": ["javascript", "next"],
"properties": {
"value": { "$ref": "#/definitions/value" },
"javascript": { "$ref": "#/definitions/javascript" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Database Query",
"description": "If value equals value in path of first query document that is returned.",
"type": "object",
"additionalProperties": false,
"required": ["find", "next"],
"properties": {
"find": { "$ref": "#/definitions/find" },
"next": { "$ref": "#/definitions/next" }
}
}
]
}
}
}
},
"onEvent": {
"type": "object",
"title": "On Event",
"description": "Listen for events from this level, items or remote sessions or global events.",
"documentation": "https://docs.adaptorex.org/basics/actions/logic/onEvent.html",
"mode": "listen",
"resolveAdaptorVariables": false,
"id": "onEvent",
"required": ["event"],
"default": { "event": "", "from": "session" },
"additionalProperties": false,
"properties": {
"from": { "$ref": "#/definitions/event_source" },
"event": { "$ref": "#/definitions/event_name" },
"if": {
"title": "if",
"type": "array",
"items": {
"title": "condition",
"oneOf": [
{
"title": "Equals",
"description": "Trigger next if event message equals",
"type": "object",
"additionalProperties": false,
"required": ["equals", "next"],
"properties": {
"field": { "$ref": "#/definitions/field" },
"equals": { "$ref": "#/definitions/equals" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Contains",
"description": "Trigger next if event message contains",
"type": "object",
"additionalProperties": false,
"required": ["contains", "next"],
"properties": {
"field": { "$ref": "#/definitions/field" },
"contains": { "$ref": "#/definitions/contains" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Less Than",
"description": "Trigger next if event message is less than",
"type": "object",
"additionalProperties": false,
"required": ["lessThan", "next"],
"properties": {
"field": { "$ref": "#/definitions/field" },
"lessThan": { "$ref": "#/definitions/lessThan" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Greater Than",
"description": "Trigger next if event message is greater than",
"type": "object",
"additionalProperties": false,
"required": ["greaterThan", "next"],
"properties": {
"field": { "$ref": "#/definitions/field" },
"greaterThan": { "$ref": "#/definitions/greaterThan" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Javascript function",
"description": "If javascript function returns true. Use value as function argument.",
"type": "object",
"additionalProperties": false,
"required": ["javascript", "next"],
"properties": {
"field": { "$ref": "#/definitions/field" },
"javascript": { "$ref": "#/definitions/javascript" },
"next": { "$ref": "#/definitions/next" }
}
},
{
"title": "Regular Expression",
"description": "If regular expression matches anything when used on event message",
"type": "object",
"additionalProperties": false,
"required": ["regex", "next"],
"properties": {
"field": { "$ref": "#/definitions/field" },
"regex": { "$ref": "#/definitions/regex" },
"case_sensitive": {
"type": "boolean",
"format": "checkbox",
"title": "case sensitive"
},
"next": { "$ref": "#/definitions/next" }
}
}
]
}
},
"else": {
"type": "object",
"properties": {
"next": { "$ref": "#/definitions/next" }
}
},
"keep_listening": { "$ref": "#/definitions/keep_listening" }
}
},
"dispatchEvent": {
"type": "object",
"title": "Dispatch Event",
"description": "Trigger an event that can be responded to elsewhere with On Event. Event will be dispatched in current session if no event source is defined.",
"documentation": "https://docs.adaptorex.org/basics/actions/logic/dispatch.html",
"template": "{let body; if(payload.message) {body = [{ text: `Message: ${payload.message.toString()}` }]}; return { title:`logic ${action.name}`, subtitle:`Event '${payload.name}' from ${payload.source || 'session'}`, body:body} }",
"additionalProperties": false,
"required": ["name"],
"default": { "name": "", "source": "session" },
"properties": {
"name": {
"type": "string",
"description": "Name of new event to be dispatched"
},
"source": {
"type": "string",
"default": "game",
"description": "Dispatch event from any item or session or dispatch a global game event with 'game'"
},
"message": {
"type": ["string", "number", "integer", "array", "object"],
"description": "Add any type of data that is supposed to be send with the event. Valid json in string will be parsed to object."
}
}
},
"function": {
"type": "object",
"title": "Function",
"description": "Call a custom or basic function",
"documentation": "https://docs.adaptorex.org/basics/actions/logic/function.html",
"default": { "function": "", "arguments": "" },
"required": ["function"],
"additionalProperties": false,
"properties": {
"function": { "$ref": "#/definitions/function" },
"arguments": {
"type": "array",
"format": "table",
"description": "Add argument data that will be forwarded to the function.",
"items": {
"title": "arg",
"default": ""
}
},
"next": {
"type": "array",
"format": "table",
"description": "If function returns `next: <index>` the next at <index> (zero based) will be dispatched.",
"items": {
"$ref": "#/definitions/next"
}
}
}
}
},
"action_variables": {
"switch": {
"match": { "type": ["string", "number", "integer"] }
},
"iterate": {
"total": { "type": "number" },
"index": { "type": "number" },
"loop": { "type": "number" },
"ended": { "type": "boolean" }
},
"onChange": {
"match": { "type": ["string", "number", "integer"] }
},
"onEvent": {
"name": { "type": "string" },
"match": { "type": ["string", "number", "integer"] },
"message": { "type": ["string", "number", "integer", "object", "array"] }
},
"function": {}
}
}