json_schema: {
      "additionalProperties": false,
      "definitions": {
          "guid": {
              "pattern": "^[a-f][a-f0-9]{31}$",
              "type": "string"
          },
          "shape": {
              "additionalProperties": false,
              "properties": {
                  "attr": {
                      "additionalProperties": {
                          "oneOf": [
                              {
                                  "type": "string"
                              },
                              {
                                  "type": "number"
                              }
                          ]
                      },
                      "maxProperties": 100,
                      "type": "object"
                  },
                  "bbox": {
                      "properties": {
                          "height": {
                              "type": "number"
                          },
                          "width": {
                              "type": "number"
                          },
                          "x": {
                              "type": "number"
                          },
                          "y": {
                              "type": "number"
                          }
                      },
                      "type": "object"
                  },
                  "children": {
                      "items": {
                          "$ref": "#/definitions/shape"
                      },
                      "type": "array"
                  },
                  "name": {
                      "enum": [
                          "text",
                          "tspan",
                          "polygon",
                          "polyline",
                          "line",
                          "rect",
                          "ellipse",
                          "circle",
                          "path"
                      ],
                      "type": "string"
                  },
                  "text": {
                      "maxLength": 1000,
                      "type": "string"
                  }
              },
              "required": [
                  "name",
                  "attr"
              ],
              "type": "object"
          }
      },
      "properties": {
          "from": {
              "$ref": "#/definitions/shape"
          },
          "id": {
              "$ref": "#/definitions/guid"
          },
          "to": {
              "$ref": "#/definitions/shape"
          },
          "type": {
              "enum": [
                  "addition",
                  "removal",
                  "replacement",
                  "mutation"
              ],
              "type": "string"
          },
          "undoOf": {
              "$ref": "#/definitions/guid"
          }
      },
      "required": [
          "id",
          "type"
      ],
      "type": "object"
  }