Vani Logo Vani / API Docs v1
Access Vani
Zone Operations / Navigation & Relationships

Navigation & Relationships

Traverse the zone hierarchy, resolve relationships, and navigate visually between objects.

Relationships

Resolve parents, children, ancestors, descendants, and connected objects.
Find related objects using deterministic relation filters and optional semantic hint
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters relationship_query
NameTypeDescription
relationship_queryREQUIRED string (JSON) `relationship_query` — JSON-encoded FindRelatedObjects request: anchor, optional scope, relation_types, relation_context, relation_query, max_depth, max_results. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "anchor": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "relation_context": {
    "containment_context_type": "CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED"
  },
  "relation_query": "string",
  "max_depth": "42",
  "scope": {
    "container_scope": {
      "scope_type": "SCOPE_TYPE_UNSPECIFIED"
    }
  },
  "relation_types": [
    "RELATION_TYPE_UNSPECIFIED"
  ],
  "max_results": "42"
}
URL-encoded, as sent
%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_query%22%3A%22string%22%2C%22max_depth%22%3A%2242%22%2C%22scope%22%3A%7B%22container_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%2C%22max_results%22%3A%2242%22%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_query%22%3A%22string%22%2C%22max_depth%22%3A%2242%22%2C%22scope%22%3A%7B%22container_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%2C%22max_results%22%3A%2242%22%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_query%22%3A%22string%22%2C%22max_depth%22%3A%2242%22%2C%22scope%22%3A%7B%22container_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%2C%22max_results%22%3A%2242%22%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_query%22%3A%22string%22%2C%22max_depth%22%3A%2242%22%2C%22scope%22%3A%7B%22container_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%2C%22max_results%22%3A%2242%22%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_query%22%3A%22string%22%2C%22max_depth%22%3A%2242%22%2C%22scope%22%3A%7B%22container_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%2C%22max_results%22%3A%2242%22%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_query%22%3A%22string%22%2C%22max_depth%22%3A%2242%22%2C%22scope%22%3A%7B%22container_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%2C%22max_results%22%3A%2242%22%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_query%22%3A%22string%22%2C%22max_depth%22%3A%2242%22%2C%22scope%22%3A%7B%22container_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%2C%22max_results%22%3A%2242%22%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/find",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get hierarchical descendants of a container via BFS traversal
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters relationship_query
NameTypeDescription
relationship_queryREQUIRED string (JSON) `relationship_query` — JSON-encoded GetObjectDescendants request: object, optional object_types, optional payload (max_depth, max_results, flat_selection | path_selection). Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "object_types": [
    "VANI_OBJECT_TYPE_UNSPECIFIED"
  ],
  "payload": {
    "max_depth": "42",
    "max_results": "42",
    "flat_selection": {
      "all": true
    }
  }
}
URL-encoded, as sent
%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22flat_selection%22%3A%7B%22all%22%3Atrue%7D%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22flat_selection%22%3A%7B%22all%22%3Atrue%7D%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22flat_selection%22%3A%7B%22all%22%3Atrue%7D%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22flat_selection%22%3A%7B%22all%22%3Atrue%7D%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22flat_selection%22%3A%7B%22all%22%3Atrue%7D%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22flat_selection%22%3A%7B%22all%22%3Atrue%7D%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22flat_selection%22%3A%7B%22all%22%3Atrue%7D%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/descendants",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get ancestor chain for an object in the zone hierarchy
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters relationship_query
NameTypeDescription
relationship_queryREQUIRED string (JSON) `relationship_query` — JSON-encoded GetObjectAncestors request: object, optional max_levels. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "max_levels": "42"
}
URL-encoded, as sent
%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22max_levels%22%3A%2242%22%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22max_levels%22%3A%2242%22%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22max_levels%22%3A%2242%22%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22max_levels%22%3A%2242%22%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22max_levels%22%3A%2242%22%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22max_levels%22%3A%2242%22%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22max_levels%22%3A%2242%22%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/ancestors",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
List the immediate child objects of one container (frame, group or zone root), optionally filtered by object type and windowed by range or index set. One level only - use getRelationshipDescendants for the deeper subtree.
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters relationship_query
NameTypeDescription
relationship_queryREQUIRED string (JSON) `relationship_query` — JSON-encoded GetObjectChildren request: object, optional object_types, optional payload (all | range | index_set, max_results). Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "object_types": [
    "VANI_OBJECT_TYPE_UNSPECIFIED"
  ],
  "payload": {
    "all": true,
    "max_results": "42"
  }
}
URL-encoded, as sent
%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22all%22%3Atrue%2C%22max_results%22%3A%2242%22%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22all%22%3Atrue%2C%22max_results%22%3A%2242%22%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22all%22%3Atrue%2C%22max_results%22%3A%2242%22%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22all%22%3Atrue%2C%22max_results%22%3A%2242%22%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22all%22%3Atrue%2C%22max_results%22%3A%2242%22%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22all%22%3Atrue%2C%22max_results%22%3A%2242%22%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22payload%22%3A%7B%22all%22%3Atrue%2C%22max_results%22%3A%2242%22%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/children",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get objects connected to anchor through connector graph traversal
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters relationship_query
NameTypeDescription
relationship_queryREQUIRED string (JSON) `relationship_query` — JSON-encoded GetConnectedObjects request: anchor, optional scope (container root), optional payload (direction, max_depth, max_results). Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "anchor": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "payload": {
    "max_depth": "42",
    "max_results": "42",
    "direction": "CONNECTION_DIRECTION_UNSPECIFIED"
  },
  "scope": {
    "scope_type": "SCOPE_TYPE_UNSPECIFIED"
  }
}
URL-encoded, as sent
%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22direction%22%3A%22CONNECTION_DIRECTION_UNSPECIFIED%22%7D%2C%22scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22direction%22%3A%22CONNECTION_DIRECTION_UNSPECIFIED%22%7D%2C%22scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22direction%22%3A%22CONNECTION_DIRECTION_UNSPECIFIED%22%7D%2C%22scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22direction%22%3A%22CONNECTION_DIRECTION_UNSPECIFIED%22%7D%2C%22scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22direction%22%3A%22CONNECTION_DIRECTION_UNSPECIFIED%22%7D%2C%22scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22direction%22%3A%22CONNECTION_DIRECTION_UNSPECIFIED%22%7D%2C%22scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected?relationship_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22payload%22%3A%7B%22max_depth%22%3A%2242%22%2C%22max_results%22%3A%2242%22%2C%22direction%22%3A%22CONNECTION_DIRECTION_UNSPECIFIED%22%7D%2C%22scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/connected",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get direct parent of an object in the zone hierarchy
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters relationship_query
NameTypeDescription
relationship_queryREQUIRED string (JSON) `relationship_query` — JSON-encoded GetObjectParents request: object. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  }
}
URL-encoded, as sent
%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents?relationship_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/parents",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get deterministic relation evidence between two objects
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters relationship_query
NameTypeDescription
relationship_queryREQUIRED string (JSON) `relationship_query` — JSON-encoded GetRelationEvidence request: source_object, target_object, optional relation_types and relation_context. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "target_object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "source_object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "relation_context": {
    "containment_context_type": "CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED"
  },
  "relation_types": [
    "RELATION_TYPE_UNSPECIFIED"
  ]
}
URL-encoded, as sent
%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence?relationship_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence?relationship_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence?relationship_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence?relationship_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence?relationship_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence?relationship_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22relation_context%22%3A%7B%22containment_context_type%22%3A%22CONTAINMENT_CONTEXT_TYPE_UNSPECIFIED%22%7D%2C%22relation_types%22%3A%5B%22RELATION_TYPE_UNSPECIFIED%22%5D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/relationships/evidence",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed

