Start here
Getting started
Install the SDK, construct a client, and make a first authenticated call.
Install#
Require the client and make sure the cURL and JSON extensions are enabled:
php -m | grep -E 'curl|json'require 'AnalyticsClient.php';Register 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#
<?php
require 'AnalyticsClient.php';
$client_id = "1000.xxxxxxx";
$client_secret = "xxxxxxx";
$refresh_token = "1000.xxxxxxx.xxxxxxx";
$ac = new 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->getOrgInstance($org_id);
$workspace = $ac->getWorkspaceInstance($org_id, $workspace_id);
$view = $ac->getViewInstance($org_id, $workspace_id, $view_id);
$bulk = $ac->getBulkInstance($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#
$ac = new AnalyticsClient($client_id, $client_secret, $refresh_token);
try {
$org = $ac->getOrgInstance($org_id);
$workspaces = $org->getOrgWorkspaces();
print_r($workspaces);
}
catch (ServerException $se) {
echo "Server error " . $se->getErrorCode() . ": " . $se->getErrorMessage() . "\n";
}
catch (ParseException $pe) {
echo "Could not parse response: " . $pe->getErrorMessage() . "\n";
}A successful call returns the data payload of the response envelope, already decoded. A failure raises or returns ServerException.
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.