Start here
Getting started
Install the SDK, construct a client, and make a first authenticated call.
Install#
Put AnalyticsClient.py on the import path and install its one dependency:
pip install requestsfrom AnalyticsClient import AnalyticsClientRegister an OAuth client#
- Open the Zoho API Console for your data center.
- Create a Self Client for server-to-server integrations, or a Server-based Application if users will authorise your app themselves.
- Note the Client ID and Client Secret.
- Generate a refresh token with the scopes your integration needs — see Authentication.
Construct the client#
from AnalyticsClient import AnalyticsClient
CLIENT_ID = "1000.xxxxxxx"
CLIENT_SECRET = "xxxxxxx"
REFRESH_TOKEN = "1000.xxxxxxx.xxxxxxx"
ac = AnalyticsClient(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN)Get a scoped instance#
The client hands out four scoped objects. Each one binds the identifiers it needs, so you do not repeat them on every call.
org = ac.get_org_instance(ORG_ID)
workspace = ac.get_workspace_instance(ORG_ID, WORKSPACE_ID)
view = ac.get_view_instance(ORG_ID, WORKSPACE_ID, VIEW_ID)
bulk = ac.get_bulk_instance(ORG_ID, WORKSPACE_ID)| Instance | Bound to | Use for |
|---|---|---|
OrgAPI | organization | Users, roles, admins, subscription, security controls. |
WorkspaceAPI | organization + workspace | Views, folders, schedules, alerts, backups, sharing. |
ViewAPI | organization + workspace + view | Rows, columns, formulas, publishing. |
BulkAPI | organization + workspace | Importing and exporting data. |
Make a first call#
from AnalyticsClient import AnalyticsClient, ServerError, ParseError
ac = AnalyticsClient(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN)
try:
org = ac.get_org_instance(ORG_ID)
workspaces = org.get_org_workspaces()
print(workspaces)
except ServerError as err:
print(f"Server error {err.errorCode}: {err.message}")
except ParseError as err:
print(f"Could not parse response: {err}")A successful call returns the data payload of the response envelope, already decoded. A failure raises or returns ServerError.
Sample response#
{
"status": "success",
"summary": "Get organizations",
"data": {
"orgs": [
{
"orgId": "55522777",
"orgName": "Zylker Analytics",
"orgDesc": "",
"timeZone": "Asia/Kolkata",
"role": "ORGADMIN"
}
]
}
}The SDK unwraps the envelope for you: the value you receive is the contents of data.orgs, not the whole document above.
Where to go next#
- Authentication — read the token throttle section before you ship.
- Errors — what to branch on when a call fails.
- Importing data — the three import modes and when to use each.