{
  "components": {
    "schemas": {
      "AgentDatabaseTableQueryRecordsRequest": {
        "type": "object",
        "properties": {
          "query": {
            "description": "Query spec (filter / selection / page)",
            "type": "object",
            "properties": {
              "filter": {
                "description": "Row filter; unset = all rows",
                "type": "object",
                "properties": {
                  "mode": {
                    "description": "AND (default) / OR",
                    "type": "string",
                    "maxLength": 5,
                    "enum": [
                      "AND",
                      "OR"
                    ]
                  },
                  "conditions": {
                    "maxItems": 200,
                    "description": "Conditions combined by mode",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "text_match": {
                          "description": "Substring match",
                          "type": "object",
                          "properties": {
                            "op": {
                              "description": "CONTAINS / STARTS_WITH / ENDS_WITH",
                              "type": "string",
                              "maxLength": 20,
                              "enum": [
                                "CONTAINS",
                                "STARTS_WITH",
                                "ENDS_WITH"
                              ]
                            },
                            "case_sensitive": {
                              "description": "Default false (case-insensitive)",
                              "type": "boolean"
                            },
                            "text": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "Search text",
                              "type": "string",
                              "maxLength": 5000
                            }
                          }
                        },
                        "comparison": {
                          "description": "Scalar comparison",
                          "type": "object",
                          "properties": {
                            "op": {
                              "description": "EQ / NEQ / GT / GTE / LT / LTE",
                              "type": "string",
                              "maxLength": 10,
                              "enum": [
                                "EQ",
                                "NEQ",
                                "GT",
                                "GTE",
                                "LT",
                                "LTE"
                              ]
                            },
                            "operand": {
                              "description": "Right-hand side",
                              "type": "object",
                              "properties": {
                                "column": {
                                  "description": "Another column in this table",
                                  "type": "object",
                                  "properties": {
                                    "column_id": {
                                      "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                                      "description": "Column id",
                                      "type": "string",
                                      "maxLength": 200
                                    }
                                  },
                                  "required": [
                                    "column_id"
                                  ]
                                },
                                "value": {
                                  "description": "Literal comparand",
                                  "type": "object",
                                  "properties": {
                                    "date": {
                                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                      "description": "DATE value",
                                      "type": "string",
                                      "maxLength": 100
                                    },
                                    "select": {
                                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                      "description": "SELECT: chosen ColumnOption id",
                                      "type": "string",
                                      "maxLength": 500
                                    },
                                    "rating": {
                                      "description": "RATING value",
                                      "type": "integer"
                                    },
                                    "toggle": {
                                      "description": "TOGGLE value",
                                      "type": "boolean"
                                    },
                                    "url": {
                                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                      "description": "URL value",
                                      "type": "string",
                                      "maxLength": 2000
                                    },
                                    "relation": {
                                      "description": "RELATION: linked row ids",
                                      "type": "object",
                                      "properties": {
                                        "row_ids": {
                                          "maxItems": 200,
                                          "description": "Linked row ids in the related table",
                                          "type": "array",
                                          "items": {
                                            "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                            "type": "string",
                                            "maxLength": 200
                                          }
                                        }
                                      }
                                    },
                                    "number": {
                                      "description": "NUMBER value",
                                      "type": "number"
                                    },
                                    "multi_select": {
                                      "description": "MULTI_SELECT: chosen option ids",
                                      "type": "object",
                                      "properties": {
                                        "option_ids": {
                                          "maxItems": 200,
                                          "description": "Selected ColumnOption ids",
                                          "type": "array",
                                          "items": {
                                            "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                            "type": "string",
                                            "maxLength": 200
                                          }
                                        }
                                      }
                                    },
                                    "phone": {
                                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                      "description": "PHONE value",
                                      "type": "string",
                                      "maxLength": 100
                                    },
                                    "person": {
                                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                      "description": "PERSON value",
                                      "type": "string",
                                      "maxLength": 500
                                    },
                                    "checkbox": {
                                      "description": "CHECKBOX value",
                                      "type": "boolean"
                                    },
                                    "text": {
                                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                      "description": "TEXT value",
                                      "type": "string",
                                      "maxLength": 50000
                                    },
                                    "category": {
                                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                      "description": "CATEGORY: chosen ColumnOption id",
                                      "type": "string",
                                      "maxLength": 500
                                    },
                                    "email": {
                                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                      "description": "EMAIL value",
                                      "type": "string",
                                      "maxLength": 500
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "emptiness": {
                          "description": "Empty / not-empty",
                          "type": "object",
                          "properties": {
                            "op": {
                              "description": "IS_EMPTY / IS_NOT_EMPTY",
                              "type": "string",
                              "maxLength": 20,
                              "enum": [
                                "IS_EMPTY",
                                "IS_NOT_EMPTY"
                              ]
                            }
                          }
                        },
                        "column": {
                          "description": "Column under test",
                          "type": "object",
                          "properties": {
                            "column_id": {
                              "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                              "description": "Column id",
                              "type": "string",
                              "maxLength": 200
                            }
                          },
                          "required": [
                            "column_id"
                          ]
                        },
                        "membership": {
                          "description": "Multi-select / relation contains",
                          "type": "object",
                          "properties": {
                            "mode": {
                              "description": "HAS_ANY / HAS_ALL / HAS_NONE",
                              "type": "string",
                              "maxLength": 20,
                              "enum": [
                                "HAS_ANY",
                                "HAS_ALL",
                                "HAS_NONE"
                              ]
                            },
                            "values": {
                              "maxItems": 200,
                              "description": "Option ids or linked row ids",
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "date": {
                                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                    "description": "DATE value",
                                    "type": "string",
                                    "maxLength": 100
                                  },
                                  "select": {
                                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                    "description": "SELECT: chosen ColumnOption id",
                                    "type": "string",
                                    "maxLength": 500
                                  },
                                  "rating": {
                                    "description": "RATING value",
                                    "type": "integer"
                                  },
                                  "toggle": {
                                    "description": "TOGGLE value",
                                    "type": "boolean"
                                  },
                                  "url": {
                                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                    "description": "URL value",
                                    "type": "string",
                                    "maxLength": 2000
                                  },
                                  "relation": {
                                    "description": "RELATION: linked row ids",
                                    "type": "object",
                                    "properties": {
                                      "row_ids": {
                                        "maxItems": 200,
                                        "description": "Linked row ids in the related table",
                                        "type": "array",
                                        "items": {
                                          "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                          "type": "string",
                                          "maxLength": 200
                                        }
                                      }
                                    }
                                  },
                                  "number": {
                                    "description": "NUMBER value",
                                    "type": "number"
                                  },
                                  "multi_select": {
                                    "description": "MULTI_SELECT: chosen option ids",
                                    "type": "object",
                                    "properties": {
                                      "option_ids": {
                                        "maxItems": 200,
                                        "description": "Selected ColumnOption ids",
                                        "type": "array",
                                        "items": {
                                          "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                          "type": "string",
                                          "maxLength": 200
                                        }
                                      }
                                    }
                                  },
                                  "phone": {
                                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                    "description": "PHONE value",
                                    "type": "string",
                                    "maxLength": 100
                                  },
                                  "person": {
                                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                    "description": "PERSON value",
                                    "type": "string",
                                    "maxLength": 500
                                  },
                                  "checkbox": {
                                    "description": "CHECKBOX value",
                                    "type": "boolean"
                                  },
                                  "text": {
                                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                    "description": "TEXT value",
                                    "type": "string",
                                    "maxLength": 50000
                                  },
                                  "category": {
                                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                    "description": "CATEGORY: chosen ColumnOption id",
                                    "type": "string",
                                    "maxLength": 500
                                  },
                                  "email": {
                                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                    "description": "EMAIL value",
                                    "type": "string",
                                    "maxLength": 500
                                  }
                                }
                              }
                            }
                          }
                        },
                        "between": {
                          "description": "Inclusive range",
                          "type": "object",
                          "properties": {
                            "high": {
                              "description": "Inclusive upper bound",
                              "type": "object",
                              "properties": {
                                "date": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "DATE value",
                                  "type": "string",
                                  "maxLength": 100
                                },
                                "select": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "SELECT: chosen ColumnOption id",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "rating": {
                                  "description": "RATING value",
                                  "type": "integer"
                                },
                                "toggle": {
                                  "description": "TOGGLE value",
                                  "type": "boolean"
                                },
                                "url": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "URL value",
                                  "type": "string",
                                  "maxLength": 2000
                                },
                                "relation": {
                                  "description": "RELATION: linked row ids",
                                  "type": "object",
                                  "properties": {
                                    "row_ids": {
                                      "maxItems": 200,
                                      "description": "Linked row ids in the related table",
                                      "type": "array",
                                      "items": {
                                        "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                        "type": "string",
                                        "maxLength": 200
                                      }
                                    }
                                  }
                                },
                                "number": {
                                  "description": "NUMBER value",
                                  "type": "number"
                                },
                                "multi_select": {
                                  "description": "MULTI_SELECT: chosen option ids",
                                  "type": "object",
                                  "properties": {
                                    "option_ids": {
                                      "maxItems": 200,
                                      "description": "Selected ColumnOption ids",
                                      "type": "array",
                                      "items": {
                                        "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                        "type": "string",
                                        "maxLength": 200
                                      }
                                    }
                                  }
                                },
                                "phone": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "PHONE value",
                                  "type": "string",
                                  "maxLength": 100
                                },
                                "person": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "PERSON value",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "checkbox": {
                                  "description": "CHECKBOX value",
                                  "type": "boolean"
                                },
                                "text": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "TEXT value",
                                  "type": "string",
                                  "maxLength": 50000
                                },
                                "category": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "CATEGORY: chosen ColumnOption id",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "email": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "EMAIL value",
                                  "type": "string",
                                  "maxLength": 500
                                }
                              }
                            },
                            "low": {
                              "description": "Inclusive lower bound",
                              "type": "object",
                              "properties": {
                                "date": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "DATE value",
                                  "type": "string",
                                  "maxLength": 100
                                },
                                "select": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "SELECT: chosen ColumnOption id",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "rating": {
                                  "description": "RATING value",
                                  "type": "integer"
                                },
                                "toggle": {
                                  "description": "TOGGLE value",
                                  "type": "boolean"
                                },
                                "url": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "URL value",
                                  "type": "string",
                                  "maxLength": 2000
                                },
                                "relation": {
                                  "description": "RELATION: linked row ids",
                                  "type": "object",
                                  "properties": {
                                    "row_ids": {
                                      "maxItems": 200,
                                      "description": "Linked row ids in the related table",
                                      "type": "array",
                                      "items": {
                                        "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                        "type": "string",
                                        "maxLength": 200
                                      }
                                    }
                                  }
                                },
                                "number": {
                                  "description": "NUMBER value",
                                  "type": "number"
                                },
                                "multi_select": {
                                  "description": "MULTI_SELECT: chosen option ids",
                                  "type": "object",
                                  "properties": {
                                    "option_ids": {
                                      "maxItems": 200,
                                      "description": "Selected ColumnOption ids",
                                      "type": "array",
                                      "items": {
                                        "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                        "type": "string",
                                        "maxLength": 200
                                      }
                                    }
                                  }
                                },
                                "phone": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "PHONE value",
                                  "type": "string",
                                  "maxLength": 100
                                },
                                "person": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "PERSON value",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "checkbox": {
                                  "description": "CHECKBOX value",
                                  "type": "boolean"
                                },
                                "text": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "TEXT value",
                                  "type": "string",
                                  "maxLength": 50000
                                },
                                "category": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "CATEGORY: chosen ColumnOption id",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "email": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "EMAIL value",
                                  "type": "string",
                                  "maxLength": 500
                                }
                              }
                            }
                          }
                        }
                      },
                      "required": [
                        "column"
                      ]
                    }
                  }
                }
              },
              "page": {
                "description": "Paging",
                "type": "object",
                "properties": {
                  "offset": {
                    "description": "Rows to skip",
                    "type": "integer"
                  },
                  "limit": {
                    "description": "Max rows; 0 = server default",
                    "type": "integer"
                  }
                }
              },
              "rows": {
                "description": "Row selection arm",
                "type": "object",
                "properties": {
                  "columns": {
                    "maxItems": 50,
                    "description": "Projection; empty = all columns",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "column_id": {
                          "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                          "description": "Column id",
                          "type": "string",
                          "maxLength": 200
                        }
                      },
                      "required": [
                        "column_id"
                      ]
                    }
                  },
                  "sort": {
                    "maxItems": 50,
                    "description": "Sort order",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "column": {
                          "description": "Sort column",
                          "type": "object",
                          "properties": {
                            "column_id": {
                              "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                              "description": "Column id",
                              "type": "string",
                              "maxLength": 200
                            }
                          },
                          "required": [
                            "column_id"
                          ]
                        },
                        "order": {
                          "description": "ASC (default) / DESC",
                          "type": "string",
                          "maxLength": 5,
                          "enum": [
                            "ASC",
                            "DESC"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "aggregate": {
                "description": "Aggregate selection arm",
                "type": "object",
                "properties": {
                  "having": {
                    "maxItems": 200,
                    "description": "Post-aggregation filter",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "op": {
                          "description": "Comparison operator",
                          "type": "string",
                          "maxLength": 10,
                          "enum": [
                            "EQ",
                            "NEQ",
                            "GT",
                            "GTE",
                            "LT",
                            "LTE"
                          ]
                        },
                        "aggregation": {
                          "description": "Aggregate under test",
                          "type": "object",
                          "properties": {
                            "concat_separator": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "Separator for CONCAT / CONCAT_UNIQUE",
                              "type": "string",
                              "maxLength": 20
                            },
                            "fn": {
                              "description": "Summary function",
                              "type": "object",
                              "properties": {
                                "date": {
                                  "description": "DATE columns",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "EARLIEST",
                                    "LATEST",
                                    "DATE_RANGE"
                                  ]
                                },
                                "number": {
                                  "description": "NUMBER / RATING columns",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "SUM",
                                    "AVG",
                                    "MIN",
                                    "MAX",
                                    "MEDIAN",
                                    "RANGE"
                                  ]
                                },
                                "boolean": {
                                  "description": "CHECKBOX / TOGGLE columns",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "CHECKED",
                                    "UNCHECKED",
                                    "PERCENT_CHECKED",
                                    "PERCENT_UNCHECKED"
                                  ]
                                },
                                "common": {
                                  "description": "Applies to any column type",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "COUNT",
                                    "COUNT_EMPTY",
                                    "COUNT_NOT_EMPTY",
                                    "COUNT_UNIQUE",
                                    "PERCENT_EMPTY",
                                    "PERCENT_NOT_EMPTY"
                                  ]
                                },
                                "text": {
                                  "description": "Text and string-like columns",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "CONCAT",
                                    "CONCAT_UNIQUE"
                                  ]
                                }
                              }
                            },
                            "column": {
                              "description": "Column aggregated",
                              "type": "object",
                              "properties": {
                                "column_id": {
                                  "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                                  "description": "Column id",
                                  "type": "string",
                                  "maxLength": 200
                                }
                              },
                              "required": [
                                "column_id"
                              ]
                            }
                          }
                        },
                        "value": {
                          "description": "Comparand",
                          "type": "object",
                          "properties": {
                            "date": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "DATE value",
                              "type": "string",
                              "maxLength": 100
                            },
                            "select": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "SELECT: chosen ColumnOption id",
                              "type": "string",
                              "maxLength": 500
                            },
                            "rating": {
                              "description": "RATING value",
                              "type": "integer"
                            },
                            "toggle": {
                              "description": "TOGGLE value",
                              "type": "boolean"
                            },
                            "url": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "URL value",
                              "type": "string",
                              "maxLength": 2000
                            },
                            "relation": {
                              "description": "RELATION: linked row ids",
                              "type": "object",
                              "properties": {
                                "row_ids": {
                                  "maxItems": 200,
                                  "description": "Linked row ids in the related table",
                                  "type": "array",
                                  "items": {
                                    "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                    "type": "string",
                                    "maxLength": 200
                                  }
                                }
                              }
                            },
                            "number": {
                              "description": "NUMBER value",
                              "type": "number"
                            },
                            "multi_select": {
                              "description": "MULTI_SELECT: chosen option ids",
                              "type": "object",
                              "properties": {
                                "option_ids": {
                                  "maxItems": 200,
                                  "description": "Selected ColumnOption ids",
                                  "type": "array",
                                  "items": {
                                    "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                    "type": "string",
                                    "maxLength": 200
                                  }
                                }
                              }
                            },
                            "phone": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "PHONE value",
                              "type": "string",
                              "maxLength": 100
                            },
                            "person": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "PERSON value",
                              "type": "string",
                              "maxLength": 500
                            },
                            "checkbox": {
                              "description": "CHECKBOX value",
                              "type": "boolean"
                            },
                            "text": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "TEXT value",
                              "type": "string",
                              "maxLength": 50000
                            },
                            "category": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "CATEGORY: chosen ColumnOption id",
                              "type": "string",
                              "maxLength": 500
                            },
                            "email": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "EMAIL value",
                              "type": "string",
                              "maxLength": 500
                            }
                          }
                        }
                      }
                    }
                  },
                  "group_by": {
                    "maxItems": 50,
                    "description": "Grouping columns",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "column_id": {
                          "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                          "description": "Column id",
                          "type": "string",
                          "maxLength": 200
                        }
                      },
                      "required": [
                        "column_id"
                      ]
                    }
                  },
                  "sort": {
                    "maxItems": 200,
                    "description": "Group ordering",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "group_by_column": {
                          "description": "Order by a grouping column",
                          "type": "object",
                          "properties": {
                            "column_id": {
                              "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                              "description": "Column id",
                              "type": "string",
                              "maxLength": 200
                            }
                          },
                          "required": [
                            "column_id"
                          ]
                        },
                        "aggregation": {
                          "description": "Order by an aggregate",
                          "type": "object",
                          "properties": {
                            "concat_separator": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "Separator for CONCAT / CONCAT_UNIQUE",
                              "type": "string",
                              "maxLength": 20
                            },
                            "fn": {
                              "description": "Summary function",
                              "type": "object",
                              "properties": {
                                "date": {
                                  "description": "DATE columns",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "EARLIEST",
                                    "LATEST",
                                    "DATE_RANGE"
                                  ]
                                },
                                "number": {
                                  "description": "NUMBER / RATING columns",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "SUM",
                                    "AVG",
                                    "MIN",
                                    "MAX",
                                    "MEDIAN",
                                    "RANGE"
                                  ]
                                },
                                "boolean": {
                                  "description": "CHECKBOX / TOGGLE columns",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "CHECKED",
                                    "UNCHECKED",
                                    "PERCENT_CHECKED",
                                    "PERCENT_UNCHECKED"
                                  ]
                                },
                                "common": {
                                  "description": "Applies to any column type",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "COUNT",
                                    "COUNT_EMPTY",
                                    "COUNT_NOT_EMPTY",
                                    "COUNT_UNIQUE",
                                    "PERCENT_EMPTY",
                                    "PERCENT_NOT_EMPTY"
                                  ]
                                },
                                "text": {
                                  "description": "Text and string-like columns",
                                  "type": "string",
                                  "maxLength": 40,
                                  "enum": [
                                    "CONCAT",
                                    "CONCAT_UNIQUE"
                                  ]
                                }
                              }
                            },
                            "column": {
                              "description": "Column aggregated",
                              "type": "object",
                              "properties": {
                                "column_id": {
                                  "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                                  "description": "Column id",
                                  "type": "string",
                                  "maxLength": 200
                                }
                              },
                              "required": [
                                "column_id"
                              ]
                            }
                          }
                        },
                        "order": {
                          "description": "ASC / DESC",
                          "type": "string",
                          "maxLength": 5,
                          "enum": [
                            "ASC",
                            "DESC"
                          ]
                        }
                      }
                    }
                  },
                  "aggregations": {
                    "maxItems": 200,
                    "description": "Summary functions",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "concat_separator": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "Separator for CONCAT / CONCAT_UNIQUE",
                          "type": "string",
                          "maxLength": 20
                        },
                        "fn": {
                          "description": "Summary function",
                          "type": "object",
                          "properties": {
                            "date": {
                              "description": "DATE columns",
                              "type": "string",
                              "maxLength": 40,
                              "enum": [
                                "EARLIEST",
                                "LATEST",
                                "DATE_RANGE"
                              ]
                            },
                            "number": {
                              "description": "NUMBER / RATING columns",
                              "type": "string",
                              "maxLength": 40,
                              "enum": [
                                "SUM",
                                "AVG",
                                "MIN",
                                "MAX",
                                "MEDIAN",
                                "RANGE"
                              ]
                            },
                            "boolean": {
                              "description": "CHECKBOX / TOGGLE columns",
                              "type": "string",
                              "maxLength": 40,
                              "enum": [
                                "CHECKED",
                                "UNCHECKED",
                                "PERCENT_CHECKED",
                                "PERCENT_UNCHECKED"
                              ]
                            },
                            "common": {
                              "description": "Applies to any column type",
                              "type": "string",
                              "maxLength": 40,
                              "enum": [
                                "COUNT",
                                "COUNT_EMPTY",
                                "COUNT_NOT_EMPTY",
                                "COUNT_UNIQUE",
                                "PERCENT_EMPTY",
                                "PERCENT_NOT_EMPTY"
                              ]
                            },
                            "text": {
                              "description": "Text and string-like columns",
                              "type": "string",
                              "maxLength": 40,
                              "enum": [
                                "CONCAT",
                                "CONCAT_UNIQUE"
                              ]
                            }
                          }
                        },
                        "column": {
                          "description": "Column aggregated",
                          "type": "object",
                          "properties": {
                            "column_id": {
                              "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                              "description": "Column id",
                              "type": "string",
                              "maxLength": 200
                            }
                          },
                          "required": [
                            "column_id"
                          ]
                        }
                      }
                    }
                  },
                  "include_record_ids": {
                    "description": "Return each group's row ids",
                    "type": "boolean"
                  }
                }
              }
            }
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table"
        ]
      },
      "GetParagraphTextPayload": {
        "type": "object",
        "properties": {
          "range": {
            "$ref": "#/components/schemas/ParagraphIndexRange"
          }
        }
      },
      "AgentDatabaseTableUpdateColumnRequest": {
        "type": "object",
        "properties": {
          "set_constraints": {
            "description": "Set-constraints change (required/unique)",
            "type": "object",
            "properties": {
              "unique": {
                "description": "Values must be unique across rows",
                "type": "boolean"
              },
              "required": {
                "description": "Value must be present",
                "type": "boolean"
              }
            }
          },
          "retype": {
            "description": "Retype change (target type)",
            "type": "object",
            "properties": {
              "new_type": {
                "description": "New column type",
                "type": "string",
                "maxLength": 40,
                "enum": [
                  "TEXT",
                  "NUMBER",
                  "CHECKBOX",
                  "TOGGLE",
                  "SELECT",
                  "MULTI_SELECT",
                  "CATEGORY",
                  "DATE",
                  "PERSON",
                  "PHONE",
                  "EMAIL",
                  "URL",
                  "RATING",
                  "RELATION",
                  "LOOKUP",
                  "ROLLUP"
                ]
              }
            },
            "required": [
              "new_type"
            ]
          },
          "rename": {
            "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
            "description": "New column name (rename change)",
            "type": "string",
            "maxLength": 2000
          },
          "column": {
            "description": "Column ref (column id)",
            "type": "object",
            "properties": {
              "column_id": {
                "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                "description": "Column id",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "column_id"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          },
          "set_options": {
            "description": "Set-options change (full option list)",
            "type": "object",
            "properties": {
              "options": {
                "maxItems": 200,
                "description": "Full option list",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "description": "Option colour",
                      "type": "object",
                      "properties": {
                        "hsb": {
                          "description": "HSB color value",
                          "type": "object",
                          "properties": {
                            "saturation": {
                              "description": "Saturation 0-1",
                              "type": "number"
                            },
                            "brightness": {
                              "description": "Brightness 0-1",
                              "type": "number"
                            },
                            "hue": {
                              "description": "Hue in degrees",
                              "type": "number"
                            }
                          }
                        },
                        "hex": {
                          "description": "Hex color value",
                          "type": "object",
                          "properties": {
                            "value": {
                              "pattern": "^#?[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$",
                              "description": "Hex color literal such as #8B4513",
                              "type": "string",
                              "maxLength": 50
                            }
                          }
                        },
                        "rgb": {
                          "description": "RGB color value",
                          "type": "object",
                          "properties": {
                            "red": {
                              "description": "Red channel 0-255",
                              "type": "integer"
                            },
                            "green": {
                              "description": "Green channel 0-255",
                              "type": "integer"
                            },
                            "blue": {
                              "description": "Blue channel 0-255",
                              "type": "integer"
                            }
                          }
                        }
                      }
                    },
                    "id": {
                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                      "description": "Option id — equal to the option's current label; send it to rename",
                      "type": "string",
                      "maxLength": 500
                    },
                    "value": {
                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                      "description": "Option label",
                      "type": "string",
                      "maxLength": 500
                    }
                  }
                }
              }
            },
            "required": [
              "options"
            ]
          },
          "set_default": {
            "description": "Set-default change: the default cell value itself",
            "type": "object",
            "properties": {
              "value": {
                "description": "The typed cell value",
                "type": "object",
                "properties": {
                  "date": {
                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                    "description": "DATE value",
                    "type": "string",
                    "maxLength": 100
                  },
                  "select": {
                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                    "description": "SELECT: chosen ColumnOption id",
                    "type": "string",
                    "maxLength": 500
                  },
                  "rating": {
                    "description": "RATING value",
                    "type": "integer"
                  },
                  "toggle": {
                    "description": "TOGGLE value",
                    "type": "boolean"
                  },
                  "url": {
                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                    "description": "URL value",
                    "type": "string",
                    "maxLength": 2000
                  },
                  "relation": {
                    "description": "RELATION: linked row ids",
                    "type": "object",
                    "properties": {
                      "row_ids": {
                        "maxItems": 200,
                        "description": "Linked row ids in the related table",
                        "type": "array",
                        "items": {
                          "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                          "type": "string",
                          "maxLength": 200
                        }
                      }
                    }
                  },
                  "number": {
                    "description": "NUMBER value",
                    "type": "number"
                  },
                  "multi_select": {
                    "description": "MULTI_SELECT: chosen option ids",
                    "type": "object",
                    "properties": {
                      "option_ids": {
                        "maxItems": 200,
                        "description": "Selected ColumnOption ids",
                        "type": "array",
                        "items": {
                          "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                          "type": "string",
                          "maxLength": 200
                        }
                      }
                    }
                  },
                  "phone": {
                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                    "description": "PHONE value",
                    "type": "string",
                    "maxLength": 100
                  },
                  "person": {
                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                    "description": "PERSON value",
                    "type": "string",
                    "maxLength": 500
                  },
                  "checkbox": {
                    "description": "CHECKBOX value",
                    "type": "boolean"
                  },
                  "text": {
                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                    "description": "TEXT value",
                    "type": "string",
                    "maxLength": 50000
                  },
                  "category": {
                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                    "description": "CATEGORY: chosen ColumnOption id",
                    "type": "string",
                    "maxLength": 500
                  },
                  "email": {
                    "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                    "description": "EMAIL value",
                    "type": "string",
                    "maxLength": 500
                  }
                }
              }
            }
          }
        },
        "required": [
          "table",
          "column"
        ]
      },
      "GetCellTextResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/GetTextResult"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "UnmergeCellResult": {
        "type": "object",
        "properties": {
          "anchor_cell": {
            "$ref": "#/components/schemas/TableCellRef"
          },
          "unmerged_range": {
            "$ref": "#/components/schemas/CellRectRange"
          }
        }
      },
      "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"
          }
        }
      },
      "CellRectRange": {
        "type": "object",
        "properties": {
          "end_column_index": {
            "format": "int32",
            "type": "string"
          },
          "start_column_index": {
            "format": "int32",
            "type": "string"
          },
          "start_row_index": {
            "format": "int32",
            "type": "string"
          },
          "end_row_index": {
            "format": "int32",
            "type": "string"
          }
        }
      },
      "GetParagraphTextResult": {
        "type": "object",
        "properties": {
          "paragraphs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParagraphTextItem"
            }
          }
        }
      },
      "AgentDeleteRowsRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "DeleteRows payload",
            "type": "object",
            "properties": {
              "range": {
                "description": "Row range to delete",
                "type": "object",
                "properties": {
                  "start_index": {
                    "description": "Inclusive start table index (row or column)",
                    "type": "integer"
                  },
                  "end_index": {
                    "description": "Exclusive end table index",
                    "type": "integer"
                  }
                },
                "required": [
                  "start_index",
                  "end_index"
                ]
              }
            },
            "required": [
              "range"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "payload"
        ]
      },
      "GetCellParagraphCountResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/GetParagraphCountResult"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "GetCellParagraphCountRequest": {
        "type": "object",
        "properties": {
          "cell": {
            "$ref": "#/components/schemas/TableCellRef"
          },
          "table": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "GetTextLengthResult": {
        "type": "object",
        "properties": {
          "length": {
            "format": "int32",
            "type": "string"
          }
        }
      },
      "ObjectRef": {
        "type": "object",
        "properties": {
          "zone_id": {
            "type": "string"
          },
          "object_id": {
            "type": "string"
          },
          "frame_id": {
            "type": "string"
          }
        }
      },
      "GetCellTextLengthRequest": {
        "type": "object",
        "properties": {
          "cell": {
            "$ref": "#/components/schemas/TableCellRef"
          },
          "table": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "GetCellTextLengthResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/GetTextLengthResult"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "ParagraphIndexRange": {
        "type": "object",
        "properties": {
          "end_paragraph_index": {
            "format": "int32",
            "type": "string"
          },
          "start_paragraph_index": {
            "format": "int32",
            "type": "string"
          }
        }
      },
      "AgentInsertColumnsRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "InsertColumns payload",
            "type": "object",
            "properties": {
              "anchor_index": {
                "description": "Anchor column index in [0, column_count - 1]",
                "type": "integer"
              },
              "count": {
                "description": "Number of columns to insert (> 0)",
                "type": "integer"
              },
              "position": {
                "description": "Insert position relative to anchor_index",
                "type": "string",
                "maxLength": 40,
                "enum": [
                  "INSERT_POSITION_UNSPECIFIED",
                  "BEFORE",
                  "AFTER"
                ]
              }
            },
            "required": [
              "anchor_index"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "payload"
        ]
      },
      "GetTextPayload": {
        "type": "object",
        "x-vani-oneof-groups": [
          {
            "members": [
              "range",
              "all_text"
            ],
            "name": "target"
          }
        ],
        "properties": {
          "all_text": {
            "type": "boolean"
          },
          "range": {
            "$ref": "#/components/schemas/TextRange"
          }
        }
      },
      "GetCellTextRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "$ref": "#/components/schemas/GetCellTextPayload"
          },
          "cell": {
            "$ref": "#/components/schemas/TableCellRef"
          },
          "table": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "TextRange": {
        "type": "object",
        "properties": {
          "start_index": {
            "format": "int32",
            "type": "string"
          },
          "end_index": {
            "format": "int32",
            "type": "string"
          }
        }
      },
      "AgentDatabaseTableUpdateRecordRequest": {
        "type": "object",
        "properties": {
          "cells": {
            "minItems": 1,
            "maxItems": 50,
            "description": "Cell assignments to set or clear",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "column_id": {
                  "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                  "description": "Target column id",
                  "type": "string",
                  "maxLength": 200
                },
                "column": {
                  "description": "Target column ref",
                  "type": "object",
                  "properties": {
                    "column_id": {
                      "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                      "description": "Column id",
                      "type": "string",
                      "maxLength": 200
                    }
                  },
                  "required": [
                    "column_id"
                  ]
                },
                "clear": {
                  "description": "Clear the cell",
                  "type": "object",
                  "properties": {}
                },
                "value": {
                  "description": "Value to set",
                  "type": "object",
                  "properties": {
                    "value": {
                      "description": "The typed cell value",
                      "type": "object",
                      "properties": {
                        "date": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "DATE value",
                          "type": "string",
                          "maxLength": 100
                        },
                        "select": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "SELECT: chosen ColumnOption id",
                          "type": "string",
                          "maxLength": 500
                        },
                        "rating": {
                          "description": "RATING value",
                          "type": "integer"
                        },
                        "toggle": {
                          "description": "TOGGLE value",
                          "type": "boolean"
                        },
                        "url": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "URL value",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "relation": {
                          "description": "RELATION: linked row ids",
                          "type": "object",
                          "properties": {
                            "row_ids": {
                              "maxItems": 200,
                              "description": "Linked row ids in the related table",
                              "type": "array",
                              "items": {
                                "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                "type": "string",
                                "maxLength": 200
                              }
                            }
                          }
                        },
                        "number": {
                          "description": "NUMBER value",
                          "type": "number"
                        },
                        "multi_select": {
                          "description": "MULTI_SELECT: chosen option ids",
                          "type": "object",
                          "properties": {
                            "option_ids": {
                              "maxItems": 200,
                              "description": "Selected ColumnOption ids",
                              "type": "array",
                              "items": {
                                "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                "type": "string",
                                "maxLength": 200
                              }
                            }
                          }
                        },
                        "phone": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "PHONE value",
                          "type": "string",
                          "maxLength": 100
                        },
                        "person": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "PERSON value",
                          "type": "string",
                          "maxLength": 500
                        },
                        "checkbox": {
                          "description": "CHECKBOX value",
                          "type": "boolean"
                        },
                        "text": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "TEXT value",
                          "type": "string",
                          "maxLength": 50000
                        },
                        "category": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "CATEGORY: chosen ColumnOption id",
                          "type": "string",
                          "maxLength": 500
                        },
                        "email": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "EMAIL value",
                          "type": "string",
                          "maxLength": 500
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "record": {
            "description": "Record ref (row id)",
            "type": "object",
            "properties": {
              "row_id": {
                "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                "description": "Row id",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "row_id"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "record",
          "cells"
        ]
      },
      "MergeCellsResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/MergeCellsResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentUnmergeCellRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "UnmergeCell payload. Must contain 'cell' ({row_index, column_index}) — do NOT use 'range'. Example: {\"cell\": {\"row_index\": 0, \"column_index\": 1}}",
            "type": "object",
            "properties": {
              "cell": {
                "description": "Any cell within the merged region to unmerge, specified as {row_index, column_index}. This must be a 'cell' object — do NOT use a 'range' object here.",
                "type": "object",
                "properties": {
                  "row_index": {
                    "description": "Zero-based row index",
                    "type": "integer"
                  },
                  "column_index": {
                    "description": "Zero-based column index",
                    "type": "integer"
                  }
                }
              }
            },
            "required": [
              "cell"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "payload"
        ]
      },
      "EditCellTextResult": {
        "type": "object",
        "properties": {
          "text": {
            "$ref": "#/components/schemas/EditTextResult"
          }
        }
      },
      "DeleteRowsResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/TableSizeResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "GetTextResult": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          }
        }
      },
      "GetTableSizeRequest": {
        "type": "object",
        "properties": {
          "table": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "GetCellParagraphTextRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "$ref": "#/components/schemas/GetCellParagraphTextPayload"
          },
          "cell": {
            "$ref": "#/components/schemas/TableCellRef"
          },
          "table": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "GetCellParagraphTextResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/GetParagraphTextResult"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentMergeCellsRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "MergeCells payload",
            "type": "object",
            "properties": {
              "range": {
                "description": "Rectangular cell range to merge",
                "type": "object",
                "properties": {
                  "end_column_index": {
                    "description": "Exclusive end column index",
                    "type": "integer"
                  },
                  "start_column_index": {
                    "description": "Inclusive start column index",
                    "type": "integer"
                  },
                  "start_row_index": {
                    "description": "Inclusive start row index",
                    "type": "integer"
                  },
                  "end_row_index": {
                    "description": "Exclusive end row index",
                    "type": "integer"
                  }
                },
                "required": [
                  "start_row_index",
                  "end_row_index",
                  "start_column_index",
                  "end_column_index"
                ]
              }
            },
            "required": [
              "range"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "payload"
        ]
      },
      "AgentError": {
        "type": "object",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/AgentErrorCode"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "MergeCellsResult": {
        "type": "object",
        "properties": {
          "anchor_cell": {
            "$ref": "#/components/schemas/TableCellRef"
          },
          "merged_range": {
            "$ref": "#/components/schemas/CellRectRange"
          }
        }
      },
      "AgentDatabaseTableAddColumnRequest": {
        "type": "object",
        "properties": {
          "column": {
            "description": "Column spec (name, type, options, default, constraints)",
            "type": "object",
            "properties": {
              "lookup": {
                "description": "LOOKUP configuration",
                "type": "object",
                "properties": {
                  "source_column_id": {
                    "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                    "description": "Column read from the related table",
                    "type": "string",
                    "maxLength": 200
                  },
                  "relation_column_id": {
                    "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                    "description": "RELATION column to follow",
                    "type": "string",
                    "maxLength": 200
                  }
                }
              },
              "unique": {
                "description": "Values must be unique across rows",
                "type": "boolean"
              },
              "name": {
                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                "description": "Column header",
                "type": "string",
                "maxLength": 500
              },
              "options": {
                "maxItems": 200,
                "description": "SELECT / MULTI_SELECT options",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "description": "Option colour",
                      "type": "object",
                      "properties": {
                        "hsb": {
                          "description": "HSB color value",
                          "type": "object",
                          "properties": {
                            "saturation": {
                              "description": "Saturation 0-1",
                              "type": "number"
                            },
                            "brightness": {
                              "description": "Brightness 0-1",
                              "type": "number"
                            },
                            "hue": {
                              "description": "Hue in degrees",
                              "type": "number"
                            }
                          }
                        },
                        "hex": {
                          "description": "Hex color value",
                          "type": "object",
                          "properties": {
                            "value": {
                              "pattern": "^#?[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$",
                              "description": "Hex color literal such as #8B4513",
                              "type": "string",
                              "maxLength": 50
                            }
                          }
                        },
                        "rgb": {
                          "description": "RGB color value",
                          "type": "object",
                          "properties": {
                            "red": {
                              "description": "Red channel 0-255",
                              "type": "integer"
                            },
                            "green": {
                              "description": "Green channel 0-255",
                              "type": "integer"
                            },
                            "blue": {
                              "description": "Blue channel 0-255",
                              "type": "integer"
                            }
                          }
                        }
                      }
                    },
                    "id": {
                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                      "description": "Option id — equal to the option's current label; send it to rename",
                      "type": "string",
                      "maxLength": 500
                    },
                    "value": {
                      "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                      "description": "Option label",
                      "type": "string",
                      "maxLength": 500
                    }
                  }
                }
              },
              "default_value": {
                "description": "Default applied when a cell is absent",
                "type": "object",
                "properties": {
                  "value": {
                    "description": "The typed cell value",
                    "type": "object",
                    "properties": {
                      "date": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "description": "DATE value",
                        "type": "string",
                        "maxLength": 100
                      },
                      "select": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "description": "SELECT: chosen ColumnOption id",
                        "type": "string",
                        "maxLength": 500
                      },
                      "rating": {
                        "description": "RATING value",
                        "type": "integer"
                      },
                      "toggle": {
                        "description": "TOGGLE value",
                        "type": "boolean"
                      },
                      "url": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "description": "URL value",
                        "type": "string",
                        "maxLength": 2000
                      },
                      "relation": {
                        "description": "RELATION: linked row ids",
                        "type": "object",
                        "properties": {
                          "row_ids": {
                            "maxItems": 200,
                            "description": "Linked row ids in the related table",
                            "type": "array",
                            "items": {
                              "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                              "type": "string",
                              "maxLength": 200
                            }
                          }
                        }
                      },
                      "number": {
                        "description": "NUMBER value",
                        "type": "number"
                      },
                      "multi_select": {
                        "description": "MULTI_SELECT: chosen option ids",
                        "type": "object",
                        "properties": {
                          "option_ids": {
                            "maxItems": 200,
                            "description": "Selected ColumnOption ids",
                            "type": "array",
                            "items": {
                              "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                              "type": "string",
                              "maxLength": 200
                            }
                          }
                        }
                      },
                      "phone": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "description": "PHONE value",
                        "type": "string",
                        "maxLength": 100
                      },
                      "person": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "description": "PERSON value",
                        "type": "string",
                        "maxLength": 500
                      },
                      "checkbox": {
                        "description": "CHECKBOX value",
                        "type": "boolean"
                      },
                      "text": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "description": "TEXT value",
                        "type": "string",
                        "maxLength": 50000
                      },
                      "category": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "description": "CATEGORY: chosen ColumnOption id",
                        "type": "string",
                        "maxLength": 500
                      },
                      "email": {
                        "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                        "description": "EMAIL value",
                        "type": "string",
                        "maxLength": 500
                      }
                    }
                  }
                }
              },
              "type": {
                "description": "Column type",
                "type": "string",
                "maxLength": 40,
                "enum": [
                  "TEXT",
                  "NUMBER",
                  "CHECKBOX",
                  "TOGGLE",
                  "SELECT",
                  "MULTI_SELECT",
                  "CATEGORY",
                  "DATE",
                  "PERSON",
                  "PHONE",
                  "EMAIL",
                  "URL",
                  "RATING",
                  "RELATION",
                  "LOOKUP",
                  "ROLLUP"
                ]
              },
              "required": {
                "description": "Value must be present",
                "type": "boolean"
              },
              "relation": {
                "description": "RELATION configuration",
                "type": "object",
                "properties": {
                  "reciprocal_column_id": {
                    "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                    "description": "Paired RELATION column on the related table (two-way)",
                    "type": "string",
                    "maxLength": 200
                  },
                  "allow_multiple": {
                    "description": "Single vs multiple linked rows",
                    "type": "boolean"
                  },
                  "related_table_id": {
                    "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                    "description": "Table this column links rows to",
                    "type": "string",
                    "maxLength": 200
                  }
                }
              },
              "rollup": {
                "description": "ROLLUP configuration",
                "type": "object",
                "properties": {
                  "source_column_id": {
                    "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                    "description": "Column aggregated on the related table",
                    "type": "string",
                    "maxLength": 200
                  },
                  "relation_column_id": {
                    "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                    "description": "RELATION column to follow",
                    "type": "string",
                    "maxLength": 200
                  },
                  "aggregate": {
                    "description": "Summary function",
                    "type": "object",
                    "properties": {
                      "date": {
                        "description": "DATE columns",
                        "type": "string",
                        "maxLength": 40,
                        "enum": [
                          "EARLIEST",
                          "LATEST",
                          "DATE_RANGE"
                        ]
                      },
                      "number": {
                        "description": "NUMBER / RATING columns",
                        "type": "string",
                        "maxLength": 40,
                        "enum": [
                          "SUM",
                          "AVG",
                          "MIN",
                          "MAX",
                          "MEDIAN",
                          "RANGE"
                        ]
                      },
                      "boolean": {
                        "description": "CHECKBOX / TOGGLE columns",
                        "type": "string",
                        "maxLength": 40,
                        "enum": [
                          "CHECKED",
                          "UNCHECKED",
                          "PERCENT_CHECKED",
                          "PERCENT_UNCHECKED"
                        ]
                      },
                      "common": {
                        "description": "Applies to any column type",
                        "type": "string",
                        "maxLength": 40,
                        "enum": [
                          "COUNT",
                          "COUNT_EMPTY",
                          "COUNT_NOT_EMPTY",
                          "COUNT_UNIQUE",
                          "PERCENT_EMPTY",
                          "PERCENT_NOT_EMPTY"
                        ]
                      },
                      "text": {
                        "description": "Text and string-like columns",
                        "type": "string",
                        "maxLength": 40,
                        "enum": [
                          "CONCAT",
                          "CONCAT_UNIQUE"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "column"
        ]
      },
      "MutationMetadata": {
        "type": "object",
        "properties": {
          "new_revision_id": {
            "type": "string"
          }
        }
      },
      "TableCellRef": {
        "type": "object",
        "properties": {
          "row_index": {
            "format": "int32",
            "type": "string"
          },
          "column_index": {
            "format": "int32",
            "type": "string"
          }
        }
      },
      "DeleteColumnsResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/TableSizeResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "GetCellParagraphTextPayload": {
        "type": "object",
        "properties": {
          "text": {
            "$ref": "#/components/schemas/GetParagraphTextPayload"
          }
        }
      },
      "ParagraphTextItem": {
        "type": "object",
        "properties": {
          "paragraph_index": {
            "format": "int32",
            "type": "string"
          },
          "text": {
            "type": "string"
          }
        }
      },
      "EditCellTextResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/EditCellTextResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentDatabaseTableReorderColumnsRequest": {
        "type": "object",
        "properties": {
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          },
          "order": {
            "minItems": 1,
            "maxItems": 50,
            "description": "Full desired column order (column refs)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "column_id": {
                  "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                  "description": "Column id",
                  "type": "string",
                  "maxLength": 200
                }
              },
              "required": [
                "column_id"
              ]
            }
          }
        },
        "required": [
          "table",
          "order"
        ]
      },
      "GetTableSizeResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/TableSizeResult"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentSetCellTextRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "SetCellText payload",
            "type": "object",
            "properties": {
              "text": {
                "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                "description": "Full replacement text for the cell",
                "type": "string",
                "maxLength": 500000
              }
            },
            "required": [
              "text"
            ]
          },
          "cell": {
            "description": "Target cell reference",
            "type": "object",
            "properties": {
              "row_index": {
                "description": "Zero-based row index",
                "type": "integer"
              },
              "column_index": {
                "description": "Zero-based column index",
                "type": "integer"
              }
            }
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "cell",
          "payload"
        ]
      },
      "TableSizeResult": {
        "type": "object",
        "properties": {
          "column_count": {
            "format": "int32",
            "type": "string"
          },
          "row_count": {
            "format": "int32",
            "type": "string"
          }
        }
      },
      "AgentDeleteColumnsRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "DeleteColumns payload",
            "type": "object",
            "properties": {
              "range": {
                "description": "Column range to delete",
                "type": "object",
                "properties": {
                  "start_index": {
                    "description": "Inclusive start table index (row or column)",
                    "type": "integer"
                  },
                  "end_index": {
                    "description": "Exclusive end table index",
                    "type": "integer"
                  }
                },
                "required": [
                  "start_index",
                  "end_index"
                ]
              }
            },
            "required": [
              "range"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "payload"
        ]
      },
      "AgentInsertRowsRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "InsertRows payload",
            "type": "object",
            "properties": {
              "anchor_index": {
                "description": "Anchor row index in [0, row_count - 1]",
                "type": "integer"
              },
              "count": {
                "description": "Number of rows to insert (> 0)",
                "type": "integer"
              },
              "position": {
                "description": "Insert position relative to anchor_index",
                "type": "string",
                "maxLength": 40,
                "enum": [
                  "INSERT_POSITION_UNSPECIFIED",
                  "BEFORE",
                  "AFTER"
                ]
              }
            },
            "required": [
              "anchor_index"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "payload"
        ]
      },
      "GetParagraphCountResult": {
        "type": "object",
        "properties": {
          "paragraph_count": {
            "format": "int32",
            "type": "string"
          }
        }
      },
      "GetCellTextPayload": {
        "type": "object",
        "properties": {
          "text": {
            "$ref": "#/components/schemas/GetTextPayload"
          }
        }
      },
      "AgentDatabaseTableDeleteColumnRequest": {
        "type": "object",
        "properties": {
          "column": {
            "description": "Column ref (column id)",
            "type": "object",
            "properties": {
              "column_id": {
                "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                "description": "Column id",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "column_id"
            ]
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "column"
        ]
      },
      "InsertRowsResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/TableSizeResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "EditTextResult": {
        "type": "object",
        "properties": {
          "applied_range": {
            "$ref": "#/components/schemas/TextRange"
          }
        }
      },
      "UnmergeCellResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/UnmergeCellResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentDatabaseTableAddRecordRequest": {
        "type": "object",
        "properties": {
          "cells": {
            "maxItems": 50,
            "description": "Keyed cell assignments (partial allowed)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "column_id": {
                  "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                  "description": "Target column id",
                  "type": "string",
                  "maxLength": 200
                },
                "column": {
                  "description": "Target column ref",
                  "type": "object",
                  "properties": {
                    "column_id": {
                      "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                      "description": "Column id",
                      "type": "string",
                      "maxLength": 200
                    }
                  },
                  "required": [
                    "column_id"
                  ]
                },
                "clear": {
                  "description": "Clear the cell",
                  "type": "object",
                  "properties": {}
                },
                "value": {
                  "description": "Value to set",
                  "type": "object",
                  "properties": {
                    "value": {
                      "description": "The typed cell value",
                      "type": "object",
                      "properties": {
                        "date": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "DATE value",
                          "type": "string",
                          "maxLength": 100
                        },
                        "select": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "SELECT: chosen ColumnOption id",
                          "type": "string",
                          "maxLength": 500
                        },
                        "rating": {
                          "description": "RATING value",
                          "type": "integer"
                        },
                        "toggle": {
                          "description": "TOGGLE value",
                          "type": "boolean"
                        },
                        "url": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "URL value",
                          "type": "string",
                          "maxLength": 2000
                        },
                        "relation": {
                          "description": "RELATION: linked row ids",
                          "type": "object",
                          "properties": {
                            "row_ids": {
                              "maxItems": 200,
                              "description": "Linked row ids in the related table",
                              "type": "array",
                              "items": {
                                "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                "type": "string",
                                "maxLength": 200
                              }
                            }
                          }
                        },
                        "number": {
                          "description": "NUMBER value",
                          "type": "number"
                        },
                        "multi_select": {
                          "description": "MULTI_SELECT: chosen option ids",
                          "type": "object",
                          "properties": {
                            "option_ids": {
                              "maxItems": 200,
                              "description": "Selected ColumnOption ids",
                              "type": "array",
                              "items": {
                                "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                "type": "string",
                                "maxLength": 200
                              }
                            }
                          }
                        },
                        "phone": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "PHONE value",
                          "type": "string",
                          "maxLength": 100
                        },
                        "person": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "PERSON value",
                          "type": "string",
                          "maxLength": 500
                        },
                        "checkbox": {
                          "description": "CHECKBOX value",
                          "type": "boolean"
                        },
                        "text": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "TEXT value",
                          "type": "string",
                          "maxLength": 50000
                        },
                        "category": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "CATEGORY: chosen ColumnOption id",
                          "type": "string",
                          "maxLength": 500
                        },
                        "email": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "EMAIL value",
                          "type": "string",
                          "maxLength": 500
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table"
        ]
      },
      "InsertColumnsResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/TableSizeResult"
          },
          "mutation": {
            "$ref": "#/components/schemas/MutationMetadata"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentEditCellTextRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "EditCellText payload",
            "type": "object",
            "properties": {
              "text": {
                "description": "Text mutation payload (exactly one of range, cursor, or all_text)",
                "type": "object",
                "properties": {
                  "cursor": {
                    "description": "Cursor-scoped insert/delete mutation",
                    "type": "object",
                    "properties": {
                      "cursor_index": {
                        "description": "Cursor index on flattened text",
                        "type": "integer"
                      },
                      "text": {
                        "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                        "description": "Text to insert (required when operation=CURSOR_TEXT_OPERATION_INSERT_TEXT)",
                        "type": "string",
                        "maxLength": 500000
                      },
                      "operation": {
                        "description": "Cursor mutation operation",
                        "type": "string",
                        "maxLength": 50,
                        "enum": [
                          "CURSOR_TEXT_OPERATION_UNSPECIFIED",
                          "CURSOR_TEXT_OPERATION_INSERT_TEXT",
                          "CURSOR_TEXT_OPERATION_INSERT_NEWLINE",
                          "CURSOR_TEXT_OPERATION_DELETE_NEWLINE"
                        ]
                      }
                    },
                    "required": [
                      "cursor_index",
                      "operation"
                    ]
                  },
                  "all_text": {
                    "description": "Full-text replace/delete mutation",
                    "type": "object",
                    "properties": {
                      "replacement_text": {
                        "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                        "description": "Replacement text (required when operation=ALL_TEXT_OPERATION_REPLACE)",
                        "type": "string",
                        "maxLength": 500000
                      },
                      "operation": {
                        "description": "Full-text mutation operation",
                        "type": "string",
                        "maxLength": 50,
                        "enum": [
                          "ALL_TEXT_OPERATION_UNSPECIFIED",
                          "ALL_TEXT_OPERATION_REPLACE",
                          "ALL_TEXT_OPERATION_DELETE"
                        ]
                      }
                    },
                    "required": [
                      "operation"
                    ]
                  },
                  "range": {
                    "description": "Range-scoped replace/delete mutation",
                    "type": "object",
                    "properties": {
                      "replacement_text": {
                        "pattern": "^[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;>\\\\'\\/!\\u0080-\\uFFFF\\s<\"]*$",
                        "description": "Replacement text (required when operation=RANGE_TEXT_OPERATION_REPLACE)",
                        "type": "string",
                        "maxLength": 500000
                      },
                      "range": {
                        "description": "Target range in flattened text",
                        "type": "object",
                        "properties": {
                          "start_index": {
                            "description": "Inclusive start index on flattened text (>= 0)",
                            "type": "integer"
                          },
                          "end_index": {
                            "description": "Exclusive end index on flattened text (> start_index)",
                            "type": "integer"
                          }
                        },
                        "required": [
                          "start_index",
                          "end_index"
                        ]
                      },
                      "operation": {
                        "description": "Range mutation operation",
                        "type": "string",
                        "maxLength": 50,
                        "enum": [
                          "RANGE_TEXT_OPERATION_UNSPECIFIED",
                          "RANGE_TEXT_OPERATION_REPLACE",
                          "RANGE_TEXT_OPERATION_DELETE"
                        ]
                      }
                    },
                    "required": [
                      "range",
                      "operation"
                    ]
                  }
                }
              }
            },
            "required": [
              "text"
            ]
          },
          "cell": {
            "description": "Target cell reference",
            "type": "object",
            "properties": {
              "row_index": {
                "description": "Zero-based row index",
                "type": "integer"
              },
              "column_index": {
                "description": "Zero-based column index",
                "type": "integer"
              }
            }
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "cell",
          "payload"
        ]
      },
      "AgentDatabaseTableDeleteRecordsRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "description": "Non-empty filter selecting rows to delete",
            "type": "object",
            "properties": {
              "mode": {
                "description": "AND (default) / OR",
                "type": "string",
                "maxLength": 5,
                "enum": [
                  "AND",
                  "OR"
                ]
              },
              "conditions": {
                "maxItems": 200,
                "description": "Conditions combined by mode",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "text_match": {
                      "description": "Substring match",
                      "type": "object",
                      "properties": {
                        "op": {
                          "description": "CONTAINS / STARTS_WITH / ENDS_WITH",
                          "type": "string",
                          "maxLength": 20,
                          "enum": [
                            "CONTAINS",
                            "STARTS_WITH",
                            "ENDS_WITH"
                          ]
                        },
                        "case_sensitive": {
                          "description": "Default false (case-insensitive)",
                          "type": "boolean"
                        },
                        "text": {
                          "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                          "description": "Search text",
                          "type": "string",
                          "maxLength": 5000
                        }
                      }
                    },
                    "comparison": {
                      "description": "Scalar comparison",
                      "type": "object",
                      "properties": {
                        "op": {
                          "description": "EQ / NEQ / GT / GTE / LT / LTE",
                          "type": "string",
                          "maxLength": 10,
                          "enum": [
                            "EQ",
                            "NEQ",
                            "GT",
                            "GTE",
                            "LT",
                            "LTE"
                          ]
                        },
                        "operand": {
                          "description": "Right-hand side",
                          "type": "object",
                          "properties": {
                            "column": {
                              "description": "Another column in this table",
                              "type": "object",
                              "properties": {
                                "column_id": {
                                  "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                                  "description": "Column id",
                                  "type": "string",
                                  "maxLength": 200
                                }
                              },
                              "required": [
                                "column_id"
                              ]
                            },
                            "value": {
                              "description": "Literal comparand",
                              "type": "object",
                              "properties": {
                                "date": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "DATE value",
                                  "type": "string",
                                  "maxLength": 100
                                },
                                "select": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "SELECT: chosen ColumnOption id",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "rating": {
                                  "description": "RATING value",
                                  "type": "integer"
                                },
                                "toggle": {
                                  "description": "TOGGLE value",
                                  "type": "boolean"
                                },
                                "url": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "URL value",
                                  "type": "string",
                                  "maxLength": 2000
                                },
                                "relation": {
                                  "description": "RELATION: linked row ids",
                                  "type": "object",
                                  "properties": {
                                    "row_ids": {
                                      "maxItems": 200,
                                      "description": "Linked row ids in the related table",
                                      "type": "array",
                                      "items": {
                                        "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                        "type": "string",
                                        "maxLength": 200
                                      }
                                    }
                                  }
                                },
                                "number": {
                                  "description": "NUMBER value",
                                  "type": "number"
                                },
                                "multi_select": {
                                  "description": "MULTI_SELECT: chosen option ids",
                                  "type": "object",
                                  "properties": {
                                    "option_ids": {
                                      "maxItems": 200,
                                      "description": "Selected ColumnOption ids",
                                      "type": "array",
                                      "items": {
                                        "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                        "type": "string",
                                        "maxLength": 200
                                      }
                                    }
                                  }
                                },
                                "phone": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "PHONE value",
                                  "type": "string",
                                  "maxLength": 100
                                },
                                "person": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "PERSON value",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "checkbox": {
                                  "description": "CHECKBOX value",
                                  "type": "boolean"
                                },
                                "text": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "TEXT value",
                                  "type": "string",
                                  "maxLength": 50000
                                },
                                "category": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "CATEGORY: chosen ColumnOption id",
                                  "type": "string",
                                  "maxLength": 500
                                },
                                "email": {
                                  "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                  "description": "EMAIL value",
                                  "type": "string",
                                  "maxLength": 500
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "emptiness": {
                      "description": "Empty / not-empty",
                      "type": "object",
                      "properties": {
                        "op": {
                          "description": "IS_EMPTY / IS_NOT_EMPTY",
                          "type": "string",
                          "maxLength": 20,
                          "enum": [
                            "IS_EMPTY",
                            "IS_NOT_EMPTY"
                          ]
                        }
                      }
                    },
                    "column": {
                      "description": "Column under test",
                      "type": "object",
                      "properties": {
                        "column_id": {
                          "pattern": "^(?:[A-Za-z0-9_\\-]{1,200})$",
                          "description": "Column id",
                          "type": "string",
                          "maxLength": 200
                        }
                      },
                      "required": [
                        "column_id"
                      ]
                    },
                    "membership": {
                      "description": "Multi-select / relation contains",
                      "type": "object",
                      "properties": {
                        "mode": {
                          "description": "HAS_ANY / HAS_ALL / HAS_NONE",
                          "type": "string",
                          "maxLength": 20,
                          "enum": [
                            "HAS_ANY",
                            "HAS_ALL",
                            "HAS_NONE"
                          ]
                        },
                        "values": {
                          "maxItems": 200,
                          "description": "Option ids or linked row ids",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "date": {
                                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                "description": "DATE value",
                                "type": "string",
                                "maxLength": 100
                              },
                              "select": {
                                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                "description": "SELECT: chosen ColumnOption id",
                                "type": "string",
                                "maxLength": 500
                              },
                              "rating": {
                                "description": "RATING value",
                                "type": "integer"
                              },
                              "toggle": {
                                "description": "TOGGLE value",
                                "type": "boolean"
                              },
                              "url": {
                                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                "description": "URL value",
                                "type": "string",
                                "maxLength": 2000
                              },
                              "relation": {
                                "description": "RELATION: linked row ids",
                                "type": "object",
                                "properties": {
                                  "row_ids": {
                                    "maxItems": 200,
                                    "description": "Linked row ids in the related table",
                                    "type": "array",
                                    "items": {
                                      "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                      "type": "string",
                                      "maxLength": 200
                                    }
                                  }
                                }
                              },
                              "number": {
                                "description": "NUMBER value",
                                "type": "number"
                              },
                              "multi_select": {
                                "description": "MULTI_SELECT: chosen option ids",
                                "type": "object",
                                "properties": {
                                  "option_ids": {
                                    "maxItems": 200,
                                    "description": "Selected ColumnOption ids",
                                    "type": "array",
                                    "items": {
                                      "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                      "type": "string",
                                      "maxLength": 200
                                    }
                                  }
                                }
                              },
                              "phone": {
                                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                "description": "PHONE value",
                                "type": "string",
                                "maxLength": 100
                              },
                              "person": {
                                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                "description": "PERSON value",
                                "type": "string",
                                "maxLength": 500
                              },
                              "checkbox": {
                                "description": "CHECKBOX value",
                                "type": "boolean"
                              },
                              "text": {
                                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                "description": "TEXT value",
                                "type": "string",
                                "maxLength": 50000
                              },
                              "category": {
                                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                "description": "CATEGORY: chosen ColumnOption id",
                                "type": "string",
                                "maxLength": 500
                              },
                              "email": {
                                "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                                "description": "EMAIL value",
                                "type": "string",
                                "maxLength": 500
                              }
                            }
                          }
                        }
                      }
                    },
                    "between": {
                      "description": "Inclusive range",
                      "type": "object",
                      "properties": {
                        "high": {
                          "description": "Inclusive upper bound",
                          "type": "object",
                          "properties": {
                            "date": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "DATE value",
                              "type": "string",
                              "maxLength": 100
                            },
                            "select": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "SELECT: chosen ColumnOption id",
                              "type": "string",
                              "maxLength": 500
                            },
                            "rating": {
                              "description": "RATING value",
                              "type": "integer"
                            },
                            "toggle": {
                              "description": "TOGGLE value",
                              "type": "boolean"
                            },
                            "url": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "URL value",
                              "type": "string",
                              "maxLength": 2000
                            },
                            "relation": {
                              "description": "RELATION: linked row ids",
                              "type": "object",
                              "properties": {
                                "row_ids": {
                                  "maxItems": 200,
                                  "description": "Linked row ids in the related table",
                                  "type": "array",
                                  "items": {
                                    "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                    "type": "string",
                                    "maxLength": 200
                                  }
                                }
                              }
                            },
                            "number": {
                              "description": "NUMBER value",
                              "type": "number"
                            },
                            "multi_select": {
                              "description": "MULTI_SELECT: chosen option ids",
                              "type": "object",
                              "properties": {
                                "option_ids": {
                                  "maxItems": 200,
                                  "description": "Selected ColumnOption ids",
                                  "type": "array",
                                  "items": {
                                    "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                    "type": "string",
                                    "maxLength": 200
                                  }
                                }
                              }
                            },
                            "phone": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "PHONE value",
                              "type": "string",
                              "maxLength": 100
                            },
                            "person": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "PERSON value",
                              "type": "string",
                              "maxLength": 500
                            },
                            "checkbox": {
                              "description": "CHECKBOX value",
                              "type": "boolean"
                            },
                            "text": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "TEXT value",
                              "type": "string",
                              "maxLength": 50000
                            },
                            "category": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "CATEGORY: chosen ColumnOption id",
                              "type": "string",
                              "maxLength": 500
                            },
                            "email": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "EMAIL value",
                              "type": "string",
                              "maxLength": 500
                            }
                          }
                        },
                        "low": {
                          "description": "Inclusive lower bound",
                          "type": "object",
                          "properties": {
                            "date": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "DATE value",
                              "type": "string",
                              "maxLength": 100
                            },
                            "select": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "SELECT: chosen ColumnOption id",
                              "type": "string",
                              "maxLength": 500
                            },
                            "rating": {
                              "description": "RATING value",
                              "type": "integer"
                            },
                            "toggle": {
                              "description": "TOGGLE value",
                              "type": "boolean"
                            },
                            "url": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "URL value",
                              "type": "string",
                              "maxLength": 2000
                            },
                            "relation": {
                              "description": "RELATION: linked row ids",
                              "type": "object",
                              "properties": {
                                "row_ids": {
                                  "maxItems": 200,
                                  "description": "Linked row ids in the related table",
                                  "type": "array",
                                  "items": {
                                    "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                    "type": "string",
                                    "maxLength": 200
                                  }
                                }
                              }
                            },
                            "number": {
                              "description": "NUMBER value",
                              "type": "number"
                            },
                            "multi_select": {
                              "description": "MULTI_SELECT: chosen option ids",
                              "type": "object",
                              "properties": {
                                "option_ids": {
                                  "maxItems": 200,
                                  "description": "Selected ColumnOption ids",
                                  "type": "array",
                                  "items": {
                                    "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                                    "type": "string",
                                    "maxLength": 200
                                  }
                                }
                              }
                            },
                            "phone": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "PHONE value",
                              "type": "string",
                              "maxLength": 100
                            },
                            "person": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "PERSON value",
                              "type": "string",
                              "maxLength": 500
                            },
                            "checkbox": {
                              "description": "CHECKBOX value",
                              "type": "boolean"
                            },
                            "text": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "TEXT value",
                              "type": "string",
                              "maxLength": 50000
                            },
                            "category": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "CATEGORY: chosen ColumnOption id",
                              "type": "string",
                              "maxLength": 500
                            },
                            "email": {
                              "pattern": "^(?:[0-9a-zA-Z_~`#%&\\^\\*\\(\\)\\{\\}\\[\\]\\+\\*\\|=\\-\\.\\$@\\?,:;\\\\'\\/!\\u0080-\\uFFFF\\s\"]+)$",
                              "description": "EMAIL value",
                              "type": "string",
                              "maxLength": 500
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "column"
                  ]
                }
              }
            }
          },
          "table": {
            "description": "Table object reference",
            "type": "object",
            "properties": {
              "zone_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": "Zone containing the table (optional; defaults to the zone in the request path)",
                "type": "string",
                "maxLength": 200
              },
              "object_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": "Table object id",
                "type": "string",
                "maxLength": 200
              },
              "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 containing the table (optional; auto-resolved if omitted)",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "object_id"
            ]
          }
        },
        "required": [
          "table",
          "filter"
        ]
      }
    },
    "responses": {
      "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"
            }
          }
        }
      },
      "RateLimitExceededThisOperationAllows60Re": {
        "description": "Rate limit exceeded - this operation allows 60 requests per minute per user",
        "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"
            }
          }
        }
      },
      "SuccessfulResponse2": {
        "description": "Successful response",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/VaniEnvelope"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/DeleteColumnsResponse"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "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}/table/cell/paragraphtext": {
      "get": {
        "summary": "Get paragraph text for a table cell by paragraph index range",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getTableCellParagraphText",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/GetCellParagraphTextResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "READ",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          },
          {
            "schema": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetCellParagraphTextRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetCellParagraphTextRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "table_query",
            "description": "`table_query` — JSON-encoded GetCellParagraphText request: table, cell, payload.text.range. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.",
            "required": true
          }
        ],
        "x-vani-read-only": true,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns": {
      "post": {
        "summary": "Add a column (appended); applies its default to existing rows",
        "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/AgentDatabaseTableAddColumnRequest"
              }
            }
          }
        },
        "operationId": "createDatabaseTableColumn",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "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": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/type/feasibility": {
      "get": {
        "summary": "Dry-run a column type change: feasibility and convertible/incompatible counts",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getDatabaseTableColumnTypeFeasibility",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "READ",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          },
          {
            "schema": {
              "pattern": "^(?:[A-Za-z0-9-]+)$",
              "type": "string",
              "maxLength": 200
            },
            "in": "query",
            "name": "object_id",
            "description": "Database table object id",
            "required": true
          },
          {
            "schema": {
              "pattern": "^(?:[A-Za-z0-9_-]+)$",
              "type": "string",
              "maxLength": 200
            },
            "in": "query",
            "name": "column_id",
            "description": "Column id to test",
            "required": true
          },
          {
            "schema": {
              "pattern": "^(?:[A-Z_]+)$",
              "type": "string",
              "maxLength": 40
            },
            "in": "query",
            "name": "target_type",
            "description": "Target ColumnType enum name (e.g. NUMBER)",
            "required": true
          }
        ],
        "x-vani-read-only": true,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/delete": {
      "post": {
        "summary": "Delete all records matching the (non-empty) filters",
        "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/AgentDatabaseTableDeleteRecordsRequest"
              }
            }
          }
        },
        "operationId": "deleteDatabaseTableRecords",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "DELETE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": true,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records/update": {
      "post": {
        "summary": "Sparse update of an existing record's cells (set or clear)",
        "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/AgentDatabaseTableUpdateRecordRequest"
              }
            }
          }
        },
        "operationId": "updateDatabaseTableRecords",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "UPDATE",
        "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": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/size": {
      "get": {
        "summary": "Report a table object's current dimensions as a row count and a column count. Call it first to bound row and column indexes before reading, editing, inserting or deleting.",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getTableSize",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/GetTableSizeResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "READ",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          },
          {
            "schema": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetTableSizeRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetTableSizeRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "table_query",
            "description": "`table_query` — JSON-encoded GetTableSize request: table. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.",
            "required": true
          }
        ],
        "x-vani-read-only": true,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/merge": {
      "post": {
        "summary": "Merge a rectangular block of table cells into a single cell, given start and end row and column indexes. Reverse it with unmergeTableCells.",
        "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/AgentMergeCellsRequest"
              }
            }
          }
        },
        "operationId": "mergeTableCells",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/MergeCellsResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "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": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/reorder": {
      "put": {
        "summary": "Reorder the table's columns to the given full order",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.UPDATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.UPDATE"
            ]
          }
        ],
        "x-vani-transitional": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentDatabaseTableReorderColumnsRequest"
              }
            }
          }
        },
        "operationId": "updateDatabaseTableColumnReorder",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "UPDATE",
        "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": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/insert": {
      "post": {
        "summary": "Insert rows before or after an anchor row index",
        "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/AgentInsertRowsRequest"
              }
            }
          }
        },
        "operationId": "insertTableRows",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/InsertRowsResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "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": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/paragraphcount": {
      "get": {
        "summary": "Report how many paragraphs one table cell's text contains. Use to bound a paragraph index before getTableCellParagraphText.",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getTableCellParagraphCount",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/GetCellParagraphCountResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "READ",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          },
          {
            "schema": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetCellParagraphCountRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetCellParagraphCountRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "table_query",
            "description": "`table_query` — JSON-encoded GetCellParagraphCount request: table, cell. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.",
            "required": true
          }
        ],
        "x-vani-read-only": true,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/textlength": {
      "get": {
        "summary": "Report the character count of one table cell's text without returning the text itself. Use to bound a character range before reading or mutating that cell.",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getTableCellTextLength",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/GetCellTextLengthResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "READ",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          },
          {
            "schema": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetCellTextLengthRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetCellTextLengthRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "table_query",
            "description": "`table_query` — JSON-encoded GetCellTextLength request: table, cell. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.",
            "required": true
          }
        ],
        "x-vani-read-only": true,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/update": {
      "post": {
        "summary": "Apply one change to a column: rename, retype, set options, default, or constraints",
        "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/AgentDatabaseTableUpdateColumnRequest"
              }
            }
          }
        },
        "operationId": "updateDatabaseTableColumns",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "UPDATE",
        "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": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/rows/delete": {
      "post": {
        "summary": "Remove a contiguous band of table rows given a half-open row index range (start inclusive, end exclusive). Rows below shift up, so re-read the table size before the next index-based call.",
        "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/AgentDeleteRowsRequest"
              }
            }
          }
        },
        "operationId": "deleteTableRows",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/DeleteRowsResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "DELETE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": true,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/edittext": {
      "post": {
        "summary": "Apply text mutation (range/cursor/all_text) to a table cell",
        "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/AgentEditCellTextRequest"
              }
            }
          }
        },
        "operationId": "editTableCellText",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/EditCellTextResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "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": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cell/text": {
      "get": {
        "summary": "Read the plain text held in one table cell, addressed by row and column index, either whole or over a character range. Returns text with formatting flattened away.",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getTableCellText",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/GetCellTextResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "READ",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          },
          {
            "schema": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetCellTextRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetCellTextRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "table_query",
            "description": "`table_query` — JSON-encoded GetCellText request: table, cell, optional payload.text (range or all_text). Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.",
            "required": true
          }
        ],
        "x-vani-read-only": true,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Tables"
        ]
      },
      "put": {
        "summary": "Overwrite one table cell's entire text with a supplied string. Whole-cell replacement - use editTableCellText for a range, cursor or otherwise partial mutation.",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.UPDATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.UPDATE"
            ]
          }
        ],
        "x-vani-transitional": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentSetCellTextRequest"
              }
            }
          }
        },
        "operationId": "updateTableCellText",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "UPDATE",
        "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": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/query": {
      "post": {
        "summary": "Query database_table rows, or group and aggregate, in one call",
        "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/AgentDatabaseTableQueryRecordsRequest"
              }
            }
          }
        },
        "operationId": "createDatabaseTableQuery",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "READ",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": true,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/insert": {
      "post": {
        "summary": "Insert columns before or after an anchor column index",
        "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/AgentInsertColumnsRequest"
              }
            }
          }
        },
        "operationId": "insertTableColumns",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/InsertColumnsResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "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": 60
        },
        "tags": [
          "Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/cells/unmerge": {
      "post": {
        "summary": "Unmerge a merged region of table cells",
        "x-vani-transitional": true,
        "description": "Pass the table reference and `payload.cell` (`{row_index, column_index}`) identifying any cell inside the merged area. The payload takes a single `cell` reference, not a `range`.",
        "x-vani-read-only": false,
        "tags": [
          "Tables"
        ],
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.CREATE"
            ]
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgentUnmergeCellRequest"
              }
            }
          }
        },
        "operationId": "unmergeTableCells",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/UnmergeCellResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "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-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        }
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/records": {
      "post": {
        "summary": "Append a record from keyed cell assignments (partial allowed)",
        "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/AgentDatabaseTableAddRecordRequest"
              }
            }
          }
        },
        "operationId": "createDatabaseTableRecord",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "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": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/columns/delete": {
      "post": {
        "summary": "Delete a column (and its cells across all rows)",
        "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/AgentDatabaseTableDeleteColumnRequest"
              }
            }
          }
        },
        "operationId": "deleteDatabaseTableColumns",
        "responses": {
          "200": {
            "$ref": "#/components/responses/SuccessfulResponse2"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "DELETE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": true,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/database-table/schema": {
      "get": {
        "summary": "Read database_table column schema (id, type, name, option lists) and row count",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getDatabaseTableSchema",
        "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/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "READ",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          },
          {
            "schema": {
              "pattern": "^(?:[A-Za-z0-9-]+)$",
              "type": "string",
              "maxLength": 200
            },
            "in": "query",
            "name": "object_id",
            "description": "Database table object id (mint-time UUID)",
            "required": true
          }
        ],
        "x-vani-read-only": true,
        "x-vani-destructive": false,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Database Tables"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/table/columns/delete": {
      "post": {
        "summary": "Delete columns in a specified column index range",
        "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/AgentDeleteColumnsRequest"
              }
            }
          }
        },
        "operationId": "deleteTableColumns",
        "responses": {
          "200": {
            "$ref": "#/components/responses/SuccessfulResponse2"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows60Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "DELETE",
        "parameters": [
          {
            "$ref": "#/components/parameters/EditionId"
          },
          {
            "$ref": "#/components/parameters/SpaceId"
          },
          {
            "$ref": "#/components/parameters/ZoneId"
          }
        ],
        "x-vani-read-only": false,
        "x-vani-destructive": true,
        "x-vani-throttle": {
          "duration": "1M",
          "threshold": 60
        },
        "tags": [
          "Tables"
        ]
      }
    }
  },
  "info": {
    "contact": {
      "name": "Vani API Support",
      "url": "https://www.vanihq.com/resources/api/doc/"
    },
    "description": "Cell, row, and column operations on table objects, and typed database_table records and schema.",
    "title": "Tables",
    "version": "1.0.0"
  },
  "tags": [
    {
      "name": "Tables",
      "description": "Insert and delete table rows and columns, merge cells, and read cell text."
    },
    {
      "name": "Database Tables",
      "description": "Manage typed database_table columns, records, schema, and queries."
    }
  ]
}