{ "kind": "open-flow-workflow", "version": 1, "name": "Send an SMS with Mocean", "content": { "modelVersion": 14, "document": { "bindings": {}, "graph": { "nodes": { "n_c9ad4766096e120e": { "name": "Send an SMS", "kind": "start", "inputDefs": [] }, "n_2ddeb124d9a84561": { "inputs": { "from": { "kind": "value", "value": "YOUR_SENDER" }, "to": { "kind": "value", "value": "YOUR_RECIPIENT" }, "text": { "kind": "value", "value": "YOUR_MESSAGE" } }, "name": "Configure the message", "kind": "task", "task": { "inputs": [ { "jsonSchema": { "type": "string" }, "nullable": false, "handle": "from" }, { "jsonSchema": { "type": "string" }, "nullable": false, "handle": "to" }, { "jsonSchema": { "type": "string" }, "nullable": false, "handle": "text" } ], "outputs": [ { "jsonSchema": { "type": "string", "minLength": 1, "description": "SMS sender ID shown to the recipient." }, "nullable": false, "handle": "from" }, { "jsonSchema": { "type": "string", "minLength": 1, "description": "Recipient phone number including country code." }, "nullable": false, "handle": "to" }, { "jsonSchema": { "type": "string", "minLength": 1, "description": "SMS message text to send to the recipient." }, "nullable": false, "handle": "text" } ], "name": "Configure the message", "moduleId": "n_5c92fc2d58f04dd3", "capabilities": [ { "kind": "connector", "mode": "independent", "actions": [] } ] } }, "n_02ecac4ac75a8b57": { "inputs": { "from": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_2ddeb124d9a84561", "output": "from" } ] }, "to": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_2ddeb124d9a84561", "output": "to" } ] }, "text": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_2ddeb124d9a84561", "output": "text" } ] } }, "name": "Send through Mocean", "kind": "task", "task": { "inputs": [ { "description": "SMS sender ID shown to the recipient.", "jsonSchema": { "type": "string", "minLength": 1, "description": "SMS sender ID shown to the recipient." }, "nullable": false, "handle": "from" }, { "description": "Recipient phone number including country code.", "jsonSchema": { "type": "string", "minLength": 1, "description": "Recipient phone number including country code." }, "nullable": false, "handle": "to" }, { "description": "SMS message text to send to the recipient.", "jsonSchema": { "type": "string", "minLength": 1, "description": "SMS message text to send to the recipient." }, "nullable": false, "handle": "text" }, { "description": "Callback URL that Mocean should call with delivery report updates.", "jsonSchema": { "type": "string", "format": "uri", "description": "Callback URL that Mocean should call with delivery report updates." }, "nullable": true, "handle": "deliveryReportUrl", "value": null } ], "outputs": [ { "description": "Per-recipient SMS submission results returned by Mocean.", "jsonSchema": { "type": "array", "items": { "type": "object", "properties": { "status": { "type": "integer", "description": "Mocean response status code. Zero indicates a successful request." }, "receiver": { "type": "string", "minLength": 1, "description": "Phone number that Mocean accepted for this message." }, "messageId": { "type": "string", "minLength": 1, "description": "Mocean message identifier returned for status queries." }, "errorMessage": { "type": "string", "minLength": 1, "description": "Mocean error message when the recipient submission failed." } }, "required": [ "status" ], "additionalProperties": true, "description": "Result for one SMS recipient returned by Mocean." }, "description": "Per-recipient SMS submission results returned by Mocean." }, "nullable": false, "handle": "messages" } ], "name": "Send through Mocean", "executor": { "kind": "connector", "action": "mocean.send_sms" } } }, "n_5e933ab325c5af57": { "inputs": { "messages": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_02ecac4ac75a8b57", "output": "messages" } ] } }, "name": "Check the submission response", "kind": "task", "task": { "inputs": [ { "jsonSchema": { "type": "array", "items": { "type": "object", "properties": { "status": { "type": "integer", "description": "Mocean response status code. Zero indicates a successful request." }, "receiver": { "type": "string", "minLength": 1, "description": "Phone number that Mocean accepted for this message." }, "messageId": { "type": "string", "minLength": 1, "description": "Mocean message identifier returned for status queries." }, "errorMessage": { "type": "string", "minLength": 1, "description": "Mocean error message when the recipient submission failed." } }, "required": [ "status" ], "additionalProperties": true, "description": "Result for one SMS recipient returned by Mocean." }, "description": "Per-recipient SMS submission results returned by Mocean." }, "nullable": false, "handle": "messages" } ], "outputs": [ { "jsonSchema": { "type": "array", "items": { "type": "object", "properties": { "status": { "type": "integer", "description": "Mocean response status code. Zero indicates a successful request." }, "receiver": { "type": "string", "minLength": 1, "description": "Phone number that Mocean accepted for this message." }, "messageId": { "type": "string", "minLength": 1, "description": "Mocean message identifier returned for status queries." }, "errorMessage": { "type": "string", "minLength": 1, "description": "Mocean error message when the recipient submission failed." } }, "required": [ "status" ], "additionalProperties": true, "description": "Result for one SMS recipient returned by Mocean." }, "description": "Per-recipient SMS submission results returned by Mocean." }, "nullable": false, "handle": "messages" } ], "name": "Check the submission response", "moduleId": "n_8503b656a9437e0b", "capabilities": [ { "kind": "connector", "mode": "independent", "actions": [] } ] } }, "n_d24c5d3b2f03b9ea": { "name": "Mocean response", "kind": "outputs", "outputDefs": [ { "jsonSchema": { "type": "array", "items": { "type": "object", "properties": { "status": { "type": "integer", "description": "Mocean response status code. Zero indicates a successful request." }, "receiver": { "type": "string", "minLength": 1, "description": "Phone number that Mocean accepted for this message." }, "messageId": { "type": "string", "minLength": 1, "description": "Mocean message identifier returned for status queries." }, "errorMessage": { "type": "string", "minLength": 1, "description": "Mocean error message when the recipient submission failed." } }, "required": [ "status" ], "additionalProperties": true, "description": "Result for one SMS recipient returned by Mocean." }, "description": "Per-recipient SMS submission results returned by Mocean." }, "nullable": false, "handle": "messages" } ], "outputMappings": { "messages": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_5e933ab325c5af57", "output": "messages" } ] } } } }, "edges": [ { "source": "n_c9ad4766096e120e", "target": "n_2ddeb124d9a84561" }, { "source": "n_2ddeb124d9a84561", "target": "n_02ecac4ac75a8b57" }, { "source": "n_02ecac4ac75a8b57", "target": "n_5e933ab325c5af57" }, { "source": "n_5e933ab325c5af57", "target": "n_d24c5d3b2f03b9ea" } ] } }, "modules": { "n_5c92fc2d58f04dd3": { "name": "Configure the message", "imports": [], "source": "export default function smsPlan({from,to,text}){\n for(const [key,value] of Object.entries({from,to,text}))if(typeof value!=='string'||!value.trim()||value.startsWith('YOUR_'))throw Error('Configure '+key);\n return{from,to,text};\n}\n" }, "n_8503b656a9437e0b": { "name": "Check the submission response", "imports": [], "source": "export default function smsResult({messages}){if(!Array.isArray(messages)||messages.length===0)throw Error('Mocean returned no per-recipient result');return{messages};}\n" } } }, "presentation": { "designer": { "version": 1, "flow": { "direction": "vertical" } } } }