Traversal

Walk the zone in index, sequence, and windowed order.
Get hierarchical index path of an object within the zone traversal order
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters traversal_query
NameTypeDescription
traversal_queryREQUIRED string (JSON) `traversal_query` — JSON-encoded GetTraversalIndex request: object, optional traversal_scope, optional payload (filter). Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "traversal_scope": {
    "scope_type": "SCOPE_TYPE_UNSPECIFIED"
  },
  "payload": {
    "filter": {
      "object_types": [
        "VANI_OBJECT_TYPE_UNSPECIFIED"
      ],
      "include_hidden": true,
      "include_locked": true
    }
  }
}
URL-encoded, as sent
%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index?traversal_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index?traversal_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index?traversal_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index?traversal_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index?traversal_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index?traversal_query=%7B%22object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "success",
  "data": {},
  "message": "Request completed successfully",
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/index",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get ordered traversal neighbors from an anchor point in the zone
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters traversal_query
NameTypeDescription
traversal_queryREQUIRED string (JSON) `traversal_query` — JSON-encoded GetTraversalSequence request: anchor, optional traversal_scope, optional payload (direction, filter, max_results, wrap). Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "anchor": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "traversal_scope": {
    "scope_type": "SCOPE_TYPE_UNSPECIFIED"
  },
  "payload": {
    "filter": {
      "object_types": [
        "VANI_OBJECT_TYPE_UNSPECIFIED"
      ],
      "include_hidden": true,
      "include_locked": true
    },
    "max_results": "42",
    "wrap": true,
    "direction": "TRAVERSAL_DIRECTION_UNSPECIFIED"
  }
}
URL-encoded, as sent
%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22TRAVERSAL_DIRECTION_UNSPECIFIED%22%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22TRAVERSAL_DIRECTION_UNSPECIFIED%22%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22TRAVERSAL_DIRECTION_UNSPECIFIED%22%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22TRAVERSAL_DIRECTION_UNSPECIFIED%22%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22TRAVERSAL_DIRECTION_UNSPECIFIED%22%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22TRAVERSAL_DIRECTION_UNSPECIFIED%22%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22TRAVERSAL_DIRECTION_UNSPECIFIED%22%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "success",
  "data": {},
  "message": "Request completed successfully",
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/sequence",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get before/after context window around an anchor object in the zone
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters traversal_query
NameTypeDescription
traversal_queryREQUIRED string (JSON) `traversal_query` — JSON-encoded GetTraversalWindow request: anchor, optional traversal_scope, optional payload (filter, before_count, after_count, wrap). Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "anchor": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "traversal_scope": {
    "scope_type": "SCOPE_TYPE_UNSPECIFIED"
  },
  "payload": {
    "filter": {
      "object_types": [
        "VANI_OBJECT_TYPE_UNSPECIFIED"
      ],
      "include_hidden": true,
      "include_locked": true
    },
    "after_count": "42",
    "before_count": "42",
    "wrap": true
  }
}
URL-encoded, as sent
%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22after_count%22%3A%2242%22%2C%22before_count%22%3A%2242%22%2C%22wrap%22%3Atrue%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22after_count%22%3A%2242%22%2C%22before_count%22%3A%2242%22%2C%22wrap%22%3Atrue%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22after_count%22%3A%2242%22%2C%22before_count%22%3A%2242%22%2C%22wrap%22%3Atrue%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22after_count%22%3A%2242%22%2C%22before_count%22%3A%2242%22%2C%22wrap%22%3Atrue%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22after_count%22%3A%2242%22%2C%22before_count%22%3A%2242%22%2C%22wrap%22%3Atrue%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22after_count%22%3A%2242%22%2C%22before_count%22%3A%2242%22%2C%22wrap%22%3Atrue%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window?traversal_query=%7B%22anchor%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22traversal_scope%22%3A%7B%22scope_type%22%3A%22SCOPE_TYPE_UNSPECIFIED%22%7D%2C%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22after_count%22%3A%2242%22%2C%22before_count%22%3A%2242%22%2C%22wrap%22%3Atrue%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "success",
  "data": {},
  "message": "Request completed successfully",
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/traversal/window",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed

