{
  "components": {
    "schemas": {
      "AgentCreateMindmapRequest": {
        "type": "object",
        "properties": {
          "percent_bounds": {
            "description": "Optional preferred region as zone percentage",
            "type": "object",
            "properties": {
              "right_pct": {
                "description": "Right edge as 0-1 fraction of zone width",
                "type": "number"
              },
              "top_pct": {
                "description": "Top edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "bottom_pct": {
                "description": "Bottom edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "left_pct": {
                "description": "Left edge as 0-1 fraction of zone width",
                "type": "number"
              }
            }
          },
          "spacing": {
            "description": "Optional spacing configuration",
            "type": "object",
            "properties": {
              "manual_spacing": {
                "description": "Explicit spacing in canvas units (>= 0)",
                "type": "number"
              },
              "auto_spacing": {
                "description": "Let the server compute spacing; send an empty object to enable",
                "type": "object",
                "properties": {}
              }
            }
          },
          "top": {
            "description": "Top branch (single-direction layout)",
            "type": "object",
            "properties": {
              "children": {
                "minItems": 1,
                "maxItems": 200,
                "description": "Ordered child nodes for this branch direction",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "children": {
                      "maxItems": 200,
                      "description": "Child nodes, nested to any depth",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "content": {
                      "description": "Content wrapper with text",
                      "type": "object",
                      "properties": {
                        "notes": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Optional longer supporting text",
                          "type": "string",
                          "maxLength": 10000
                        },
                        "link_url": {
                          "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                          "description": "Optional external link associated with the created object",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "text": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Primary visible label/content",
                          "type": "string",
                          "maxLength": 5000
                        },
                        "tags": {
                          "maxItems": 50,
                          "description": "Optional semantic tags/labels",
                          "type": "array",
                          "items": {
                            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                            "type": "string",
                            "maxLength": 200
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "left": {
            "description": "Left branch (single-direction layout)",
            "type": "object",
            "properties": {
              "children": {
                "minItems": 1,
                "maxItems": 200,
                "description": "Ordered child nodes for this branch direction",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "children": {
                      "maxItems": 200,
                      "description": "Child nodes, nested to any depth",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "content": {
                      "description": "Content wrapper with text",
                      "type": "object",
                      "properties": {
                        "notes": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Optional longer supporting text",
                          "type": "string",
                          "maxLength": 10000
                        },
                        "link_url": {
                          "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                          "description": "Optional external link associated with the created object",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "text": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Primary visible label/content",
                          "type": "string",
                          "maxLength": 5000
                        },
                        "tags": {
                          "maxItems": 50,
                          "description": "Optional semantic tags/labels",
                          "type": "array",
                          "items": {
                            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                            "type": "string",
                            "maxLength": 200
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "bottom": {
            "description": "Bottom branch (single-direction layout)",
            "type": "object",
            "properties": {
              "children": {
                "minItems": 1,
                "maxItems": 200,
                "description": "Ordered child nodes for this branch direction",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "children": {
                      "maxItems": 200,
                      "description": "Child nodes, nested to any depth",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "content": {
                      "description": "Content wrapper with text",
                      "type": "object",
                      "properties": {
                        "notes": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Optional longer supporting text",
                          "type": "string",
                          "maxLength": 10000
                        },
                        "link_url": {
                          "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                          "description": "Optional external link associated with the created object",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "text": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Primary visible label/content",
                          "type": "string",
                          "maxLength": 5000
                        },
                        "tags": {
                          "maxItems": 50,
                          "description": "Optional semantic tags/labels",
                          "type": "array",
                          "items": {
                            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                            "type": "string",
                            "maxLength": 200
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "root": {
            "description": "Root node content (required)",
            "type": "object",
            "properties": {
              "notes": {
                "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                "description": "Optional longer supporting text",
                "type": "string",
                "maxLength": 10000
              },
              "link_url": {
                "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                "description": "Optional external link associated with the created object",
                "type": "string",
                "maxLength": 2000
              },
              "text": {
                "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                "description": "Primary visible label/content",
                "type": "string",
                "maxLength": 5000
              },
              "tags": {
                "maxItems": 50,
                "description": "Optional semantic tags/labels",
                "type": "array",
                "items": {
                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                  "type": "string",
                  "maxLength": 200
                }
              }
            }
          },
          "top_down": {
            "description": "Top-down dual-direction layout",
            "type": "object",
            "properties": {
              "top": {
                "maxItems": 200,
                "description": "Ordered branch-root nodes on the top side",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "children": {
                      "maxItems": 200,
                      "description": "Child nodes, nested to any depth",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "content": {
                      "description": "Content wrapper with text",
                      "type": "object",
                      "properties": {
                        "notes": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Optional longer supporting text",
                          "type": "string",
                          "maxLength": 10000
                        },
                        "link_url": {
                          "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                          "description": "Optional external link associated with the created object",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "text": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Primary visible label/content",
                          "type": "string",
                          "maxLength": 5000
                        },
                        "tags": {
                          "maxItems": 50,
                          "description": "Optional semantic tags/labels",
                          "type": "array",
                          "items": {
                            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                            "type": "string",
                            "maxLength": 200
                          }
                        }
                      }
                    }
                  }
                }
              },
              "bottom": {
                "maxItems": 200,
                "description": "Ordered branch-root nodes on the bottom side",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "children": {
                      "maxItems": 200,
                      "description": "Child nodes, nested to any depth",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "content": {
                      "description": "Content wrapper with text",
                      "type": "object",
                      "properties": {
                        "notes": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Optional longer supporting text",
                          "type": "string",
                          "maxLength": 10000
                        },
                        "link_url": {
                          "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                          "description": "Optional external link associated with the created object",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "text": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Primary visible label/content",
                          "type": "string",
                          "maxLength": 5000
                        },
                        "tags": {
                          "maxItems": 50,
                          "description": "Optional semantic tags/labels",
                          "type": "array",
                          "items": {
                            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                            "type": "string",
                            "maxLength": 200
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "right": {
            "description": "Right branch (single-direction layout)",
            "type": "object",
            "properties": {
              "children": {
                "minItems": 1,
                "maxItems": 200,
                "description": "Ordered child nodes for this branch direction",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "children": {
                      "maxItems": 200,
                      "description": "Child nodes, nested to any depth",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "content": {
                      "description": "Content wrapper with text",
                      "type": "object",
                      "properties": {
                        "notes": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Optional longer supporting text",
                          "type": "string",
                          "maxLength": 10000
                        },
                        "link_url": {
                          "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                          "description": "Optional external link associated with the created object",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "text": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Primary visible label/content",
                          "type": "string",
                          "maxLength": 5000
                        },
                        "tags": {
                          "maxItems": 50,
                          "description": "Optional semantic tags/labels",
                          "type": "array",
                          "items": {
                            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                            "type": "string",
                            "maxLength": 200
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "title": {
            "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
            "description": "Optional mindmap title",
            "type": "string",
            "maxLength": 1000
          },
          "absolute_bounds": {
            "description": "Optional preferred region in absolute canvas units",
            "type": "object",
            "properties": {
              "x": {
                "description": "Left position in canvas units",
                "type": "number"
              },
              "width": {
                "description": "Width in canvas units",
                "type": "number"
              },
              "y": {
                "description": "Top position in canvas units",
                "type": "number"
              },
              "height": {
                "description": "Height in canvas units",
                "type": "number"
              }
            }
          },
          "left_right": {
            "description": "Left-right dual-direction layout",
            "type": "object",
            "properties": {
              "left": {
                "maxItems": 200,
                "description": "Ordered branch-root nodes on the left side",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "children": {
                      "maxItems": 200,
                      "description": "Child nodes, nested to any depth",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "content": {
                      "description": "Content wrapper with text",
                      "type": "object",
                      "properties": {
                        "notes": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Optional longer supporting text",
                          "type": "string",
                          "maxLength": 10000
                        },
                        "link_url": {
                          "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                          "description": "Optional external link associated with the created object",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "text": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Primary visible label/content",
                          "type": "string",
                          "maxLength": 5000
                        },
                        "tags": {
                          "maxItems": 50,
                          "description": "Optional semantic tags/labels",
                          "type": "array",
                          "items": {
                            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                            "type": "string",
                            "maxLength": 200
                          }
                        }
                      }
                    }
                  }
                }
              },
              "right": {
                "maxItems": 200,
                "description": "Ordered branch-root nodes on the right side",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "children": {
                      "maxItems": 200,
                      "description": "Child nodes, nested to any depth",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {}
                      }
                    },
                    "content": {
                      "description": "Content wrapper with text",
                      "type": "object",
                      "properties": {
                        "notes": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Optional longer supporting text",
                          "type": "string",
                          "maxLength": 10000
                        },
                        "link_url": {
                          "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                          "description": "Optional external link associated with the created object",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "text": {
                          "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                          "description": "Primary visible label/content",
                          "type": "string",
                          "maxLength": 5000
                        },
                        "tags": {
                          "maxItems": 50,
                          "description": "Optional semantic tags/labels",
                          "type": "array",
                          "items": {
                            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                            "type": "string",
                            "maxLength": 200
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "target": {
            "description": "Optional insertion target (defaults to ZONE_ROOT)",
            "type": "object",
            "properties": {
              "insert_index": {
                "description": "Insertion index within the target container",
                "type": "integer"
              },
              "target_type": {
                "description": "Placement target type: ZONE_ROOT (default) or FRAME",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "ZONE_ROOT",
                  "FRAME"
                ]
              },
              "frame_id": {
                "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                "description": "Frame id (required when target_type is FRAME)",
                "type": "string",
                "maxLength": 200
              }
            }
          }
        },
        "required": [
          "root"
        ]
      },
      "CreateFlowchartResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/CreateFlowchartResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentCreateDatabaseTableRequest": {
        "type": "object",
        "properties": {
          "percent_bounds": {
            "description": "Optional preferred region as zone percentage",
            "type": "object",
            "properties": {
              "right_pct": {
                "description": "Right edge as 0-1 fraction of zone width",
                "type": "number"
              },
              "top_pct": {
                "description": "Top edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "bottom_pct": {
                "description": "Bottom edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "left_pct": {
                "description": "Left edge as 0-1 fraction of zone width",
                "type": "number"
              }
            }
          },
          "payload": {
            "description": "Database-table data specification (required)",
            "type": "object",
            "properties": {
              "input": {
                "description": "Tabular data input specification (required)",
                "type": "object",
                "properties": {
                  "raw_text": {
                    "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                    "description": "Raw tabular text data (required)",
                    "type": "string",
                    "maxLength": 500000
                  },
                  "pad_missing_cells": {
                    "description": "Pad ragged rows with empty cells to match max column count",
                    "type": "boolean"
                  },
                  "format_hint": {
                    "default": "AUTO",
                    "description": "Format hint for parsing (defaults to AUTO)",
                    "type": "string",
                    "maxLength": 10,
                    "enum": [
                      "AUTO",
                      "CSV",
                      "TSV",
                      "PIPE"
                    ]
                  },
                  "first_row_is_header": {
                    "description": "Treat the first row as a header row",
                    "type": "boolean"
                  },
                  "trim_whitespace": {
                    "description": "Trim whitespace from cell values",
                    "type": "boolean"
                  }
                },
                "required": [
                  "raw_text"
                ]
              },
              "name": {
                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]+)$",
                "description": "Optional database-table display name",
                "type": "string",
                "maxLength": 1000
              }
            },
            "required": [
              "input"
            ]
          },
          "absolute_bounds": {
            "description": "Optional preferred region in absolute canvas units",
            "type": "object",
            "properties": {
              "x": {
                "description": "Left position in canvas units",
                "type": "number"
              },
              "width": {
                "description": "Width in canvas units",
                "type": "number"
              },
              "y": {
                "description": "Top position in canvas units",
                "type": "number"
              },
              "height": {
                "description": "Height in canvas units",
                "type": "number"
              }
            }
          },
          "target": {
            "description": "Optional insertion target (defaults to ZONE_ROOT)",
            "type": "object",
            "properties": {
              "insert_index": {
                "description": "Insertion index within the target container",
                "type": "integer"
              },
              "target_type": {
                "description": "Placement target type: ZONE_ROOT (default) or FRAME",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "ZONE_ROOT",
                  "FRAME"
                ]
              },
              "frame_id": {
                "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                "description": "Frame id (required when target_type is FRAME)",
                "type": "string",
                "maxLength": 200
              }
            }
          }
        },
        "required": [
          "payload"
        ]
      },
      "CreateFlowchartResult": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string"
          },
          "created_objects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObjectRef"
            }
          }
        }
      },
      "CreateMindmapFromOutlineResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/CreateMindmapFromOutlineResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentError": {
        "type": "object",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/AgentErrorCode"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "MutationMetadata": {
        "type": "object",
        "properties": {
          "new_revision_id": {
            "type": "string"
          }
        }
      },
      "VaniEnvelope": {
        "description": "Standard Vani response envelope.",
        "type": "object",
        "properties": {
          "data": {
            "description": "Operation payload. Narrowed per endpoint where a response schema is declared.",
            "type": "object"
          },
          "message": {
            "type": "string"
          },
          "request_uri": {
            "type": "string"
          },
          "status": {
            "description": "success or error",
            "type": "string"
          }
        },
        "required": [
          "status"
        ]
      },
      "AgentErrorCode": {
        "type": "string",
        "enum": [
          "AGENT_ERROR_CODE_UNSPECIFIED",
          "INVALID_ARGUMENT",
          "SPACE_NOT_FOUND",
          "ZONE_NOT_FOUND",
          "FRAME_NOT_FOUND",
          "OBJECT_NOT_FOUND",
          "NO_EMPTY_REGION",
          "NO_VISUAL_NEIGHBOR",
          "PLACEMENT_CONFLICT",
          "UNSUPPORTED_OPERATION",
          "INTERNAL_ERROR"
        ]
      },
      "VaniError": {
        "description": "Standard Vani error envelope.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "details": {
                "description": "Error code and message, plus any context keys (edition_id, space_id, ...).",
                "additionalProperties": true,
                "type": "object",
                "properties": {
                  "sdk_error_code": {
                    "description": "Raw SDK code, present when the error was not mapped.",
                    "type": "string"
                  },
                  "error_code": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "request_uri": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "CreateStackFromItemsResult": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string"
          },
          "structure": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "AgentCreateKanbanRequest": {
        "type": "object",
        "properties": {
          "percent_bounds": {
            "description": "Optional preferred region as zone percentage",
            "type": "object",
            "properties": {
              "right_pct": {
                "description": "Right edge as 0-1 fraction of zone width",
                "type": "number"
              },
              "top_pct": {
                "description": "Top edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "bottom_pct": {
                "description": "Bottom edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "left_pct": {
                "description": "Left edge as 0-1 fraction of zone width",
                "type": "number"
              }
            }
          },
          "spacing": {
            "description": "Optional spacing configuration",
            "type": "object",
            "properties": {
              "manual_spacing": {
                "description": "Explicit spacing in canvas units (>= 0)",
                "type": "number"
              },
              "auto_spacing": {
                "description": "Let the server compute spacing; send an empty object to enable",
                "type": "object",
                "properties": {}
              }
            }
          },
          "columns": {
            "minItems": 1,
            "maxItems": 50,
            "description": "Kanban column specifications (required, at least 1)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                  "description": "Column title (required, non-empty)",
                  "type": "string",
                  "maxLength": 1000
                },
                "items": {
                  "maxItems": 200,
                  "description": "Items within this column",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "due_date_text": {
                        "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                        "description": "Optional user-facing due date text (not rendered yet)",
                        "type": "string",
                        "maxLength": 1000
                      },
                      "assignee": {
                        "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                        "description": "Optional assignee/owner label (not rendered yet)",
                        "type": "string",
                        "maxLength": 1000
                      },
                      "priority": {
                        "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                        "description": "Optional priority label (not rendered yet)",
                        "type": "string",
                        "maxLength": 1000
                      },
                      "content": {
                        "description": "Visible content and lightweight semantic metadata",
                        "type": "object",
                        "properties": {
                          "notes": {
                            "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                            "description": "Optional longer supporting text",
                            "type": "string",
                            "maxLength": 10000
                          },
                          "link_url": {
                            "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                            "description": "Optional external link associated with the created object",
                            "type": "string",
                            "maxLength": 2000
                          },
                          "text": {
                            "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                            "description": "Primary visible label/content",
                            "type": "string",
                            "maxLength": 5000
                          },
                          "tags": {
                            "maxItems": 50,
                            "description": "Optional semantic tags/labels",
                            "type": "array",
                            "items": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "type": "string",
                              "maxLength": 200
                            }
                          }
                        }
                      },
                      "status": {
                        "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                        "description": "Optional status label (not rendered yet)",
                        "type": "string",
                        "maxLength": 1000
                      }
                    }
                  }
                }
              },
              "required": [
                "title"
              ]
            }
          },
          "title": {
            "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
            "description": "Optional kanban board title",
            "type": "string",
            "maxLength": 1000
          },
          "absolute_bounds": {
            "description": "Optional preferred region in absolute canvas units",
            "type": "object",
            "properties": {
              "x": {
                "description": "Left position in canvas units",
                "type": "number"
              },
              "width": {
                "description": "Width in canvas units",
                "type": "number"
              },
              "y": {
                "description": "Top position in canvas units",
                "type": "number"
              },
              "height": {
                "description": "Height in canvas units",
                "type": "number"
              }
            }
          },
          "layout_hint": {
            "default": "HORIZONTAL",
            "description": "Board orientation (defaults to HORIZONTAL)",
            "type": "string",
            "maxLength": 20,
            "enum": [
              "HORIZONTAL",
              "VERTICAL"
            ]
          },
          "target": {
            "description": "Optional insertion target (defaults to ZONE_ROOT)",
            "type": "object",
            "properties": {
              "insert_index": {
                "description": "Insertion index within the target container",
                "type": "integer"
              },
              "target_type": {
                "description": "Placement target type: ZONE_ROOT (default) or FRAME",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "ZONE_ROOT",
                  "FRAME"
                ]
              },
              "frame_id": {
                "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                "description": "Frame id (required when target_type is FRAME)",
                "type": "string",
                "maxLength": 200
              }
            }
          }
        },
        "required": [
          "columns"
        ]
      },
      "CreateKanbanFromItemsResult": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string"
          },
          "structure": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "CreateTableFromDataResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/CreateTableResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentCreateStackRequest": {
        "type": "object",
        "properties": {
          "percent_bounds": {
            "description": "Optional preferred region as zone percentage",
            "type": "object",
            "properties": {
              "right_pct": {
                "description": "Right edge as 0-1 fraction of zone width",
                "type": "number"
              },
              "top_pct": {
                "description": "Top edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "bottom_pct": {
                "description": "Bottom edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "left_pct": {
                "description": "Left edge as 0-1 fraction of zone width",
                "type": "number"
              }
            }
          },
          "spacing": {
            "description": "Optional spacing configuration",
            "type": "object",
            "properties": {
              "manual_spacing": {
                "description": "Explicit spacing in canvas units (>= 0)",
                "type": "number"
              },
              "auto_spacing": {
                "description": "Let the server compute spacing; send an empty object to enable",
                "type": "object",
                "properties": {}
              }
            }
          },
          "title": {
            "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
            "description": "Optional stack title",
            "type": "string",
            "maxLength": 1000
          },
          "absolute_bounds": {
            "description": "Optional preferred region in absolute canvas units",
            "type": "object",
            "properties": {
              "x": {
                "description": "Left position in canvas units",
                "type": "number"
              },
              "width": {
                "description": "Width in canvas units",
                "type": "number"
              },
              "y": {
                "description": "Top position in canvas units",
                "type": "number"
              },
              "height": {
                "description": "Height in canvas units",
                "type": "number"
              }
            }
          },
          "items": {
            "minItems": 1,
            "maxItems": 200,
            "description": "Ordered item specifications (required, at least 1)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "content": {
                  "description": "Visible content and lightweight semantic metadata",
                  "type": "object",
                  "properties": {
                    "notes": {
                      "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                      "description": "Optional longer supporting text",
                      "type": "string",
                      "maxLength": 10000
                    },
                    "link_url": {
                      "pattern": "^https?://[^\\s<>\"]{1,2000}$",
                      "description": "Optional external link associated with the created object",
                      "type": "string",
                      "maxLength": 2000
                    },
                    "text": {
                      "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                      "description": "Primary visible label/content",
                      "type": "string",
                      "maxLength": 5000
                    },
                    "tags": {
                      "maxItems": 50,
                      "description": "Optional semantic tags/labels",
                      "type": "array",
                      "items": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "type": "string",
                        "maxLength": 200
                      }
                    }
                  }
                }
              }
            }
          },
          "layout_hint": {
            "default": "STACK_VERTICAL",
            "description": "Stack orientation (defaults to STACK_VERTICAL)",
            "type": "string",
            "maxLength": 30,
            "enum": [
              "STACK_VERTICAL",
              "STACK_HORIZONTAL"
            ]
          },
          "target": {
            "description": "Optional insertion target (defaults to ZONE_ROOT)",
            "type": "object",
            "properties": {
              "insert_index": {
                "description": "Insertion index within the target container",
                "type": "integer"
              },
              "target_type": {
                "description": "Placement target type: ZONE_ROOT (default) or FRAME",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "ZONE_ROOT",
                  "FRAME"
                ]
              },
              "frame_id": {
                "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                "description": "Frame id (required when target_type is FRAME)",
                "type": "string",
                "maxLength": 200
              }
            }
          }
        },
        "required": [
          "items"
        ]
      },
      "CreateKanbanFromItemsResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/CreateKanbanFromItemsResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "CreateStackFromItemsResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/CreateStackFromItemsResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "CreateMindmapFromOutlineResult": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string"
          },
          "structure": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "AgentCreateFlowchartRequest": {
        "type": "object",
        "properties": {
          "percent_bounds": {
            "description": "Optional preferred region as zone percentage",
            "type": "object",
            "properties": {
              "right_pct": {
                "description": "Right edge as 0-1 fraction of zone width",
                "type": "number"
              },
              "top_pct": {
                "description": "Top edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "bottom_pct": {
                "description": "Bottom edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "left_pct": {
                "description": "Left edge as 0-1 fraction of zone width",
                "type": "number"
              }
            }
          },
          "payload": {
            "description": "Flowchart graph specification (required)",
            "type": "object",
            "properties": {
              "nodes": {
                "minItems": 1,
                "maxItems": 50,
                "description": "Flowchart node specifications (required, 1-50)",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "preferred_shape": {
                      "default": "PROCESS",
                      "description": "Flowchart shape type (defaults to PROCESS)",
                      "type": "string",
                      "maxLength": 50,
                      "enum": [
                        "PROCESS",
                        "DECISION",
                        "TERMINATOR",
                        "DATA",
                        "DOCUMENT",
                        "PREDEFINED_PROCESS",
                        "INTERNAL_STORAGE",
                        "ALTERNATE_PROCESS",
                        "MULTI_DOCUMENT",
                        "PREPARATION",
                        "MANUAL_INPUT",
                        "MANUAL_OPERATION",
                        "CONNECTOR",
                        "OFFPAGE_CONNECTOR",
                        "PUNCHED_CARD",
                        "PUNCHED_TAPE",
                        "SUMMING_JUNCTION",
                        "OR",
                        "COLLATE",
                        "SORT",
                        "EXTRACT",
                        "MERGE",
                        "STORED_DATA",
                        "DELAY",
                        "SEQUENTIAL_ACCESS_STORAGE",
                        "MAGNETIC_DISK",
                        "DIRECT_ACCESS_STORAGE",
                        "DISPLAY"
                      ]
                    },
                    "text": {
                      "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                      "description": "Display text for the node (required, non-empty)",
                      "type": "string",
                      "maxLength": 5000
                    },
                    "node_id": {
                      "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                      "description": "Unique node identifier within this flowchart (required, non-empty)",
                      "type": "string",
                      "maxLength": 200
                    }
                  },
                  "required": [
                    "node_id",
                    "text"
                  ]
                }
              },
              "edges": {
                "maxItems": 100,
                "description": "Flowchart edge specifications (optional, max 100)",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "from_node_id": {
                      "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                      "description": "Source node id (required)",
                      "type": "string",
                      "maxLength": 200
                    },
                    "start_marker": {
                      "description": "Marker at the source end (defaults to server default)",
                      "type": "string",
                      "maxLength": 20,
                      "enum": [
                        "NONE",
                        "OPEN",
                        "BLOCK",
                        "CLASSIC",
                        "DIAMOND",
                        "OVAL"
                      ]
                    },
                    "connector_type": {
                      "default": "ELBOW",
                      "description": "Connector routing type (defaults to ELBOW)",
                      "type": "string",
                      "maxLength": 20,
                      "enum": [
                        "LINE",
                        "ELBOW",
                        "CURVE"
                      ]
                    },
                    "label": {
                      "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                      "description": "Optional text label on the connector",
                      "type": "string",
                      "maxLength": 2000
                    },
                    "end_marker": {
                      "description": "Marker at the target end (defaults to server default)",
                      "type": "string",
                      "maxLength": 20,
                      "enum": [
                        "NONE",
                        "OPEN",
                        "BLOCK",
                        "CLASSIC",
                        "DIAMOND",
                        "OVAL"
                      ]
                    },
                    "to_node_id": {
                      "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                      "description": "Target node id (required)",
                      "type": "string",
                      "maxLength": 200
                    }
                  },
                  "required": [
                    "from_node_id",
                    "to_node_id"
                  ]
                }
              },
              "layout_direction": {
                "default": "TOP_DOWN",
                "description": "Layout direction (defaults to TOP_DOWN)",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "TOP_DOWN",
                  "LEFT_RIGHT"
                ]
              },
              "title": {
                "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                "description": "Optional flowchart title",
                "type": "string",
                "maxLength": 1000
              }
            },
            "required": [
              "nodes"
            ]
          },
          "absolute_bounds": {
            "description": "Optional preferred region in absolute canvas units",
            "type": "object",
            "properties": {
              "x": {
                "description": "Left position in canvas units",
                "type": "number"
              },
              "width": {
                "description": "Width in canvas units",
                "type": "number"
              },
              "y": {
                "description": "Top position in canvas units",
                "type": "number"
              },
              "height": {
                "description": "Height in canvas units",
                "type": "number"
              }
            }
          },
          "target": {
            "description": "Optional insertion target (defaults to ZONE_ROOT)",
            "type": "object",
            "properties": {
              "insert_index": {
                "description": "Insertion index within the target container",
                "type": "integer"
              },
              "target_type": {
                "description": "Placement target type: ZONE_ROOT (default) or FRAME",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "ZONE_ROOT",
                  "FRAME"
                ]
              },
              "frame_id": {
                "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                "description": "Frame id (required when target_type is FRAME)",
                "type": "string",
                "maxLength": 200
              }
            }
          }
        },
        "required": [
          "payload"
        ]
      },
      "ObjectRef": {
        "type": "object",
        "properties": {
          "zone_id": {
            "type": "string"
          },
          "object_id": {
            "type": "string"
          },
          "frame_id": {
            "type": "string"
          }
        }
      },
      "CreateTableResult": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string"
          },
          "used_header_row": {
            "type": "boolean"
          },
          "table": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "AgentCreateTableRequest": {
        "type": "object",
        "properties": {
          "percent_bounds": {
            "description": "Optional preferred region as zone percentage",
            "type": "object",
            "properties": {
              "right_pct": {
                "description": "Right edge as 0-1 fraction of zone width",
                "type": "number"
              },
              "top_pct": {
                "description": "Top edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "bottom_pct": {
                "description": "Bottom edge as 0-1 fraction of zone height",
                "type": "number"
              },
              "left_pct": {
                "description": "Left edge as 0-1 fraction of zone width",
                "type": "number"
              }
            }
          },
          "payload": {
            "description": "Table data specification (required)",
            "type": "object",
            "properties": {
              "input": {
                "description": "Tabular data input specification (required)",
                "type": "object",
                "properties": {
                  "raw_text": {
                    "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                    "description": "Raw tabular text data (required)",
                    "type": "string",
                    "maxLength": 500000
                  },
                  "pad_missing_cells": {
                    "description": "Pad ragged rows with empty cells to match max column count",
                    "type": "boolean"
                  },
                  "format_hint": {
                    "default": "AUTO",
                    "description": "Format hint for parsing (defaults to AUTO)",
                    "type": "string",
                    "maxLength": 10,
                    "enum": [
                      "AUTO",
                      "CSV",
                      "TSV",
                      "PIPE"
                    ]
                  },
                  "first_row_is_header": {
                    "description": "Treat the first row as a header row",
                    "type": "boolean"
                  },
                  "trim_whitespace": {
                    "description": "Trim whitespace from cell values",
                    "type": "boolean"
                  }
                },
                "required": [
                  "raw_text"
                ]
              },
              "title": {
                "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                "description": "Optional table title",
                "type": "string",
                "maxLength": 1000
              }
            },
            "required": [
              "input"
            ]
          },
          "absolute_bounds": {
            "description": "Optional preferred region in absolute canvas units",
            "type": "object",
            "properties": {
              "x": {
                "description": "Left position in canvas units",
                "type": "number"
              },
              "width": {
                "description": "Width in canvas units",
                "type": "number"
              },
              "y": {
                "description": "Top position in canvas units",
                "type": "number"
              },
              "height": {
                "description": "Height in canvas units",
                "type": "number"
              }
            }
          },
          "target": {
            "description": "Optional insertion target (defaults to ZONE_ROOT)",
            "type": "object",
            "properties": {
              "insert_index": {
                "description": "Insertion index within the target container",
                "type": "integer"
              },
              "target_type": {
                "description": "Placement target type: ZONE_ROOT (default) or FRAME",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "ZONE_ROOT",
                  "FRAME"
                ]
              },
              "frame_id": {
                "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                "description": "Frame id (required when target_type is FRAME)",
                "type": "string",
                "maxLength": 200
              }
            }
          }
        },
        "required": [
          "payload"
        ]
      }
    },
    "responses": {
      "RateLimitExceededThisOperationAllows30Re": {
        "description": "Rate limit exceeded - this operation allows 30 requests per minute per user",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniError"
            }
          }
        }
      },
      "SuccessfulResponse": {
        "description": "Successful response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniEnvelope"
            }
          }
        }
      },
      "InvalidRequestValidationFailed": {
        "description": "Invalid request - validation failed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniError"
            }
          }
        }
      },
      "NotFoundAResourceNamedInThePathDoesNotEx10": {
        "description": "Not found - a resource named in the path does not exist, or is not visible to the caller",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniError"
            }
          }
        }
      },
      "InternalServerErrorTheRequestWasWellForm": {
        "description": "Internal server error - the request was well-formed but could not be completed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniError"
            }
          }
        }
      },
      "UnauthorizedMissingOrInvalidAccessToken9": {
        "description": "Unauthorized - missing or invalid access token",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniError"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "vani-api-key": {
        "in": "header",
        "name": "x-vani-apikey",
        "description": "Edition-scoped API key. ACCEPTED, NOT YET REQUIRED: the bearer token alone authorises every operation today, which is why each one lists a token-only alternative first and a token-plus-key alternative second. Sending the key is harmless and forward-compatible -- the server reads it, and the requirement is expected to become mandatory, at which point the token-only alternative disappears from this contract. The key never authorises on its own. Read or create your edition's key from the edition settings. The two operations on the /editions collection itself never carry one: a key belongs to an edition, so the calls that list or create editions cannot present it.",
        "type": "apiKey"
      },
      "iam-oauth2-schema": {
        "flows": {
          "authorizationCode": {
            "tokenUrl": "https://accounts.zoho.com/oauth/v2/token",
            "authorizationUrl": "https://accounts.zoho.com/oauth/v2/auth",
            "scopes": {
              "Vani.teams.UPDATE": "Update team memberships, roles, and collaboration settings",
              "Vani.spaces.UPDATE": "Update workspaces, folders, and organizational settings",
              "Vani.spaces.DELETE": "Delete workspaces and folders",
              "Vani.zones.READ": "Read zones including tables, cells, and paragraph content",
              "Vani.editions.UPDATE": "Update existing document editions, modify version metadata and publishing state",
              "Vani.spaces.CREATE": "Create new workspaces, folders, and organizational structure",
              "Vani.teams.CREATE": "Create new teams and assign team memberships",
              "Vani.spaces.READ": "Read workspaces, folders, and organizational structure",
              "Vani.editions.CREATE": "Create new document editions and version snapshots",
              "Vani.zones.CREATE": "Create zones including tables, cells, and paragraph content",
              "Vani.teams.READ": "Read team memberships, roles, and collaboration settings",
              "Vani.editions.READ": "Read document editions, version history, and edition metadata",
              "Vani.teams.DELETE": "Delete teams and remove team memberships"
            }
          }
        },
        "x-vani-data-centre": "com",
        "description": "OAuth 2.0 through Zoho Accounts for the .com data centre (the default). Authorisation is NOT served by the API server -- it is a separate host, and each data centre has its own. If your edition is on another data centre, keep these paths and substitute its host from x-vani-accounts-hosts on this scheme. An OAuth client is valid only in the data centre it was registered in, so register at that data centre's api-console. Note that the accounts host does not simply mirror the API host's TLD: Canada authorises at accounts.zohocloud.ca.",
        "x-vani-accounts-hosts": {
          "com": "accounts.zoho.com",
          "eu": "accounts.zoho.eu",
          "ae": "accounts.zoho.ae",
          "in": "accounts.zoho.in",
          "ca": "accounts.zohocloud.ca",
          "sa": "accounts.zoho.sa",
          "com.au": "accounts.zoho.com.au"
        },
        "type": "oauth2"
      }
    },
    "parameters": {
      "ZoneId": {
        "schema": {
          "type": "string"
        },
        "in": "path",
        "name": "zone_id",
        "description": "The unique identifier of the zone",
        "required": true
      },
      "SpaceId": {
        "schema": {
          "type": "string"
        },
        "in": "path",
        "name": "space_id",
        "description": "The unique identifier of the space",
        "required": true
      },
      "EditionId": {
        "schema": {
          "type": "string"
        },
        "in": "path",
        "name": "edition_id",
        "description": "The unique identifier of the edition",
        "required": true
      }
    }
  },
  "servers": [
    {
      "variables": {
        "dc": {
          "default": "com",
          "description": "Data-centre TLD for your edition.",
          "enum": [
            "com",
            "in",
            "eu",
            "ca",
            "com.au",
            "sa",
            "ae"
          ]
        }
      },
      "description": "Vani API server. Select the data centre your edition is hosted in.",
      "url": "https://api.app.vanihq.{dc}"
    }
  ],
  "openapi": "3.1.0",
  "paths": {
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/flowchart": {
      "post": {
        "summary": "Create a flowchart from node and edge graph specifications",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          }
        ],
        "x-vani-transitional": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentCreateFlowchartRequest"
              }
            }
          }
        },
        "operationId": "createFlowchart",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/CreateFlowchartResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "CREATE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 30
        },
        "tags": [
          "Structured Creation"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/table": {
      "post": {
        "summary": "Create a new table on the board by parsing raw CSV, TSV or pipe-delimited text, with optional header row, whitespace trimming and ragged-row padding. Use for a plain layout table; use createDatabaseTable for a typed, queryable one.",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          }
        ],
        "x-vani-transitional": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentCreateTableRequest"
              }
            }
          }
        },
        "operationId": "createTable",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/CreateTableFromDataResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "CREATE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 30
        },
        "tags": [
          "Structured Creation"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/stack": {
      "post": {
        "summary": "Create a stack structure from an ordered list of item specifications",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          }
        ],
        "x-vani-transitional": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentCreateStackRequest"
              }
            }
          }
        },
        "operationId": "createStack",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/CreateStackFromItemsResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "CREATE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 30
        },
        "tags": [
          "Structured Creation"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/kanban": {
      "post": {
        "summary": "Create a kanban board structure from column and item specifications",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          }
        ],
        "x-vani-transitional": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentCreateKanbanRequest"
              }
            }
          }
        },
        "operationId": "createKanban",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/CreateKanbanFromItemsResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "CREATE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 30
        },
        "tags": [
          "Structured Creation"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/mindmap": {
      "post": {
        "summary": "Create a mindmap structure from a hierarchical outline specification",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          }
        ],
        "x-vani-transitional": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentCreateMindmapRequest"
              }
            }
          }
        },
        "operationId": "createMindmap",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/CreateMindmapFromOutlineResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "CREATE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 30
        },
        "tags": [
          "Structured Creation"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/create/database-table": {
      "post": {
        "summary": "Create a typed database_table from raw tabular text data",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          }
        ],
        "x-vani-transitional": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentCreateDatabaseTableRequest"
              }
            }
          }
        },
        "operationId": "createDatabaseTable",
        "responses": {
          "200": {
            "$ref": "#/components/responses/SuccessfulResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "CREATE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 30
        },
        "tags": [
          "Structured Creation"
        ]
      }
    }
  },
  "info": {
    "contact": {
      "name": "Vani API Support",
      "url": "https://www.vanihq.com/resources/api/doc/"
    },
    "description": "Build whole structures in one call — mindmaps, flowcharts, kanban boards, stacks, and tables.",
    "title": "Structures",
    "version": "1.0.0"
  },
  "tags": [
    {
      "name": "Structured Creation",
      "description": "Create mindmaps, flowcharts, kanban boards, stacks, tables, and database tables in one call."
    }
  ]
}