Diagram

Your diagram, kept as you sent it: keys we do not model — notes, embedded bricks — come back untouched. The one thing we add is isTarget: true, on any node that does not already say whether a connection may end at it.

We read nodes and connections to check it. A diagram missing either is stored anyway and reported as breaking rules.

  • Connections by id

    Properties: 1
  • Blocks by id

    Properties: 1
Examples
{
  "nodes": {
    "hidden": {
      "id": "hidden",
      "path": "hidden",
      "template": "hidden",
      "params": {}
    },
    "welcome": {
      "id": "welcome",
      "path": "welcome",
      "template": "var_text",
      "params": {
        "version": 3,
        "text": "Hi! What is your name?",
        "destination": "name"
      }
    }
  },
  "connections": {
    "hidden.success--welcome": {
      "id": "hidden.success--welcome",
      "type": "success",
      "sourcePath": "hidden",
      "targetPath": "welcome"
    }
  }
}