Visual Navigation

Find adjacent elements, geometric distances, and visual ordering.
Get the elements adjacent to an anchor, with distance and direction
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters nav_query
NameTypeDescription
nav_queryREQUIRED string (JSON) `nav_query` — JSON-encoded GetObjectsAround request: anchor, optional payload and scope. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "payload": {
    "filter": {
      "object_types": [
        "VANI_OBJECT_TYPE_UNSPECIFIED"
      ],
      "include_hidden": true,
      "include_locked": true
    },
    "max_results": "42"
  }
}
URL-encoded, as sent
%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/adjacent-elements",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get the geometric distance between two objects
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters nav_query
NameTypeDescription
nav_queryREQUIRED string (JSON) `nav_query` — JSON-encoded GetDistanceBetweenObjects request: source_object, target_object. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "target_object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  },
  "source_object": {
    "zone_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "object_id": "60712000000123456",
    "frame_id": "60712000000123456"
  }
}
URL-encoded, as sent
%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance?nav_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance?nav_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance?nav_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance?nav_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance?nav_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance?nav_query=%7B%22target_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%2C%22source_object%22%3A%7B%22zone_id%22%3A%22f47ac10b-58cc-4372-a567-0e02b2c3d479%22%2C%22object_id%22%3A%2260712000000123456%22%2C%22frame_id%22%3A%2260712000000123456%22%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/distance",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
Get the visually ordered neighbours of an anchor object
OperationREAD
Rate limit60 requests / minute · per user
OAuth scopesVani.spaces.READ
Path parameters edition_id · space_id · zone_id
NameTypeDescription
edition_idREQUIRED string The unique identifier of the edition
space_idREQUIRED string The unique identifier of the space
zone_idREQUIRED string The unique identifier of the zone
Query parameters nav_query
NameTypeDescription
nav_queryREQUIRED string (JSON) `nav_query` — JSON-encoded GetVisualSequence request: anchor, payload (direction/filter/limits), optional scope. Send this value as a JSON string, not as a JSON object — URL-encode the encoded JSON.
STRING CARRYING JSON URL-encode before sending
Decoded
{
  "payload": {
    "filter": {
      "object_types": [
        "VANI_OBJECT_TYPE_UNSPECIFIED"
      ],
      "include_hidden": true,
      "include_locked": true
    },
    "max_results": "42",
    "wrap": true,
    "direction": "VISUAL_DIRECTION_UNSPECIFIED"
  }
}
URL-encoded, as sent
%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22VISUAL_DIRECTION_UNSPECIFIED%22%7D%7D
curl -X GET "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22VISUAL_DIRECTION_UNSPECIFIED%22%7D%7D" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22VISUAL_DIRECTION_UNSPECIFIED%22%7D%7D"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
data = response.json()
print(data)
const https = require('https');
const url = require('url');

