Constant NODE_PROTOCOL_SCHEMA
Source pub const NODE_PROTOCOL_SCHEMA: &str = "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"urn:mhome:core-api:interaction-flow-node:v1\",\n \"title\": \"MeowCore Interaction Flow Node protocol v1\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"definitionRequest\", \"definitionResponse\", \"executeRequest\", \"executeResponse\", \"closeRequest\", \"closeResponse\"],\n \"properties\": {\n \"definitionRequest\": { \"$ref\": \"#/$defs/definitionRequest\" },\n \"definitionResponse\": { \"$ref\": \"#/$defs/definitionResponse\" },\n \"executeRequest\": { \"$ref\": \"#/$defs/executeRequest\" },\n \"executeResponse\": { \"$ref\": \"#/$defs/executeResponse\" },\n \"closeRequest\": { \"$ref\": \"#/$defs/closeRequest\" },\n \"closeResponse\": { \"$ref\": \"#/$defs/closeResponse\" }\n },\n \"$defs\": {\n \"nonEmpty\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 128 },\n \"identifier\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128,\n \"pattern\": \"^[A-Za-z0-9_.\\\\/-]+$\"\n },\n \"variable\": { \"type\": \"string\", \"pattern\": \"^\\\\$[A-Za-z_][A-Za-z0-9_]{0,126}$\" },\n \"valueRef\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"root\"],\n \"properties\": {\n \"root\": { \"$ref\": \"#/$defs/variable\" },\n \"path\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z_][A-Za-z0-9_]{0,127}$\" },\n \"maxItems\": 32\n }\n }\n },\n \"argument\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"value\"],\n \"properties\": { \"type\": { \"const\": \"value\" }, \"value\": true }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"valueRef\"],\n \"properties\": {\n \"type\": { \"const\": \"ref\" },\n \"valueRef\": { \"$ref\": \"#/$defs/valueRef\" }\n }\n }\n ]\n },\n \"handler\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"operation\"],\n \"properties\": {\n \"operation\": { \"$ref\": \"#/$defs/identifier\" },\n \"args\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/$defs/argument\" }, \"maxItems\": 128 }\n }\n },\n \"presentation\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"renderer\"],\n \"properties\": {\n \"renderer\": { \"const\": \"typedForm\" },\n \"title\": { \"type\": \"string\", \"maxLength\": 1024 },\n \"description\": { \"type\": \"string\", \"maxLength\": 16384 },\n \"content\": { \"type\": \"string\", \"maxLength\": 65536 }\n }\n },\n \"field\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"var\", \"valueType\", \"control\"],\n \"properties\": {\n \"var\": { \"$ref\": \"#/$defs/variable\" },\n \"valueType\": { \"enum\": [\"string\", \"boolean\"] },\n \"control\": { \"enum\": [\"text\", \"password\", \"longText\", \"select\", \"boolean\"] },\n \"required\": { \"type\": \"boolean\" },\n \"repeat\": { \"type\": \"boolean\" },\n \"label\": { \"type\": \"string\", \"maxLength\": 1024 },\n \"defaultValue\": true,\n \"defaultValueRef\": { \"$ref\": \"#/$defs/valueRef\" },\n \"options\": { \"type\": \"array\", \"maxItems\": 1024 },\n \"optionsRef\": { \"$ref\": \"#/$defs/valueRef\" },\n \"optionUnavailableText\": { \"type\": \"string\", \"maxLength\": 4096 },\n \"readOnly\": { \"type\": \"boolean\" },\n \"minRows\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 100 }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": { \"control\": { \"const\": \"password\" } },\n \"required\": [\"control\"]\n },\n \"then\": {\n \"not\": {\n \"anyOf\": [\n { \"required\": [\"defaultValue\"] },\n { \"required\": [\"defaultValueRef\"] },\n {\n \"properties\": { \"readOnly\": { \"const\": true } },\n \"required\": [\"readOnly\"]\n }\n ]\n }\n }\n }\n ]\n },\n \"form\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"fields\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/$defs/field\" }, \"maxItems\": 64 }\n }\n },\n \"stepContent\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"presentation\", \"form\"],\n \"properties\": {\n \"type\": { \"const\": \"form\" },\n \"presentation\": { \"$ref\": \"#/$defs/presentation\" },\n \"form\": { \"$ref\": \"#/$defs/form\" },\n \"renderRefs\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/$defs/valueRef\" } }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"presentation\", \"authorizationUrlRef\", \"completionMode\"],\n \"properties\": {\n \"type\": { \"const\": \"externalAuth\" },\n \"presentation\": { \"$ref\": \"#/$defs/presentation\" },\n \"authorizationUrlRef\": { \"$ref\": \"#/$defs/valueRef\" },\n \"completionMode\": { \"enum\": [\"callback\", \"poll\"] },\n \"pollAfterMs\": { \"type\": \"integer\", \"minimum\": 250, \"maximum\": 60000 }\n }\n }\n ]\n },\n \"transition\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"stepId\"],\n \"properties\": { \"type\": { \"const\": \"step\" }, \"stepId\": { \"$ref\": \"#/$defs/identifier\" } }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"valueRef\"],\n \"properties\": { \"type\": { \"const\": \"dynamic\" }, \"valueRef\": { \"$ref\": \"#/$defs/valueRef\" } }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\"],\n \"properties\": { \"type\": { \"const\": \"finish\" } }\n }\n ]\n },\n \"step\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"id\", \"content\", \"transition\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/identifier\" },\n \"content\": { \"$ref\": \"#/$defs/stepContent\" },\n \"transition\": { \"$ref\": \"#/$defs/transition\" }\n }\n },\n \"resolver\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"outputVar\", \"handler\"],\n \"properties\": {\n \"outputVar\": { \"$ref\": \"#/$defs/variable\" },\n \"handler\": { \"$ref\": \"#/$defs/handler\" }\n }\n },\n \"definition\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"protocolVersion\", \"flowId\", \"startStepId\", \"steps\"],\n \"properties\": {\n \"protocolVersion\": { \"const\": 1 },\n \"flowId\": { \"$ref\": \"#/$defs/identifier\" },\n \"startStepId\": { \"$ref\": \"#/$defs/identifier\" },\n \"steps\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"maxProperties\": 64,\n \"additionalProperties\": { \"$ref\": \"#/$defs/step\" }\n },\n \"resolvers\": {\n \"type\": \"object\",\n \"maxProperties\": 128,\n \"additionalProperties\": { \"$ref\": \"#/$defs/resolver\" }\n },\n \"lifecycle\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"complete\": { \"$ref\": \"#/$defs/handler\" },\n \"cancel\": { \"$ref\": \"#/$defs/handler\" },\n \"expire\": { \"$ref\": \"#/$defs/handler\" }\n }\n }\n }\n },\n \"definitionRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"flowId\"],\n \"properties\": {\n \"flowId\": { \"$ref\": \"#/$defs/identifier\" },\n \"subjectId\": { \"$ref\": \"#/$defs/nonEmpty\" }\n }\n },\n \"definitionResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"definitionRevision\", \"sourceSessionId\", \"definition\"],\n \"properties\": {\n \"definitionRevision\": { \"$ref\": \"#/$defs/nonEmpty\" },\n \"sourceSessionId\": { \"$ref\": \"#/$defs/nonEmpty\" },\n \"definition\": { \"$ref\": \"#/$defs/definition\" }\n }\n },\n \"executeRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"flowId\", \"sourceSessionId\", \"definitionRevision\", \"operation\", \"operationId\"],\n \"properties\": {\n \"flowId\": { \"$ref\": \"#/$defs/identifier\" },\n \"sourceSessionId\": { \"$ref\": \"#/$defs/nonEmpty\" },\n \"definitionRevision\": { \"$ref\": \"#/$defs/nonEmpty\" },\n \"operation\": { \"$ref\": \"#/$defs/nonEmpty\" },\n \"operationId\": { \"$ref\": \"#/$defs/nonEmpty\" },\n \"args\": { \"type\": \"array\", \"maxItems\": 128 }\n }\n },\n \"executeResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"data\"],\n \"properties\": { \"data\": true }\n },\n \"closeRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"flowId\", \"sourceSessionId\", \"operationId\", \"reason\"],\n \"properties\": {\n \"flowId\": { \"$ref\": \"#/$defs/identifier\" },\n \"sourceSessionId\": { \"$ref\": \"#/$defs/nonEmpty\" },\n \"operationId\": { \"$ref\": \"#/$defs/nonEmpty\" },\n \"reason\": { \"enum\": [\"completed\", \"cancelled\", \"expired\", \"startFailed\"] }\n }\n },\n \"closeResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"required\": [\"closed\"],\n \"properties\": { \"closed\": { \"type\": \"boolean\" } }\n }\n }\n}\n";