{
  "components": {
    "schemas": {
      "SpatialBatchGetOccupiedBoundsRequest": {
        "type": "object",
        "properties": {
          "requests": {
            "minItems": 1,
            "maxItems": 50,
            "description": "requests. Max length: 2000000 (required)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "object_types": {
                  "maxItems": 20,
                  "description": "Object-type filter; empty means all types",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 60,
                    "enum": [
                      "VANI_OBJECT_TYPE_UNSPECIFIED",
                      "VANI_OBJECT_TYPE_SHAPE",
                      "VANI_OBJECT_TYPE_CONNECTOR",
                      "VANI_OBJECT_TYPE_PICTURE",
                      "VANI_OBJECT_TYPE_GROUP_SHAPE",
                      "VANI_OBJECT_TYPE_DOMAIN_DIAGRAM",
                      "VANI_OBJECT_TYPE_DIAGRAM",
                      "VANI_OBJECT_TYPE_STRUCTURE",
                      "VANI_OBJECT_TYPE_STRUCTURE_MINDMAP",
                      "VANI_OBJECT_TYPE_STRUCTURE_KANBAN",
                      "VANI_OBJECT_TYPE_STRUCTURE_STACK",
                      "VANI_OBJECT_TYPE_TABLE",
                      "VANI_OBJECT_TYPE_CHART",
                      "VANI_OBJECT_TYPE_DATABASE_TABLE",
                      "VANI_OBJECT_TYPE_STICKY_NOTE"
                    ]
                  }
                },
                "include_hidden": {
                  "description": "Include hidden objects when true",
                  "type": "boolean"
                },
                "scope": {
                  "description": "Optional scope selector; defaults to SCOPE_TYPE_ZONE",
                  "type": "object",
                  "properties": {
                    "percent_bounds": {
                      "description": "Region refinement: bounds normalized to the selected container. Oneof with absolute_bounds",
                      "type": "object",
                      "properties": {
                        "right_pct": {
                          "description": "Right edge as 0-1 fraction of zone width",
                          "type": "number"
                        },
                        "top_pct": {
                          "description": "Top edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "bottom_pct": {
                          "description": "Bottom edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "left_pct": {
                          "description": "Left edge as 0-1 fraction of zone width",
                          "type": "number"
                        }
                      }
                    },
                    "absolute_bounds": {
                      "description": "Region refinement: absolute bounds in zone coordinates. Oneof with percent_bounds",
                      "type": "object",
                      "properties": {
                        "x": {
                          "description": "Left position in canvas units",
                          "type": "number"
                        },
                        "width": {
                          "description": "Width in canvas units",
                          "type": "number"
                        },
                        "y": {
                          "description": "Top position in canvas units",
                          "type": "number"
                        },
                        "height": {
                          "description": "Height in canvas units",
                          "type": "number"
                        }
                      }
                    },
                    "scope_type": {
                      "default": "SCOPE_TYPE_ZONE",
                      "description": "Scope type selector; defaults to SCOPE_TYPE_ZONE",
                      "type": "string",
                      "maxLength": 50,
                      "enum": [
                        "SCOPE_TYPE_UNSPECIFIED",
                        "SCOPE_TYPE_ZONE",
                        "SCOPE_TYPE_FRAME"
                      ]
                    },
                    "frame_id": {
                      "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                      "description": "Frame id when scope_type is SCOPE_TYPE_FRAME",
                      "type": "string",
                      "maxLength": 200
                    }
                  }
                },
                "include_locked": {
                  "description": "Include locked objects when true",
                  "type": "boolean"
                }
              }
            }
          },
          "request_item_ids": {
            "maxItems": 50,
            "description": "Optional correlation IDs echoed back in response",
            "type": "array",
            "items": {
              "pattern": "^(?:[A-Za-z_0-9- ]+)$",
              "type": "string",
              "maxLength": 200
            }
          }
        },
        "required": [
          "requests"
        ]
      },
      "AgentCreateConnectionPayload": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "Shared connector options payload (connector_type, source_side, target_side)",
            "type": "object",
            "properties": {
              "connector_type": {
                "default": "LINE",
                "description": "Preferred connector type; defaults to LINE",
                "type": "string",
                "maxLength": 10,
                "enum": [
                  "LINE",
                  "ELBOW",
                  "CURVE"
                ]
              },
              "target_side": {
                "description": "Preferred target endpoint side; UNKNOWN_SIDE lets server auto-resolve",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "UNKNOWN_SIDE",
                  "NORTH",
                  "EAST",
                  "SOUTH",
                  "WEST"
                ]
              },
              "source_side": {
                "description": "Preferred source endpoint side; UNKNOWN_SIDE lets server auto-resolve",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "UNKNOWN_SIDE",
                  "NORTH",
                  "EAST",
                  "SOUTH",
                  "WEST"
                ]
              }
            }
          },
          "target_object": {
            "description": "Target endpoint object",
            "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 object",
                "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": "Object id in the frame",
                "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 object",
                "type": "string",
                "maxLength": 200
              }
            }
          },
          "context": {
            "description": "Request context with zone scope",
            "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": "Target zone id (required)",
                "type": "string",
                "maxLength": 200
              },
              "validate_only": {
                "description": "Validate/dry-run mode when true",
                "type": "boolean"
              },
              "actor_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}$|^[0-9]+$)$",
                "description": "Calling actor/agent id",
                "type": "string",
                "maxLength": 200
              },
              "base_revision_id": {
                "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                "description": "Optional optimistic-concurrency token for mutating operations",
                "type": "string",
                "maxLength": 200
              },
              "request_id": {
                "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                "description": "Client-supplied request correlation id",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "zone_id"
            ]
          },
          "source_object": {
            "description": "Source endpoint object",
            "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 object",
                "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": "Object id in the frame",
                "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 object",
                "type": "string",
                "maxLength": 200
              }
            }
          }
        },
        "required": [
          "context",
          "source_object",
          "target_object"
        ]
      },
      "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"
        ]
      },
      "Connector_ConnectorType": {
        "type": "string",
        "enum": [
          "LINE",
          "ELBOW",
          "CURVE"
        ]
      },
      "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"
          }
        }
      },
      "AgentAlignObjectsRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "description": "Alignment or distribution mode",
            "type": "string",
            "maxLength": 50,
            "enum": [
              "ALIGN_MODE_UNSPECIFIED",
              "ALIGN_LEFT_EDGE",
              "ALIGN_RIGHT_EDGE",
              "ALIGN_TOP_EDGE",
              "ALIGN_BOTTOM_EDGE",
              "ALIGN_HORIZONTAL_CENTER",
              "ALIGN_VERTICAL_CENTER",
              "DISTRIBUTE_HORIZONTAL",
              "DISTRIBUTE_VERTICAL"
            ]
          },
          "objects": {
            "minItems": 2,
            "maxItems": 500,
            "description": "Objects to align or distribute (minimum 2)",
            "type": "array",
            "items": {
              "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 object",
                  "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": "Object id in the frame",
                  "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 object",
                  "type": "string",
                  "maxLength": 200
                }
              }
            }
          },
          "target": {
            "description": "Optional alignment target; defaults to WITHIN_SELECTION",
            "type": "object",
            "properties": {
              "reference": {
                "default": "WITHIN_SELECTION",
                "description": "Alignment reference; defaults to WITHIN_SELECTION",
                "type": "string",
                "maxLength": 50,
                "enum": [
                  "OBJECT_ALIGN_REFERENCE_UNSPECIFIED",
                  "WITHIN_SELECTION",
                  "CURRENT_FRAME",
                  "TARGET_BOUNDS"
                ]
              },
              "target_bounds": {
                "description": "Explicit bounds, used when reference is TARGET_BOUNDS",
                "type": "object",
                "properties": {
                  "x": {
                    "description": "Left position in canvas units",
                    "type": "number"
                  },
                  "width": {
                    "description": "Width in canvas units",
                    "type": "number"
                  },
                  "y": {
                    "description": "Top position in canvas units",
                    "type": "number"
                  },
                  "height": {
                    "description": "Height in canvas units",
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "required": [
          "objects",
          "mode"
        ]
      },
      "AnchoringConstraint_CrossAxisAlignment": {
        "type": "string",
        "enum": [
          "CROSS_AXIS_ALIGNMENT_UNSPECIFIED",
          "START",
          "CENTER",
          "END"
        ]
      },
      "AgentPlaceFrameRelativeRequest": {
        "type": "object",
        "properties": {
          "target_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": "Reference target frame",
            "type": "string",
            "maxLength": 200
          },
          "constraint": {
            "description": "Optional placement constraints",
            "type": "object",
            "properties": {
              "keep_inside_container": {
                "description": "Clamp final bounds within the primary container",
                "type": "boolean"
              },
              "avoid_overlap": {
                "description": "Reject or adjust placements that collide with other objects",
                "type": "boolean"
              },
              "cross_axis_alignment": {
                "default": "CENTER",
                "description": "Cross-axis alignment; defaults to CENTER",
                "type": "string",
                "maxLength": 40,
                "enum": [
                  "CROSS_AXIS_ALIGNMENT_UNSPECIFIED",
                  "START",
                  "CENTER",
                  "END"
                ]
              },
              "gap": {
                "description": "Requested edge-to-edge spacing between source and target (>= 0)",
                "type": "number"
              },
              "snap_to_grid": {
                "description": "Snap the final position to layout guides/grid",
                "type": "boolean"
              }
            }
          },
          "source_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 to move",
            "type": "string",
            "maxLength": 200
          },
          "relation": {
            "description": "Desired relation from source frame to target frame",
            "type": "string",
            "maxLength": 60,
            "enum": [
              "ANCHOR_RELATION_UNSPECIFIED",
              "ANCHOR_RELATION_LEFT",
              "ANCHOR_RELATION_RIGHT",
              "ANCHOR_RELATION_TOP",
              "ANCHOR_RELATION_BOTTOM"
            ]
          }
        },
        "required": [
          "source_frame_id",
          "target_frame_id",
          "relation"
        ]
      },
      "TidyFramesRequest": {
        "type": "object",
        "properties": {
          "fixed_spacing": {
            "format": "float",
            "type": "string"
          },
          "frame_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "direction": {
            "$ref": "#/components/schemas/TidyDirection"
          },
          "spacing_mode": {
            "$ref": "#/components/schemas/TidySpacingMode"
          },
          "preserve_order": {
            "type": "boolean"
          },
          "target": {
            "$ref": "#/components/schemas/FrameAlignTarget"
          }
        }
      },
      "ObjectRef": {
        "type": "object",
        "properties": {
          "zone_id": {
            "type": "string"
          },
          "object_id": {
            "type": "string"
          },
          "frame_id": {
            "type": "string"
          }
        }
      },
      "GetOccupiedBoundsRequest": {
        "type": "object",
        "properties": {
          "object_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VaniObjectType"
            }
          },
          "include_hidden": {
            "type": "boolean"
          },
          "scope": {
            "$ref": "#/components/schemas/SpatialScope"
          },
          "include_locked": {
            "type": "boolean"
          }
        }
      },
      "GetFramePlacementFeasibilityRequest": {
        "type": "object",
        "properties": {
          "target_frame_id": {
            "type": "string"
          },
          "constraint": {
            "$ref": "#/components/schemas/AnchoringConstraint"
          },
          "source_frame_id": {
            "type": "string"
          },
          "relation": {
            "$ref": "#/components/schemas/AnchorRelation"
          }
        }
      },
      "ContainerScope_ScopeType": {
        "type": "string",
        "enum": [
          "SCOPE_TYPE_UNSPECIFIED",
          "ZONE_ROOT",
          "FRAME_ROOT",
          "GROUP_ROOT"
        ]
      },
      "FindEmptyRegionRequest": {
        "type": "object",
        "properties": {
          "padding": {
            "format": "float",
            "type": "string"
          },
          "scope": {
            "$ref": "#/components/schemas/SpatialScope"
          },
          "required_width": {
            "format": "float",
            "type": "string"
          },
          "max_results": {
            "format": "int32",
            "type": "string"
          },
          "required_height": {
            "format": "float",
            "type": "string"
          }
        }
      },
      "GetObjectAlignmentStatusRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/AlignMode"
          },
          "objects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObjectRef"
            }
          },
          "target": {
            "$ref": "#/components/schemas/ObjectAlignTarget"
          }
        }
      },
      "Bounds": {
        "type": "object",
        "properties": {
          "x": {
            "format": "float",
            "type": "string"
          },
          "width": {
            "format": "float",
            "type": "string"
          },
          "y": {
            "format": "float",
            "type": "string"
          },
          "height": {
            "format": "float",
            "type": "string"
          }
        }
      },
      "FrameAlignTarget_AlignReference": {
        "type": "string",
        "enum": [
          "FRAME_ALIGN_REFERENCE_UNSPECIFIED",
          "WITHIN_SELECTION",
          "TARGET_BOUNDS"
        ]
      },
      "AnchorRelation": {
        "type": "string",
        "enum": [
          "ANCHOR_RELATION_UNSPECIFIED",
          "ANCHOR_RELATION_LEFT",
          "ANCHOR_RELATION_RIGHT",
          "ANCHOR_RELATION_TOP",
          "ANCHOR_RELATION_BOTTOM"
        ]
      },
      "CandidateRegion": {
        "type": "object",
        "properties": {
          "score": {
            "format": "float",
            "type": "string"
          },
          "bounds": {
            "$ref": "#/components/schemas/Bounds"
          },
          "rationale": {
            "type": "string"
          }
        }
      },
      "ObjectAlignTarget_AlignReference": {
        "type": "string",
        "enum": [
          "OBJECT_ALIGN_REFERENCE_UNSPECIFIED",
          "WITHIN_SELECTION",
          "CURRENT_FRAME",
          "TARGET_BOUNDS"
        ]
      },
      "GetPlacementFeasibilityResult": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          },
          "suggested_alternative": {
            "$ref": "#/components/schemas/CandidateRegion"
          },
          "feasible": {
            "type": "boolean"
          }
        }
      },
      "GetObjectPlacementFeasibilityRequest": {
        "type": "object",
        "properties": {
          "target_object": {
            "$ref": "#/components/schemas/ObjectRef"
          },
          "source_object": {
            "$ref": "#/components/schemas/ObjectRef"
          },
          "constraint": {
            "$ref": "#/components/schemas/AnchoringConstraint"
          },
          "relation": {
            "$ref": "#/components/schemas/AnchorRelation"
          }
        }
      },
      "BatchSuggestPlacementResponse": {
        "type": "object",
        "properties": {
          "responses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SuggestPlacementResponse"
            }
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          },
          "request_item_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Connector_ConnectionSide": {
        "type": "string",
        "enum": [
          "UNKNOWN_SIDE",
          "NORTH",
          "EAST",
          "SOUTH",
          "WEST"
        ]
      },
      "BatchFindEmptyRegionResponse": {
        "type": "object",
        "properties": {
          "responses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FindEmptyRegionResponse"
            }
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          },
          "request_item_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "AgentTidyFramesRequest": {
        "type": "object",
        "properties": {
          "fixed_spacing": {
            "description": "Gap used when spacing_mode is TIDY_SPACING_MODE_FIXED",
            "type": "number"
          },
          "frame_ids": {
            "minItems": 2,
            "maxItems": 500,
            "description": "Frames to tidy (minimum 2)",
            "type": "array",
            "items": {
              "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}$",
              "type": "string",
              "maxLength": 200
            }
          },
          "direction": {
            "description": "Tidy direction policy",
            "type": "string",
            "maxLength": 50,
            "enum": [
              "TIDY_DIRECTION_UNSPECIFIED",
              "TIDY_DIRECTION_AUTO",
              "TIDY_DIRECTION_HORIZONTAL",
              "TIDY_DIRECTION_VERTICAL"
            ]
          },
          "spacing_mode": {
            "description": "Spacing policy",
            "type": "string",
            "maxLength": 50,
            "enum": [
              "TIDY_SPACING_MODE_UNSPECIFIED",
              "TIDY_SPACING_MODE_AUTO",
              "TIDY_SPACING_MODE_FIXED"
            ]
          },
          "preserve_order": {
            "description": "Preserve current traversal order while tidying",
            "type": "boolean"
          },
          "target": {
            "description": "Optional tidy target; defaults to WITHIN_SELECTION",
            "type": "object",
            "properties": {
              "reference": {
                "default": "WITHIN_SELECTION",
                "description": "Alignment reference; defaults to WITHIN_SELECTION",
                "type": "string",
                "maxLength": 50,
                "enum": [
                  "FRAME_ALIGN_REFERENCE_UNSPECIFIED",
                  "WITHIN_SELECTION",
                  "TARGET_BOUNDS"
                ]
              },
              "target_bounds": {
                "description": "Explicit bounds, used when reference is TARGET_BOUNDS",
                "type": "object",
                "properties": {
                  "x": {
                    "description": "Left position in canvas units",
                    "type": "number"
                  },
                  "width": {
                    "description": "Width in canvas units",
                    "type": "number"
                  },
                  "y": {
                    "description": "Top position in canvas units",
                    "type": "number"
                  },
                  "height": {
                    "description": "Height in canvas units",
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "required": [
          "frame_ids"
        ]
      },
      "SpatialBatchPlacementFeasibilityRequest": {
        "type": "object",
        "properties": {
          "requests": {
            "minItems": 1,
            "maxItems": 50,
            "description": "requests. Max length: 2000000 (required)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "padding": {
                  "description": "Required clearance from nearby objects and bounds",
                  "type": "number"
                },
                "object_type": {
                  "description": "Type of object to be placed",
                  "type": "string",
                  "maxLength": 60,
                  "enum": [
                    "VANI_OBJECT_TYPE_UNSPECIFIED",
                    "VANI_OBJECT_TYPE_SHAPE",
                    "VANI_OBJECT_TYPE_CONNECTOR",
                    "VANI_OBJECT_TYPE_PICTURE",
                    "VANI_OBJECT_TYPE_GROUP_SHAPE",
                    "VANI_OBJECT_TYPE_DOMAIN_DIAGRAM",
                    "VANI_OBJECT_TYPE_DIAGRAM",
                    "VANI_OBJECT_TYPE_STRUCTURE",
                    "VANI_OBJECT_TYPE_STRUCTURE_MINDMAP",
                    "VANI_OBJECT_TYPE_STRUCTURE_KANBAN",
                    "VANI_OBJECT_TYPE_STRUCTURE_STACK",
                    "VANI_OBJECT_TYPE_TABLE",
                    "VANI_OBJECT_TYPE_CHART",
                    "VANI_OBJECT_TYPE_DATABASE_TABLE",
                    "VANI_OBJECT_TYPE_STICKY_NOTE"
                  ]
                },
                "near_object": {
                  "description": "Optional anchor object for relation-aware validation",
                  "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 object",
                      "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": "Object id in the frame",
                      "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 object",
                      "type": "string",
                      "maxLength": 200
                    }
                  }
                },
                "scope": {
                  "description": "Optional scope selector; defaults to SCOPE_TYPE_ZONE",
                  "type": "object",
                  "properties": {
                    "percent_bounds": {
                      "description": "Region refinement: bounds normalized to the selected container. Oneof with absolute_bounds",
                      "type": "object",
                      "properties": {
                        "right_pct": {
                          "description": "Right edge as 0-1 fraction of zone width",
                          "type": "number"
                        },
                        "top_pct": {
                          "description": "Top edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "bottom_pct": {
                          "description": "Bottom edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "left_pct": {
                          "description": "Left edge as 0-1 fraction of zone width",
                          "type": "number"
                        }
                      }
                    },
                    "absolute_bounds": {
                      "description": "Region refinement: absolute bounds in zone coordinates. Oneof with percent_bounds",
                      "type": "object",
                      "properties": {
                        "x": {
                          "description": "Left position in canvas units",
                          "type": "number"
                        },
                        "width": {
                          "description": "Width in canvas units",
                          "type": "number"
                        },
                        "y": {
                          "description": "Top position in canvas units",
                          "type": "number"
                        },
                        "height": {
                          "description": "Height in canvas units",
                          "type": "number"
                        }
                      }
                    },
                    "scope_type": {
                      "default": "SCOPE_TYPE_ZONE",
                      "description": "Scope type selector; defaults to SCOPE_TYPE_ZONE",
                      "type": "string",
                      "maxLength": 50,
                      "enum": [
                        "SCOPE_TYPE_UNSPECIFIED",
                        "SCOPE_TYPE_ZONE",
                        "SCOPE_TYPE_FRAME"
                      ]
                    },
                    "frame_id": {
                      "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                      "description": "Frame id when scope_type is SCOPE_TYPE_FRAME",
                      "type": "string",
                      "maxLength": 200
                    }
                  }
                },
                "required_width": {
                  "description": "Footprint width to validate",
                  "type": "number"
                },
                "required_height": {
                  "description": "Footprint height to validate",
                  "type": "number"
                }
              },
              "required": [
                "required_width",
                "required_height"
              ]
            }
          },
          "request_item_ids": {
            "maxItems": 50,
            "description": "Optional correlation IDs echoed back in response",
            "type": "array",
            "items": {
              "pattern": "^(?:[A-Za-z_0-9- ]+)$",
              "type": "string",
              "maxLength": 200
            }
          }
        },
        "required": [
          "requests"
        ]
      },
      "SuggestPlacementRequest": {
        "type": "object",
        "properties": {
          "padding": {
            "format": "float",
            "type": "string"
          },
          "object_type": {
            "$ref": "#/components/schemas/VaniObjectType"
          },
          "near_object": {
            "$ref": "#/components/schemas/ObjectRef"
          },
          "scope": {
            "$ref": "#/components/schemas/SpatialScope"
          },
          "required_width": {
            "format": "float",
            "type": "string"
          },
          "max_results": {
            "format": "int32",
            "type": "string"
          },
          "required_height": {
            "format": "float",
            "type": "string"
          }
        }
      },
      "GetOccupiedBoundsResponse": {
        "type": "object",
        "properties": {
          "occupied_bounds": {
            "$ref": "#/components/schemas/Bounds"
          },
          "object_count": {
            "format": "int32",
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "AgentTidyObjectsRequest": {
        "type": "object",
        "properties": {
          "fixed_spacing": {
            "description": "Gap used when spacing_mode is TIDY_SPACING_MODE_FIXED",
            "type": "number"
          },
          "objects": {
            "minItems": 2,
            "maxItems": 500,
            "description": "Objects to tidy (minimum 2)",
            "type": "array",
            "items": {
              "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 object",
                  "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": "Object id in the frame",
                  "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 object",
                  "type": "string",
                  "maxLength": 200
                }
              }
            }
          },
          "direction": {
            "description": "Tidy direction policy",
            "type": "string",
            "maxLength": 50,
            "enum": [
              "TIDY_DIRECTION_UNSPECIFIED",
              "TIDY_DIRECTION_AUTO",
              "TIDY_DIRECTION_HORIZONTAL",
              "TIDY_DIRECTION_VERTICAL"
            ]
          },
          "spacing_mode": {
            "description": "Spacing policy",
            "type": "string",
            "maxLength": 50,
            "enum": [
              "TIDY_SPACING_MODE_UNSPECIFIED",
              "TIDY_SPACING_MODE_AUTO",
              "TIDY_SPACING_MODE_FIXED"
            ]
          },
          "preserve_order": {
            "description": "Preserve current traversal order while tidying",
            "type": "boolean"
          },
          "target": {
            "description": "Optional tidy target; defaults to WITHIN_SELECTION",
            "type": "object",
            "properties": {
              "reference": {
                "default": "WITHIN_SELECTION",
                "description": "Alignment reference; defaults to WITHIN_SELECTION",
                "type": "string",
                "maxLength": 50,
                "enum": [
                  "OBJECT_ALIGN_REFERENCE_UNSPECIFIED",
                  "WITHIN_SELECTION",
                  "CURRENT_FRAME",
                  "TARGET_BOUNDS"
                ]
              },
              "target_bounds": {
                "description": "Explicit bounds, used when reference is TARGET_BOUNDS",
                "type": "object",
                "properties": {
                  "x": {
                    "description": "Left position in canvas units",
                    "type": "number"
                  },
                  "width": {
                    "description": "Width in canvas units",
                    "type": "number"
                  },
                  "y": {
                    "description": "Top position in canvas units",
                    "type": "number"
                  },
                  "height": {
                    "description": "Height in canvas units",
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "required": [
          "objects"
        ]
      },
      "SpatialScope_ScopeType": {
        "type": "string",
        "enum": [
          "SCOPE_TYPE_UNSPECIFIED",
          "SCOPE_TYPE_ZONE",
          "SCOPE_TYPE_FRAME"
        ]
      },
      "FindEmptyRegionResponse": {
        "type": "object",
        "properties": {
          "candidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CandidateRegion"
            }
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "GetObjectsRequest": {
        "type": "object",
        "properties": {
          "object_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VaniObjectType"
            }
          },
          "include_hidden": {
            "type": "boolean"
          },
          "scope": {
            "$ref": "#/components/schemas/SpatialScope"
          },
          "max_results": {
            "format": "int32",
            "type": "string"
          },
          "include_locked": {
            "type": "boolean"
          }
        }
      },
      "SpatialComputationScope": {
        "type": "object",
        "x-vani-oneof-groups": [
          {
            "members": [
              "container_scope",
              "absolute_bounds",
              "percent_bounds"
            ],
            "name": "mode"
          }
        ],
        "properties": {
          "percent_bounds": {
            "$ref": "#/components/schemas/PercentBounds"
          },
          "container_scope": {
            "$ref": "#/components/schemas/ContainerScope"
          },
          "absolute_bounds": {
            "$ref": "#/components/schemas/Bounds"
          }
        }
      },
      "SpatialBatchFindEmptyRegionRequest": {
        "type": "object",
        "properties": {
          "requests": {
            "minItems": 1,
            "maxItems": 50,
            "description": "requests. Max length: 2000000 (required)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "padding": {
                  "description": "Additional clearance after footprint fit is checked",
                  "type": "number"
                },
                "scope": {
                  "description": "Optional scope selector; defaults to SCOPE_TYPE_ZONE",
                  "type": "object",
                  "properties": {
                    "percent_bounds": {
                      "description": "Region refinement: bounds normalized to the selected container. Oneof with absolute_bounds",
                      "type": "object",
                      "properties": {
                        "right_pct": {
                          "description": "Right edge as 0-1 fraction of zone width",
                          "type": "number"
                        },
                        "top_pct": {
                          "description": "Top edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "bottom_pct": {
                          "description": "Bottom edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "left_pct": {
                          "description": "Left edge as 0-1 fraction of zone width",
                          "type": "number"
                        }
                      }
                    },
                    "absolute_bounds": {
                      "description": "Region refinement: absolute bounds in zone coordinates. Oneof with percent_bounds",
                      "type": "object",
                      "properties": {
                        "x": {
                          "description": "Left position in canvas units",
                          "type": "number"
                        },
                        "width": {
                          "description": "Width in canvas units",
                          "type": "number"
                        },
                        "y": {
                          "description": "Top position in canvas units",
                          "type": "number"
                        },
                        "height": {
                          "description": "Height in canvas units",
                          "type": "number"
                        }
                      }
                    },
                    "scope_type": {
                      "default": "SCOPE_TYPE_ZONE",
                      "description": "Scope type selector; defaults to SCOPE_TYPE_ZONE",
                      "type": "string",
                      "maxLength": 50,
                      "enum": [
                        "SCOPE_TYPE_UNSPECIFIED",
                        "SCOPE_TYPE_ZONE",
                        "SCOPE_TYPE_FRAME"
                      ]
                    },
                    "frame_id": {
                      "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                      "description": "Frame id when scope_type is SCOPE_TYPE_FRAME",
                      "type": "string",
                      "maxLength": 200
                    }
                  }
                },
                "required_width": {
                  "description": "Free-region width required for the footprint",
                  "type": "number"
                },
                "max_results": {
                  "description": "Maximum ranked regions to return; unset uses the server default",
                  "type": "integer"
                },
                "required_height": {
                  "description": "Free-region height required for the footprint",
                  "type": "number"
                }
              },
              "required": [
                "required_width",
                "required_height"
              ]
            }
          },
          "request_item_ids": {
            "maxItems": 50,
            "description": "Optional correlation IDs echoed back in response",
            "type": "array",
            "items": {
              "pattern": "^(?:[A-Za-z_0-9- ]+)$",
              "type": "string",
              "maxLength": 200
            }
          }
        },
        "required": [
          "requests"
        ]
      },
      "AgentError": {
        "type": "object",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/AgentErrorCode"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "TidyDirection": {
        "type": "string",
        "enum": [
          "TIDY_DIRECTION_UNSPECIFIED",
          "TIDY_DIRECTION_AUTO",
          "TIDY_DIRECTION_HORIZONTAL",
          "TIDY_DIRECTION_VERTICAL"
        ]
      },
      "VaniObjectType": {
        "type": "string",
        "enum": [
          "VANI_OBJECT_TYPE_UNSPECIFIED",
          "VANI_OBJECT_TYPE_SHAPE",
          "VANI_OBJECT_TYPE_CONNECTOR",
          "VANI_OBJECT_TYPE_PICTURE",
          "VANI_OBJECT_TYPE_GROUP_SHAPE",
          "VANI_OBJECT_TYPE_DOMAIN_DIAGRAM",
          "VANI_OBJECT_TYPE_DIAGRAM",
          "VANI_OBJECT_TYPE_STRUCTURE",
          "VANI_OBJECT_TYPE_STRUCTURE_MINDMAP",
          "VANI_OBJECT_TYPE_STRUCTURE_KANBAN",
          "VANI_OBJECT_TYPE_STRUCTURE_STACK",
          "VANI_OBJECT_TYPE_TABLE",
          "VANI_OBJECT_TYPE_CHART",
          "VANI_OBJECT_TYPE_DATABASE_TABLE",
          "VANI_OBJECT_TYPE_STICKY_NOTE"
        ]
      },
      "TidyObjectsRequest": {
        "type": "object",
        "properties": {
          "fixed_spacing": {
            "format": "float",
            "type": "string"
          },
          "objects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObjectRef"
            }
          },
          "direction": {
            "$ref": "#/components/schemas/TidyDirection"
          },
          "spacing_mode": {
            "$ref": "#/components/schemas/TidySpacingMode"
          },
          "preserve_order": {
            "type": "boolean"
          },
          "target": {
            "$ref": "#/components/schemas/ObjectAlignTarget"
          }
        }
      },
      "ObjectAlignTarget": {
        "type": "object",
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/ObjectAlignTarget_AlignReference"
          },
          "target_bounds": {
            "$ref": "#/components/schemas/Bounds"
          }
        }
      },
      "ConnectionOptions": {
        "type": "object",
        "properties": {
          "connector_type": {
            "$ref": "#/components/schemas/Connector_ConnectorType"
          },
          "target_side": {
            "$ref": "#/components/schemas/Connector_ConnectionSide"
          },
          "source_side": {
            "$ref": "#/components/schemas/Connector_ConnectionSide"
          }
        }
      },
      "AgentReconnectConnectionPayload": {
        "type": "object",
        "properties": {
          "current_object": {
            "description": "Existing endpoint object to be replaced",
            "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 object",
                "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": "Object id in the frame",
                "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 object",
                "type": "string",
                "maxLength": 200
              }
            }
          },
          "new_object": {
            "description": "New endpoint object",
            "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 object",
                "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": "Object id in the frame",
                "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 object",
                "type": "string",
                "maxLength": 200
              }
            }
          },
          "payload": {
            "description": "Shared reconnect options payload (new_side)",
            "type": "object",
            "properties": {
              "new_side": {
                "description": "Preferred side on new_object; UNKNOWN_SIDE lets server choose",
                "type": "string",
                "maxLength": 20,
                "enum": [
                  "UNKNOWN_SIDE",
                  "NORTH",
                  "EAST",
                  "SOUTH",
                  "WEST"
                ]
              }
            }
          },
          "connection_object": {
            "description": "Existing connector object to reconnect",
            "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 object",
                "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": "Object id in the frame",
                "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 object",
                "type": "string",
                "maxLength": 200
              }
            }
          },
          "context": {
            "description": "Request context with zone scope",
            "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": "Target zone id (required)",
                "type": "string",
                "maxLength": 200
              },
              "validate_only": {
                "description": "Validate/dry-run mode when true",
                "type": "boolean"
              },
              "actor_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}$|^[0-9]+$)$",
                "description": "Calling actor/agent id",
                "type": "string",
                "maxLength": 200
              },
              "base_revision_id": {
                "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                "description": "Optional optimistic-concurrency token for mutating operations",
                "type": "string",
                "maxLength": 200
              },
              "request_id": {
                "pattern": "^(?:[A-Za-z_0-9- ]+)$",
                "description": "Client-supplied request correlation id",
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "zone_id"
            ]
          }
        },
        "required": [
          "context",
          "connection_object",
          "current_object",
          "new_object"
        ]
      },
      "FrameAlignTarget": {
        "type": "object",
        "properties": {
          "reference": {
            "$ref": "#/components/schemas/FrameAlignTarget_AlignReference"
          },
          "target_bounds": {
            "$ref": "#/components/schemas/Bounds"
          }
        }
      },
      "SpatialBatchGetObjectsRequest": {
        "type": "object",
        "properties": {
          "requests": {
            "minItems": 1,
            "maxItems": 50,
            "description": "Array of GetObjects sub-requests",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "object_types": {
                  "maxItems": 20,
                  "description": "Object-type filter; empty means all types",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 60,
                    "enum": [
                      "VANI_OBJECT_TYPE_UNSPECIFIED",
                      "VANI_OBJECT_TYPE_SHAPE",
                      "VANI_OBJECT_TYPE_CONNECTOR",
                      "VANI_OBJECT_TYPE_PICTURE",
                      "VANI_OBJECT_TYPE_GROUP_SHAPE",
                      "VANI_OBJECT_TYPE_DOMAIN_DIAGRAM",
                      "VANI_OBJECT_TYPE_DIAGRAM",
                      "VANI_OBJECT_TYPE_STRUCTURE",
                      "VANI_OBJECT_TYPE_STRUCTURE_MINDMAP",
                      "VANI_OBJECT_TYPE_STRUCTURE_KANBAN",
                      "VANI_OBJECT_TYPE_STRUCTURE_STACK",
                      "VANI_OBJECT_TYPE_TABLE",
                      "VANI_OBJECT_TYPE_CHART",
                      "VANI_OBJECT_TYPE_DATABASE_TABLE",
                      "VANI_OBJECT_TYPE_STICKY_NOTE"
                    ]
                  }
                },
                "include_hidden": {
                  "description": "Include hidden objects when true",
                  "type": "boolean"
                },
                "scope": {
                  "description": "Optional scope selector; defaults to the full zone",
                  "type": "object",
                  "properties": {
                    "percent_bounds": {
                      "description": "Region refinement: bounds normalized to the selected container. Oneof with absolute_bounds",
                      "type": "object",
                      "properties": {
                        "right_pct": {
                          "description": "Right edge as 0-1 fraction of zone width",
                          "type": "number"
                        },
                        "top_pct": {
                          "description": "Top edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "bottom_pct": {
                          "description": "Bottom edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "left_pct": {
                          "description": "Left edge as 0-1 fraction of zone width",
                          "type": "number"
                        }
                      }
                    },
                    "absolute_bounds": {
                      "description": "Region refinement: absolute bounds in zone coordinates. Oneof with percent_bounds",
                      "type": "object",
                      "properties": {
                        "x": {
                          "description": "Left position in canvas units",
                          "type": "number"
                        },
                        "width": {
                          "description": "Width in canvas units",
                          "type": "number"
                        },
                        "y": {
                          "description": "Top position in canvas units",
                          "type": "number"
                        },
                        "height": {
                          "description": "Height in canvas units",
                          "type": "number"
                        }
                      }
                    },
                    "scope_type": {
                      "default": "SCOPE_TYPE_ZONE",
                      "description": "Scope type selector; defaults to SCOPE_TYPE_ZONE",
                      "type": "string",
                      "maxLength": 50,
                      "enum": [
                        "SCOPE_TYPE_UNSPECIFIED",
                        "SCOPE_TYPE_ZONE",
                        "SCOPE_TYPE_FRAME"
                      ]
                    },
                    "frame_id": {
                      "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                      "description": "Frame id when scope_type is SCOPE_TYPE_FRAME",
                      "type": "string",
                      "maxLength": 200
                    }
                  }
                },
                "max_results": {
                  "description": "Maximum hits to return; unset uses the server default",
                  "type": "integer"
                },
                "include_locked": {
                  "description": "Include locked objects when true",
                  "type": "boolean"
                }
              }
            }
          },
          "request_item_ids": {
            "maxItems": 50,
            "description": "Optional correlation IDs echoed back in response",
            "type": "array",
            "items": {
              "pattern": "^(?:[A-Za-z_0-9- ]+)$",
              "type": "string",
              "maxLength": 200
            }
          }
        },
        "required": [
          "requests"
        ]
      },
      "BatchGetOccupiedBoundsResponse": {
        "type": "object",
        "properties": {
          "responses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetOccupiedBoundsResponse"
            }
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          },
          "request_item_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetPlacementFeasibilityResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/GetPlacementFeasibilityResult"
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      },
      "ContainerScope": {
        "type": "object",
        "properties": {
          "scope_type": {
            "$ref": "#/components/schemas/ContainerScope_ScopeType"
          }
        }
      },
      "TidySpacingMode": {
        "type": "string",
        "enum": [
          "TIDY_SPACING_MODE_UNSPECIFIED",
          "TIDY_SPACING_MODE_AUTO",
          "TIDY_SPACING_MODE_FIXED"
        ]
      },
      "SpatialBatchSuggestPlacementRequest": {
        "type": "object",
        "properties": {
          "requests": {
            "minItems": 1,
            "maxItems": 50,
            "description": "requests. Max length: 2000000 (required)",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "padding": {
                  "description": "Additional clearance after footprint fit is checked",
                  "type": "number"
                },
                "object_type": {
                  "description": "Type of object to be placed",
                  "type": "string",
                  "maxLength": 60,
                  "enum": [
                    "VANI_OBJECT_TYPE_UNSPECIFIED",
                    "VANI_OBJECT_TYPE_SHAPE",
                    "VANI_OBJECT_TYPE_CONNECTOR",
                    "VANI_OBJECT_TYPE_PICTURE",
                    "VANI_OBJECT_TYPE_GROUP_SHAPE",
                    "VANI_OBJECT_TYPE_DOMAIN_DIAGRAM",
                    "VANI_OBJECT_TYPE_DIAGRAM",
                    "VANI_OBJECT_TYPE_STRUCTURE",
                    "VANI_OBJECT_TYPE_STRUCTURE_MINDMAP",
                    "VANI_OBJECT_TYPE_STRUCTURE_KANBAN",
                    "VANI_OBJECT_TYPE_STRUCTURE_STACK",
                    "VANI_OBJECT_TYPE_TABLE",
                    "VANI_OBJECT_TYPE_CHART",
                    "VANI_OBJECT_TYPE_DATABASE_TABLE",
                    "VANI_OBJECT_TYPE_STICKY_NOTE"
                  ]
                },
                "near_object": {
                  "description": "Optional nearby anchor object",
                  "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 object",
                      "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": "Object id in the frame",
                      "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 object",
                      "type": "string",
                      "maxLength": 200
                    }
                  }
                },
                "scope": {
                  "description": "Optional scope selector; defaults to SCOPE_TYPE_ZONE",
                  "type": "object",
                  "properties": {
                    "percent_bounds": {
                      "description": "Region refinement: bounds normalized to the selected container. Oneof with absolute_bounds",
                      "type": "object",
                      "properties": {
                        "right_pct": {
                          "description": "Right edge as 0-1 fraction of zone width",
                          "type": "number"
                        },
                        "top_pct": {
                          "description": "Top edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "bottom_pct": {
                          "description": "Bottom edge as 0-1 fraction of zone height",
                          "type": "number"
                        },
                        "left_pct": {
                          "description": "Left edge as 0-1 fraction of zone width",
                          "type": "number"
                        }
                      }
                    },
                    "absolute_bounds": {
                      "description": "Region refinement: absolute bounds in zone coordinates. Oneof with percent_bounds",
                      "type": "object",
                      "properties": {
                        "x": {
                          "description": "Left position in canvas units",
                          "type": "number"
                        },
                        "width": {
                          "description": "Width in canvas units",
                          "type": "number"
                        },
                        "y": {
                          "description": "Top position in canvas units",
                          "type": "number"
                        },
                        "height": {
                          "description": "Height in canvas units",
                          "type": "number"
                        }
                      }
                    },
                    "scope_type": {
                      "default": "SCOPE_TYPE_ZONE",
                      "description": "Scope type selector; defaults to SCOPE_TYPE_ZONE",
                      "type": "string",
                      "maxLength": 50,
                      "enum": [
                        "SCOPE_TYPE_UNSPECIFIED",
                        "SCOPE_TYPE_ZONE",
                        "SCOPE_TYPE_FRAME"
                      ]
                    },
                    "frame_id": {
                      "pattern": "^[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}$",
                      "description": "Frame id when scope_type is SCOPE_TYPE_FRAME",
                      "type": "string",
                      "maxLength": 200
                    }
                  }
                },
                "required_width": {
                  "description": "Free-region width required for the footprint",
                  "type": "number"
                },
                "max_results": {
                  "description": "Maximum ranked placements to return; unset uses the server default",
                  "type": "integer"
                },
                "required_height": {
                  "description": "Free-region height required for the footprint",
                  "type": "number"
                }
              },
              "required": [
                "required_width",
                "required_height"
              ]
            }
          },
          "request_item_ids": {
            "maxItems": 50,
            "description": "Optional correlation IDs echoed back in response",
            "type": "array",
            "items": {
              "pattern": "^(?:[A-Za-z_0-9- ]+)$",
              "type": "string",
              "maxLength": 200
            }
          }
        },
        "required": [
          "requests"
        ]
      },
      "BatchGetPlacementFeasibilityResponse": {
        "type": "object",
        "properties": {
          "responses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetPlacementFeasibilityResponse"
            }
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          },
          "request_item_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "GetFrameAlignmentStatusRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/AlignMode"
          },
          "frame_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "target": {
            "$ref": "#/components/schemas/FrameAlignTarget"
          }
        }
      },
      "AlignMode": {
        "type": "string",
        "enum": [
          "ALIGN_MODE_UNSPECIFIED",
          "ALIGN_LEFT_EDGE",
          "ALIGN_RIGHT_EDGE",
          "ALIGN_TOP_EDGE",
          "ALIGN_BOTTOM_EDGE",
          "ALIGN_HORIZONTAL_CENTER",
          "ALIGN_VERTICAL_CENTER",
          "DISTRIBUTE_HORIZONTAL",
          "DISTRIBUTE_VERTICAL"
        ]
      },
      "AgentAlignFramesRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "description": "Alignment or distribution mode",
            "type": "string",
            "maxLength": 50,
            "enum": [
              "ALIGN_MODE_UNSPECIFIED",
              "ALIGN_LEFT_EDGE",
              "ALIGN_RIGHT_EDGE",
              "ALIGN_TOP_EDGE",
              "ALIGN_BOTTOM_EDGE",
              "ALIGN_HORIZONTAL_CENTER",
              "ALIGN_VERTICAL_CENTER",
              "DISTRIBUTE_HORIZONTAL",
              "DISTRIBUTE_VERTICAL"
            ]
          },
          "frame_ids": {
            "minItems": 2,
            "maxItems": 500,
            "description": "Frames to align or distribute (minimum 2)",
            "type": "array",
            "items": {
              "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}$",
              "type": "string",
              "maxLength": 200
            }
          },
          "target": {
            "description": "Optional alignment target; defaults to WITHIN_SELECTION",
            "type": "object",
            "properties": {
              "reference": {
                "default": "WITHIN_SELECTION",
                "description": "Alignment reference; defaults to WITHIN_SELECTION",
                "type": "string",
                "maxLength": 50,
                "enum": [
                  "FRAME_ALIGN_REFERENCE_UNSPECIFIED",
                  "WITHIN_SELECTION",
                  "TARGET_BOUNDS"
                ]
              },
              "target_bounds": {
                "description": "Explicit bounds, used when reference is TARGET_BOUNDS",
                "type": "object",
                "properties": {
                  "x": {
                    "description": "Left position in canvas units",
                    "type": "number"
                  },
                  "width": {
                    "description": "Width in canvas units",
                    "type": "number"
                  },
                  "y": {
                    "description": "Top position in canvas units",
                    "type": "number"
                  },
                  "height": {
                    "description": "Height in canvas units",
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "required": [
          "frame_ids",
          "mode"
        ]
      },
      "AgentPlaceObjectRelativeRequest": {
        "type": "object",
        "properties": {
          "target_object": {
            "description": "Reference target object",
            "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 object",
                "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": "Object id in the frame",
                "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 object",
                "type": "string",
                "maxLength": 200
              }
            }
          },
          "source_object": {
            "description": "Object to move",
            "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 object",
                "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": "Object id in the frame",
                "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 object",
                "type": "string",
                "maxLength": 200
              }
            }
          },
          "constraint": {
            "description": "Optional placement constraints",
            "type": "object",
            "properties": {
              "keep_inside_container": {
                "description": "Clamp final bounds within the primary container",
                "type": "boolean"
              },
              "avoid_overlap": {
                "description": "Reject or adjust placements that collide with other objects",
                "type": "boolean"
              },
              "cross_axis_alignment": {
                "default": "CENTER",
                "description": "Cross-axis alignment; defaults to CENTER",
                "type": "string",
                "maxLength": 40,
                "enum": [
                  "CROSS_AXIS_ALIGNMENT_UNSPECIFIED",
                  "START",
                  "CENTER",
                  "END"
                ]
              },
              "gap": {
                "description": "Requested edge-to-edge spacing between source and target (>= 0)",
                "type": "number"
              },
              "snap_to_grid": {
                "description": "Snap the final position to layout guides/grid",
                "type": "boolean"
              }
            }
          },
          "relation": {
            "description": "Desired relation from source to target",
            "type": "string",
            "maxLength": 60,
            "enum": [
              "ANCHOR_RELATION_UNSPECIFIED",
              "ANCHOR_RELATION_LEFT",
              "ANCHOR_RELATION_RIGHT",
              "ANCHOR_RELATION_TOP",
              "ANCHOR_RELATION_BOTTOM"
            ]
          }
        },
        "required": [
          "source_object",
          "target_object",
          "relation"
        ]
      },
      "GetPlacementFeasibilityRequest": {
        "type": "object",
        "properties": {
          "padding": {
            "format": "float",
            "type": "string"
          },
          "object_type": {
            "$ref": "#/components/schemas/VaniObjectType"
          },
          "near_object": {
            "$ref": "#/components/schemas/ObjectRef"
          },
          "scope": {
            "$ref": "#/components/schemas/SpatialScope"
          },
          "required_width": {
            "format": "float",
            "type": "string"
          },
          "required_height": {
            "format": "float",
            "type": "string"
          }
        }
      },
      "SpatialScope": {
        "type": "object",
        "x-vani-oneof-groups": [
          {
            "members": [
              "absolute_bounds",
              "percent_bounds"
            ],
            "name": "region"
          }
        ],
        "properties": {
          "percent_bounds": {
            "$ref": "#/components/schemas/PercentBounds"
          },
          "absolute_bounds": {
            "$ref": "#/components/schemas/Bounds"
          },
          "scope_type": {
            "$ref": "#/components/schemas/SpatialScope_ScopeType"
          },
          "frame_id": {
            "type": "string"
          }
        }
      },
      "AnchoringConstraint": {
        "type": "object",
        "properties": {
          "keep_inside_container": {
            "type": "boolean"
          },
          "avoid_overlap": {
            "type": "boolean"
          },
          "cross_axis_alignment": {
            "$ref": "#/components/schemas/AnchoringConstraint_CrossAxisAlignment"
          },
          "gap": {
            "format": "float",
            "type": "string"
          },
          "snap_to_grid": {
            "type": "boolean"
          }
        }
      },
      "GetConnectionFeasibilityRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "$ref": "#/components/schemas/ConnectionOptions"
          },
          "target_object": {
            "$ref": "#/components/schemas/ObjectRef"
          },
          "source_object": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        },
        "required": [
          "source_object",
          "target_object"
        ]
      },
      "PercentBounds": {
        "type": "object",
        "properties": {
          "right_pct": {
            "format": "float",
            "type": "string"
          },
          "top_pct": {
            "format": "float",
            "type": "string"
          },
          "bottom_pct": {
            "format": "float",
            "type": "string"
          },
          "left_pct": {
            "format": "float",
            "type": "string"
          }
        }
      },
      "GetClearanceAroundObjectRequest": {
        "type": "object",
        "properties": {
          "object_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VaniObjectType"
            }
          },
          "include_hidden": {
            "type": "boolean"
          },
          "scope": {
            "$ref": "#/components/schemas/SpatialComputationScope"
          },
          "include_locked": {
            "type": "boolean"
          },
          "object": {
            "$ref": "#/components/schemas/ObjectRef"
          }
        }
      },
      "SuggestPlacementResponse": {
        "type": "object",
        "properties": {
          "candidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CandidateRegion"
            }
          },
          "error": {
            "$ref": "#/components/schemas/AgentError"
          }
        }
      }
    },
    "responses": {
      "RateLimitExceededThisOperationAllows30Re": {
        "description": "Rate limit exceeded - this operation allows 30 requests per minute per user",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniError"
            }
          }
        }
      },
      "SuccessfulResponse": {
        "description": "Successful response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniEnvelope"
            }
          }
        }
      },
      "InvalidRequestValidationFailed": {
        "description": "Invalid request - validation failed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VaniError"
            }
          }
        }
      },
      "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"
            }
          }
        }
      }
    },
    "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}/anchoring/frames/alignment-status": {
      "get": {
        "summary": "Check whether selected frames already satisfy a requested alignment mode and optional target bounds",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getAnchoringFrameAlignmentStatus",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetFrameAlignmentStatusRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetFrameAlignmentStatusRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "anchoring_query",
            "description": "`anchoring_query` — JSON-encoded GetFrameAlignmentStatus request: frame_ids, mode, optional target. 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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/frames/tidy": {
      "put": {
        "summary": "Apply tidy grid layout to selected frames using requested spacing and direction policy",
        "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/AgentTidyFramesRequest"
              }
            }
          }
        },
        "operationId": "updateAnchoringFrameTidy",
        "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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/suggest-placement/batch": {
      "post": {
        "summary": "Get ranked placement candidates for several objects 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/SpatialBatchSuggestPlacementRequest"
              }
            }
          }
        },
        "operationId": "querySuggestedPlacementsBatch",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/BatchSuggestPlacementResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "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": 30
        },
        "tags": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/objects/tidy": {
      "put": {
        "summary": "Apply tidy grid layout to selected objects using requested spacing and direction policy",
        "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/AgentTidyObjectsRequest"
              }
            }
          }
        },
        "operationId": "updateAnchoringObjectTidy",
        "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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/placement-feasibility": {
      "get": {
        "summary": "Check whether a footprint fits within a scope without overlapping",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getSpatialSearchPlacementFeasibility",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetPlacementFeasibilityRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetPlacementFeasibilityRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "spatial_query",
            "description": "`spatial_query` — JSON-encoded GetPlacementFeasibility request: required_width, required_height, optional scope/padding/object_type/near_object. 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": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/suggest-placement": {
      "get": {
        "summary": "Get ranked placement candidates for a new object",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getSpatialSearchSuggestPlacement",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/SuggestPlacementRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/SuggestPlacementRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "spatial_query",
            "description": "`spatial_query` — JSON-encoded SuggestPlacement request: required_width, required_height, optional scope/padding/object_type/near_object/max_results. 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": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/frames/placement-feasibility": {
      "get": {
        "summary": "Check whether a source frame can be placed relative to a target frame without violating constraints",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getAnchoringFramePlacementFeasibility",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetFramePlacementFeasibilityRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetFramePlacementFeasibilityRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "anchoring_query",
            "description": "`anchoring_query` — JSON-encoded GetFramePlacementFeasibility request: source_frame_id, target_frame_id, relation, optional constraint. 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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/frames/align": {
      "put": {
        "summary": "Align selected frames using a requested alignment mode and optional target bounds",
        "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/AgentAlignFramesRequest"
              }
            }
          }
        },
        "operationId": "updateAnchoringFrameAlign",
        "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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/objects/place": {
      "put": {
        "summary": "Move a source object relative to a target object using an anchor relation and optional placement constraints",
        "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/AgentPlaceObjectRelativeRequest"
              }
            }
          }
        },
        "operationId": "updateAnchoringObjectPlace",
        "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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/objects/alignment-status": {
      "get": {
        "summary": "Check whether selected objects already satisfy a requested alignment mode and optional target bounds",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getAnchoringObjectAlignmentStatus",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetObjectAlignmentStatusRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetObjectAlignmentStatusRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "anchoring_query",
            "description": "`anchoring_query` — JSON-encoded GetObjectAlignmentStatus request: objects, mode, optional target. 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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/objects/tidy-feasibility": {
      "get": {
        "summary": "Preview the tidy grid layout for selected objects without applying it",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getAnchoringObjectTidyFeasibility",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/TidyObjectsRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/TidyObjectsRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "anchoring_query",
            "description": "`anchoring_query` — JSON-encoded GetObjectTidyFeasibility request: objects, optional direction/spacing/target. 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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/empty-region/batch": {
      "post": {
        "summary": "Get ranked empty regions for several footprints 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/SpatialBatchFindEmptyRegionRequest"
              }
            }
          }
        },
        "operationId": "queryEmptyRegionsBatch",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/BatchFindEmptyRegionResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "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": 30
        },
        "tags": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/objects": {
      "get": {
        "summary": "Get the objects within a spatial scope or region",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getSpatialSearchObjects",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetObjectsRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetObjectsRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "spatial_query",
            "description": "`spatial_query` — JSON-encoded GetObjects request: optional scope, object_types, visibility flags, max_results. 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": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/frames/place": {
      "put": {
        "summary": "Move a source frame relative to a target frame using an anchor relation and optional placement constraints",
        "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/AgentPlaceFrameRelativeRequest"
              }
            }
          }
        },
        "operationId": "updateAnchoringFramePlace",
        "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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/occupied-bounds/batch": {
      "post": {
        "summary": "Get union bounding boxes for several scopes 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/SpatialBatchGetOccupiedBoundsRequest"
              }
            }
          }
        },
        "operationId": "queryOccupiedBoundsBatch",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/BatchGetOccupiedBoundsResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "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": 30
        },
        "tags": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connections/reconnect": {
      "post": {
        "summary": "Move one end of an existing connection to another object",
        "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/AgentReconnectConnectionPayload"
              }
            }
          }
        },
        "operationId": "reconnectConnection",
        "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": [
          "Connections"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/objects/align": {
      "put": {
        "summary": "Align selected objects using a requested alignment mode and optional target bounds",
        "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/AgentAlignObjectsRequest"
              }
            }
          }
        },
        "operationId": "updateAnchoringObjectAlign",
        "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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connections/feasibility": {
      "get": {
        "summary": "Check whether a connection between two objects is feasible",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getConnectionFeasibility",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetConnectionFeasibilityRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetConnectionFeasibilityRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "connection_query",
            "description": "`connection_query` — JSON-encoded GetConnectionFeasibility request: source_object, target_object, optional payload (connector_type, source_side, target_side). 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": [
          "Connections"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/empty-region": {
      "get": {
        "summary": "Get ranked empty regions that fit a requested footprint",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getSpatialSearchEmptyRegion",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/FindEmptyRegionRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/FindEmptyRegionRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "spatial_query",
            "description": "`spatial_query` — JSON-encoded FindEmptyRegion request: required_width, required_height, optional scope/padding/max_results. 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": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/occupied-bounds": {
      "get": {
        "summary": "Get the union bounding box of all objects in a scope",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getSpatialSearchOccupiedBounds",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetOccupiedBoundsRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetOccupiedBoundsRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "spatial_query",
            "description": "`spatial_query` — JSON-encoded GetOccupiedBounds request: optional scope, object_types, visibility flags. 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": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/clearance": {
      "get": {
        "summary": "Get the directional gap distances around an object",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getSpatialSearchClearance",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetClearanceAroundObjectRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetClearanceAroundObjectRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "spatial_query",
            "description": "`spatial_query` — JSON-encoded GetClearanceAroundObject request: object, optional computation scope and blocker filters. 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": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/objects/batch": {
      "post": {
        "summary": "Run several object queries 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/SpatialBatchGetObjectsRequest"
              }
            }
          }
        },
        "operationId": "queryObjectsBatch",
        "responses": {
          "200": {
            "$ref": "#/components/responses/SuccessfulResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "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": 30
        },
        "tags": [
          "Spatial Search"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/connections/create": {
      "post": {
        "summary": "Create a connection between two objects in a zone",
        "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/AgentCreateConnectionPayload"
              }
            }
          }
        },
        "operationId": "createConnection",
        "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": [
          "Connections"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/frames/tidy-feasibility": {
      "get": {
        "summary": "Preview the tidy grid layout for selected frames without applying it",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getAnchoringFrameTidyFeasibility",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/TidyFramesRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/TidyFramesRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "anchoring_query",
            "description": "`anchoring_query` — JSON-encoded GetFrameTidyFeasibility request: frame_ids, optional direction/spacing/target. 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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/anchoring/objects/placement-feasibility": {
      "get": {
        "summary": "Check whether a source object can be placed relative to a target object without violating overlap or constraint rules",
        "security": [
          {
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          },
          {
            "vani-api-key": [],
            "iam-oauth2-schema": [
              "Vani.spaces.READ"
            ]
          }
        ],
        "x-vani-transitional": true,
        "operationId": "getAnchoringObjectPlacementFeasibility",
        "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": {
              "contentSchema": {
                "$ref": "#/components/schemas/GetObjectPlacementFeasibilityRequest"
              },
              "x-vani-schema": {
                "$ref": "#/components/schemas/GetObjectPlacementFeasibilityRequest"
              },
              "contentMediaType": "application/json",
              "x-vani-stringified": true,
              "type": "string"
            },
            "in": "query",
            "name": "anchoring_query",
            "description": "`anchoring_query` — JSON-encoded GetObjectPlacementFeasibility request: source_object, target_object, relation, optional constraint. 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": [
          "Anchoring"
        ]
      }
    },
    "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/spatial-search/placement-feasibility/batch": {
      "post": {
        "summary": "Check several footprints for fit 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/SpatialBatchPlacementFeasibilityRequest"
              }
            }
          }
        },
        "operationId": "queryPlacementFeasibilityBatch",
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/VaniEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/BatchGetPlacementFeasibilityResponse"
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequestValidationFailed"
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedMissingOrInvalidAccessToken9"
          },
          "404": {
            "$ref": "#/components/responses/NotFoundAResourceNamedInThePathDoesNotEx10"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitExceededThisOperationAllows30Re"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerErrorTheRequestWasWellForm"
          }
        },
        "x-vani-operation-type": "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": 30
        },
        "tags": [
          "Spatial Search"
        ]
      }
    }
  },
  "info": {
    "contact": {
      "name": "Vani API Support",
      "url": "https://www.vanihq.com/resources/api/doc/"
    },
    "description": "Deterministic placement, alignment, tidy layout, spatial queries, and connector routing.",
    "title": "Layout & Placement",
    "version": "1.0.0"
  },
  "tags": [
    {
      "name": "Anchoring",
      "description": "Place, align, and tidy frames and objects relative to one another, with feasibility previews."
    },
    {
      "name": "Spatial Search",
      "description": "Query occupied and empty regions, clearances, and ranked placement candidates."
    },
    {
      "name": "Connections",
      "description": "Create, re-route, and feasibility-check connectors between objects."
    }
  ]
}