const options = {
  ...url.parse('https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22VISUAL_DIRECTION_UNSPECIFIED%22%7D%7D'),
  method: 'GET',
  headers: {
    'Authorization': 'Zoho-oauthtoken YOUR_ACCESS_TOKEN',
    'Content-Type': 'application/json'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => {
    const result = JSON.parse(data);
    // Process the response data
  });
});

req.end();
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.time.Duration;

public class ApiClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22VISUAL_DIRECTION_UNSPECIFIED%22%7D%7D"))
            .header("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .timeout(Duration.ofSeconds(30));

            .header("Content-Type", "application/json")
        HttpRequest request = requestBuilder
            .GET(HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
info "Making API request to: https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22VISUAL_DIRECTION_UNSPECIFIED%22%7D%7D";

headers = Map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
headers.put("Content-Type", "application/json");

response = invokeurl
[
    url: "https://api.app.vanihq.com/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence?nav_query=%7B%22payload%22%3A%7B%22filter%22%3A%7B%22object_types%22%3A%5B%22VANI_OBJECT_TYPE_UNSPECIFIED%22%5D%2C%22include_hidden%22%3Atrue%2C%22include_locked%22%3Atrue%7D%2C%22max_results%22%3A%2242%22%2C%22wrap%22%3Atrue%2C%22direction%22%3A%22VISUAL_DIRECTION_UNSPECIFIED%22%7D%7D"
    type: GET
    headers: headers
];

if (response.get("status_code") == 200) {
    info "Request successful";
    responseData = response.get("response");
    info responseData;
} else {
    info "Request failed with status: " + response.get("status_code");
    info response.get("response");
}
Successful response
{
  "status": "string",
  "data": {},
  "message": "string",
  "request_uri": "string"
}
Invalid request - validation failed
{
  "error": {
    "details": {
      "error_code": "IAM1031",
      "message": "Invalid request - validation failed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence",
  "status": "error"
}
Unauthorized - missing or invalid access token
{
  "error": {
    "details": {
      "error_code": "IAM1100",
      "message": "Unauthorized - missing or invalid access token"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence",
  "status": "error"
}
Not found - a resource named in the path does not exist, or is not visible to the caller
{
  "error": {
    "details": {
      "error_code": "IAM1001",
      "message": "Not found - a resource named in the path does not exist, or is not visible to the caller"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence",
  "status": "error"
}
Rate limit exceeded - this operation allows 60 requests per minute per user
{
  "error": {
    "details": {
      "error_code": "IAM1055",
      "message": "Rate limit exceeded - this operation allows 60 requests per minute per user"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence",
  "status": "error"
}
Internal server error - the request was well-formed but could not be completed
{
  "error": {
    "details": {
      "error_code": "U1001",
      "message": "Internal server error - the request was well-formed but could not be completed"
    }
  },
  "request_uri": "/sdk/v1/editions/{edition_id}/spaces/{space_id}/zones/{zone_id}/visual-navigation/sequence",
  "status": "error"
}
400  Invalid request - validation failed
401  Unauthorized - missing or invalid access token
404  Not found - a resource named in the path does not exist, or is not visible to the caller
429  Rate limit exceeded - this operation allows 60 requests per minute per user
500  Internal server error - the request was well-formed but could not be completed
© 2026 Zoho Corporation Pvt. Ltd. Help