adaptorex
Version:
Connect all your live interactive storytelling devices and software
534 lines (533 loc) • 19.7 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},
"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": {
"$ref":"#/definitions/next"
},
"repeat": {
"type":"boolean",
"title":"repeat",
"format":"checkbox",
"description":"If enabled restart with first element if last element was reached in previous iteration. Iterate will always goto next state."
},
"reverse": {
"type":"boolean",
"title":"reverse order",
"format":"checkbox",
"description":"If enabled iterate in reverse order from last to first element."
}
}
},
"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":{
}
}
}