Variables API
A CRM Variable can have unique set of values and can be widely used as merge fields in Email templates, Mail merge templates, and Inventory templates. You can also use them as reusable authentication parameters in APIs.
Get Variables Data
Purpose
To retrieve all the available variables through an API request.
Request Details
Request URL
https://www.zohoapis.com/crm/v2/settings/variables
To get specific variable:
https://www.zohoapis.com/crm/v2/settings/variables/{variable_id}?group={variable_group_id}
Header
Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52
Scope
scope=ZohoCRM.settings.variables.{operation_type}
Possible operation types
ALL - Full access to variable data
READ - Get variable data
Parameters
- groupstring, mandatory
Specify the unique ID/API name of the group to which the variable belongs.
Group ID/group API name is mandatory in case of fetching specific variable data. The system throws an error, otherwise.
Sample Request
Copiedcurl "https://www.zohoapis.com/crm/v2/settings/variables"
-X GET
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
Copied//Get instance of VariablesOperations Class
VariablesOperations variablesOperations = new VariablesOperations();
//Get instance of ParameterMap Class
ParameterMap paramInstance = new ParameterMap();
paramInstance.add(GetVariablesParam.GROUP, "General");
//Call getVariables method that takes paramInstance as parameter
APIResponse < ResponseHandler > response = variablesOperations.getVariables(paramInstance);
Copiedimport javax.net.ssl.SSLContext;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
public class VariablesAPI
{
private static void getVariables()
{
try
{
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://www.zohoapis.com/crm/v2/settings/variables");
uriBuilder.addParameter("group", "General");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
System.out.println("HTTP Status Code : " + response.getStatusLine().getStatusCode());
if(responseEntity != null)
{
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
System.out.println(responseString);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
private static void getVariable()
{
try
{
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://www.zohoapis.com/crm/v2/settings/variables/34770617671012");
uriBuilder.addParameter("group", "34770613089001");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
System.out.println("HTTP Status Code : " + response.getStatusLine().getStatusCode());
if(responseEntity != null)
{
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
System.out.println(responseString);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args)
{
getVariables();
getVariable();
}
}
Copied//Get instance of VariablesOperations Class
$variablesOperations = new VariablesOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
$paramInstance->add(GetVariablesParam::group(), "General");
//Call getVariables method that takes paramInstance as parameter
$response = $variablesOperations->getVariables($paramInstance);
Copied<?php
class GetVariables{
public function execute(){
$curl_pointer = curl_init();
$url = "https://www.zohoapis.com/crm/v2/settings/variables?";
$parameters = array();
$parameters["ids"]="352403364001";
foreach ($parameters as $key=>$value){
$url =$url.$key."=".$value;
}
$curl_options = array();
$curl_options[CURLOPT_URL] =$url;
$curl_options[CURLOPT_RETURNTRANSFER] = true;
$curl_options[CURLOPT_HEADER] = 1;
$curl_options[CURLOPT_CUSTOMREQUEST] = "GET";
$headersArray = array();
$headersArray[] = "Authorization". ":" . "Zoho-oauthtoken " . "1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf";
$curl_options[CURLOPT_HTTPHEADER]=$headersArray;
curl_setopt_array($curl_pointer, $curl_options);
$result = curl_exec($curl_pointer);
$responseInfo = curl_getinfo($curl_pointer);
curl_close($curl_pointer);
list ($headers, $content) = explode("\r\n\r\n", $result, 2);
if(strpos($headers," 100 Continue")!==false){
list( $headers, $content) = explode( "\r\n\r\n", $content , 2);
}
$headerArray = (explode("\r\n", $headers, 50));
$headerMap = array();
foreach ($headerArray as $key) {
if (strpos($key, ":") != false) {
$firstHalf = substr($key, 0, strpos($key, ":"));
$secondHalf = substr($key, strpos($key, ":") + 1);
$headerMap[$firstHalf] = trim($secondHalf);
}
}
$jsonResponse = json_decode($content, true);
if ($jsonResponse == null && $responseInfo['http_code'] != 204) {
list ($headers, $content) = explode("\r\n\r\n", $content, 2);
$jsonResponse = json_decode($content, true);
}
var_dump($headerMap);
var_dump($jsonResponse);
var_dump($responseInfo['http_code']);
}
}
(new GetVariables())->execute();
Copied//Get instance of VariablesOperations Class
VariablesOperations variablesOperations = new VariablesOperations();
//Get instance of ParameterMap Class
ParameterMap paramInstance = new ParameterMap();
paramInstance.Add(GetVariablesParam.GROUP, "General");
//Call GetVariables method that takes paramInstance as parameter
APIResponse<ResponseHandler> response = variablesOperations.GetVariables(paramInstance);
Copiedusing System;
using System.IO;
using System.Net;
namespace Com.Zoho.Crm.API.Sample.RestAPI.Variables
{
public class VariablesAPI
{
public static void GetVariables()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.zohoapis.com/crm/v2/settings/variables?group=General");
request.Method = "GET";
request.Headers["Authorization"] = "Zoho-oauthtoken 1000.abfeXXXXXXXXXXX2asw.XXXXXXXXXXXXXXXXXXsdc2";
request.KeepAlive = true;
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException e)
{
if (e.Response == null) { throw; }
response = (HttpWebResponse)e.Response;
}
HttpWebResponse responseEntity = response;
Console.WriteLine("HTTP Status Code : " + (int)response.StatusCode);
string responsestring = new StreamReader(responseEntity.GetResponseStream()).ReadToEnd();
responseEntity.Close();
Console.WriteLine(responsestring);
}
public static void GetVariable()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.zohoapis.com/crm/v2/settings/variables/34770617022029?group=34770613089001");
request.Method = "GET";
request.Headers["Authorization"] = "Zoho-oauthtoken 1000.abfeXXXXXXXXXXX2asw.XXXXXXXXXXXXXXXXXXsdc2";
request.KeepAlive = true;
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException e)
{
if (e.Response == null) { throw; }
response = (HttpWebResponse)e.Response;
}
HttpWebResponse responseEntity = response;
Console.WriteLine("HTTP Status Code : " + (int)response.StatusCode);
string responsestring = new StreamReader(responseEntity.GetResponseStream()).ReadToEnd();
responseEntity.Close();
Console.WriteLine(responsestring);
}
}
}
Copied# Get instance of VariablesOperations Class
variables_operations = VariablesOperations()
# Get instance of ParameterMap Class
param_instance = ParameterMap()
# Possible parameters of Get Variables operation
param_instance.add(GetVariablesParam.group, 'General')
# Call get_variables method that takes ParameterMap instance as parameter
response = variables_operations.get_variables(param_instance)
Copieddef get_variables():
import requests
url = 'https://www.zohoapis.com/crm/v2/settings/variables'
headers = {
'Authorization': 'Zoho-oauthtoken 1000.04be928e4a96XXXXXXXXXXXXX68.0b9eXXXXXXXXXXXX60396e268',
}
parameters = {
'group': 'General'
}
response = requests.get(url=url, headers=headers, params=parameters)
if response is not None:
print("HTTP Status Code : " + str(response.status_code))
print(response.json())
get_variables()
def get_variable():
import requests
url = 'https://www.zohoapis.com/crm/v2/settings/variables/3409643000002280002'
headers = {
'Authorization': 'Zoho-oauthtoken 1000.04be928e4a96XXXXXXXXXXXXX68.0b9eXXXXXXXXXXXX60396e268',
}
parameters = {
'group': 'General'
}
response = requests.get(url=url, headers=headers, params=parameters)
if response is not None:
print("HTTP Status Code : " + str(response.status_code))
print(response.json())
get_variable()
Copied//Get instance of VariablesOperations Class
let variablesOperations = new VariablesOperations();
//Get instance of ParameterMap Class
let paramInstance = new ParameterMap();
/* Possible parameters of Get Variables operation */
await paramInstance.add(GetVariablesParam.GROUP, "General");
//Call getVariables method that takes ParameterMap instance as parameter
let response = await variablesOperations.getVariables(paramInstance);
Copiedasync function getVariable() {
const got = require("got");
let url = 'https://www.zohoapis.com/crm/v2/settings/variables/3409643000002280002'
let headers = {
Authorization : "Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
}
let parameters = {
'group': 'General'
}
let requestDetails = {
method : "GET",
headers : headers,
searchParams : parameters,
throwHttpErrors : false
}
let response = await got(url, requestDetails)
if(response != null) {
console.log(response.statusCode);
console.log(response.body);
}
}
getVariable()
async function getVariables() {
const got = require("got");
let url = 'https://www.zohoapis.com/crm/v2/settings/variables'
let headers = {
Authorization : "Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
}
let parameters = {
'group': 'General'
}
let requestDetails = {
method : "GET",
headers : headers,
searchParams : parameters,
throwHttpErrors : false
}
let response = await got(url, requestDetails)
if(response != null) {
console.log(response.statusCode);
console.log(response.body);
}
}
getVariables()
Copied# Get instance of VariablesOperations Class
vo = Variables::VariablesOperations.new
# Get instance of ParameterMap Class
pm = ParameterMap.new
# Possible parameters of Get Variables operation
pm.add(Variables::VariablesOperations::GetVariablesParam.group, 'created')
# Call get_variables method that takes ParameterMap instance as parameter
response = vo.get_variables(pm)
Copiedclass GetVariables
def execute
parameters ={}
parameters["group"]="General"
query_string = parameters.to_a.map { |x| "#{x[0]}=#{x[1]}" }.join('&')
url= "https://www.zohoapis.com/crm/v2/settings/variables"
url += '?' + query_string if !query_string.nil? && (query_string.strip != '')
url = URI(url)
req = Net::HTTP::Get.new(url.request_uri)
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
headers={}
headers["Authorization"]="Zoho-oauthtoken 1000.50XXXXXXXXX&77e3a.44XXXXXXXXX8353"
headers&.each { |key, value| req.add_field(key, value) }
response=http.request(req)
status_code = response.code.to_i
headers = response.each_header.to_h
print status_code
print headers
unless response.body.nil?
print response.body
end
end
end
GetVariables.new.execute
Copied//Get instance of VariablesOperations Class
let variablesOperations = new ZCRM.Variable.Operations();
//Get instance of ParameterMap Class
let paramInstance = new ParameterMap();
/* Possible parameters of Get Variables operation */
await paramInstance.add(ZCRM.Variable.Model.GetVariablesParam.GROUP, "General");
//Call getVariables method that takes ParameterMap instance as parameter
let response = await variablesOperations.getVariables(paramInstance);
Copiedvar listener = 0;
class VariablesAPI {
async getVariables() {
var url = "https://www.zohoapis.com/crm/v2/settings/variables"
var parameters = new Map()
var headers = new Map()
var token = {
clientId:"1000.NPY9M1V0XXXXXXXXXXXXXXXXXXXF7H",
redirectUrl:"http://127.0.0.1:5500/redirect.html",
scope:"ZohoCRM.users.ALL,ZohoCRM.bulk.read,ZohoCRM.modules.ALL,ZohoCRM.settings.ALL,Aaaserver.profile.Read,ZohoCRM.org.ALL,profile.userphoto.READ,ZohoFiles.files.ALL,ZohoCRM.bulk.ALL,ZohoCRM.settings.variable_groups.ALL"
}
var accesstoken = await new VariablesAPI().getToken(token)
headers.set("Authorization", "Zoho-oauthtoken " + accesstoken)
parameters.set("group", "General")
var requestMethod = "GET"
var reqBody = null
var params = "";
parameters.forEach(function(value, key) {
if (parameters.has(key)) {
if (params) {
params = params + key + '=' + value + '&';
}
else {
params = key + '=' + value + '&';
}
}
});
var apiHeaders = {};
if(headers) {
headers.forEach(function(value, key) {
apiHeaders[key] = value;
});
}
if (params.length > 0){
url = url + '?' + params.substring(0, params.length - 1);
}
var requestObj = {
uri : url,
method : requestMethod,
headers : apiHeaders,
body : JSON.stringify(reqBody),
encoding: "utf8",
allowGetBody : true,
throwHttpErrors : false
};
var result = await new VariablesAPI().makeAPICall(requestObj);
console.log(result.status)
console.log(result.response)
}
async getVariable() {
var url = "https://www.zohoapis.com/crm/v2/settings/variables/34770617671012"
var parameters = new Map()
var headers = new Map()
var token = {
clientId:"1000.NPY9M1V0XXXXXXXXXXXXXXXXXXXF7H",
redirectUrl:"http://127.0.0.1:5500/redirect.html",
scope:"ZohoCRM.users.ALL,ZohoCRM.bulk.read,ZohoCRM.modules.ALL,ZohoCRM.settings.ALL,Aaaserver.profile.Read,ZohoCRM.org.ALL,profile.userphoto.READ,ZohoFiles.files.ALL,ZohoCRM.bulk.ALL,ZohoCRM.settings.variable_groups.ALL"
}
var accesstoken = await new VariablesAPI().getToken(token)
headers.set("Authorization", "Zoho-oauthtoken " + accesstoken)
parameters.set("group", "34770613089001")
var requestMethod = "GET"
var reqBody = null
var params = "";
parameters.forEach(function(value, key) {
if (parameters.has(key)) {
if (params) {
params = params + key + '=' + value + '&';
}
else {
params = key + '=' + value + '&';
}
}
});
var apiHeaders = {};
if(headers) {
headers.forEach(function(value, key) {
apiHeaders[key] = value;
});
}
if (params.length > 0){
url = url + '?' + params.substring(0, params.length - 1);
}
var requestObj = {
uri : url,
method : requestMethod,
headers : apiHeaders,
body : JSON.stringify(reqBody),
encoding: "utf8",
allowGetBody : true,
throwHttpErrors : false
};
var result = await new VariablesAPI().makeAPICall(requestObj);
console.log(result.status)
console.log(result.response)
}
async getToken(token) {
if(listener == 0) {
window.addEventListener("storage", function(reponse) {
if(reponse.key === "access_token" && (reponse.oldValue != reponse.newValue || reponse.oldValue == null)){
location.reload();
}
if(reponse.key === "access_token"){
sessionStorage.removeItem("__auth_process");
}
}, false);
listener = 1;
if(sessionStorage.getItem("__auth_process")) {
sessionStorage.removeItem("__auth_process");
}
}
["granted_for_session", "access_token","expires_in","expires_in_sec","location","api_domain","state","__token_init","__auth_process"].forEach(function (k) {
var isKeyExists = localStorage.hasOwnProperty(k);
if(isKeyExists) {
sessionStorage.setItem(k, localStorage[k]);
}
localStorage.removeItem(k);
});
var valueInStore = sessionStorage.getItem("access_token");
var tokenInit = sessionStorage.getItem("__token_init");
if(tokenInit != null && valueInStore != null && Date.now() >= parseInt(tokenInit) + 59 * 60 * 1000){ // check after 59th minute
valueInStore = null;
sessionStorage.removeItem("access_token");
}
var auth_process = sessionStorage.getItem("__auth_process");
if ((valueInStore == null && auth_process == null) || (valueInStore == 'undefined' && (auth_process == null || auth_process == "true"))) {
var accountsUrl = "https://accounts.zoho.com/oauth/v2/auth"
var clientId;
var scope;
var redirectUrl;
if(token != null) {
clientId = token.clientId;
scope = token.scope;
redirectUrl = token.redirectUrl;
}
var fullGrant = sessionStorage.getItem("full_grant");
var grantedForSession = sessionStorage.getItem("granted_for_session");
if(sessionStorage.getItem("__token_init") != null && ((fullGrant != null && "true" == full_grant) || (grantedForSession != null && "true" == grantedForSession))) {
accountsUrl += '/refresh';
}
if (clientId && scope) {
sessionStorage.setItem("__token_init", Date.now());
sessionStorage.removeItem("access_token");
sessionStorage.setItem("__auth_process", "true");
window.open(accountsUrl + "?" + "scope" + "=" + scope + "&"+ "client_id" +"=" + clientId + "&response_type=token&state=zohocrmclient&redirect_uri=" + redirectUrl);
["granted_for_session", "access_token","expires_in","expires_in_sec","location","api_domain","state","__token_init","__auth_process"].forEach(function (k) {
var isKeyExists = localStorage.hasOwnProperty(k);
if(isKeyExists){
sessionStorage.setItem(k, localStorage[k]);
}
localStorage.removeItem(k);
});
valueInStore = sessionStorage.getItem("access_token");
}
}
if(token != null && valueInStore != 'undefined'){
token.accessToken = valueInStore;
}
return token.accessToken;
}
async makeAPICall(requestDetails) {
return new Promise(function (resolve, reject) {
var body, xhr, i;
body = requestDetails.body || null;
xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.open(requestDetails.method, requestDetails.uri, true);
for (i in requestDetails.headers) {
xhr.setRequestHeader(i, requestDetails.headers[i]);
}
xhr.send(body);
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
resolve(xhr);
}
}
})
}
}
Copiedresponse = invokeurl
[
url: "https://www.zohoapis.com/crm/v2/settings/variables"
type: GET
connection:"crm_oauth_connection"
];
info response;
Response JSON keys
- api_namestring
Represents the API name of the CRM variable.
- namestring
Represents the display name of the variable.
- descriptionstring
Represents the description of the variable, if any.
- idstring
Represents the unique ID of the variable.
- typestring
Represents the type of the variable. It can be: text, integer, percent, double, currency, date, datetime, email, phone, website, textarea, checkbox, long.
- variable_groupJSON object
Represents the API name and ID of the variable group to which the current variable belongs to.
- valuestring
Represents the value of the variable, if any.
Possible Errors
- INVALID_URL_PATTERNHTTP 404
Please check if the URL trying to access is a correct one
Resolution: The request URL specified is incorrect. Specify a valid request URL. Refer to request URL section above. - OAUTH_SCOPE_MISMATCHHTTP 401
Unauthorized
Resolution: Client does not have ZohoCRM.settings.variables.READ scope. Create a new client with valid scope. Refer to scope section above. - NO_PERMISSIONHTTP 403
Permission denied to read
Resolution: The user does not have permission to read variables data. Contact your system administrator. - INTERNAL_ERRORHTTP 500
Internal Server Error
Resolution: Unexpected and unhandled exception in Server. Contact support team. - INVALID_REQUEST_METHODHTTP 400
The http request method type is not a valid one
Resolution: You have specified an invalid HTTP method to access the API URL. Specify a valid request method. Refer to endpoints section above. - AUTHORIZATION_FAILEDHTTP 400
User does not have sufficient privilege to read variables data
Resolution: The user does not have the permission to retrieve variables data. Contact your system administrator.
Sample Response
Copied{
"variables": [
{
"api_name": "sample1",
"name": "SV1",
"description": "This is a sample variable.",
"id": "4150868000002146001",
"type": "text",
"variable_group": {
"api_name": "General",
"id": "4150868000000597005"
},
"value": ""
},
{
"api_name": "sample2",
"name": "SV2",
"description": null,
"id": "4150868000002517007",
"type": "long",
"variable_group": {
"api_name": "General",
"id": "4150868000000597005"
},
"value": ""
},
{
"api_name": "sample3",
"name": "SV3",
"description": null,
"id": "4150868000002517005",
"type": "textarea",
"variable_group": {
"api_name": "General",
"id": "4150868000000597005"
},
"value": ""
},
{
"api_name": "Sample4",
"name": "SV4",
"description": null,
"id": "4150868000002517003",
"type": "datetime",
"variable_group": {
"api_name": "General",
"id": "4150868000000597005"
},
"value": ""
}
]
}