Get Notification Details
Purpose
To get the details of the notifications enabled by the user.
Endpoints
Request Details
Request URL
https://www.zohoapis.com/crm/v2/actions/watch
Header
Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52
Scope
scope=ZohoCRM.notifications.{operation_type}
Possible operation types
ALL - Full access to the record
READ - Get notification details
Parameters
- pageInteger, optional
To get the list of records from the respective pages. Default value is 1.
Possible values: Integer values. Example: 1(or)4(or)6 - per_pageInteger, optional
To get the list of records available per page. Default value is 200.
Possible values: Integer values. Example: 200(or)400 - channel_idInteger, mandatory
Specify the unique ID of the notification channel.
Possible values: Channel ID. Example: 1000000068001 - modulestring, optional
Specify the API name of the module for which the notification is enabled.
Possible values: Module API names. Example: Leads
Sample Request
Copiedcurl "https://www.zohoapis.com/crm/v2/actions/watch?page=1&per_page=200"
-X GET
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
Copied//Get instance of NotificationOperations Class
NotificationOperations notificationOperations = new NotificationOperations();
ParameterMap paramInstance = new ParameterMap();
paramInstance.add(GetNotificationDetailsParam.CHANNEL_ID, 100000006800212 l);
paramInstance.add(GetNotificationDetailsParam.MODULE, "Leads");
paramInstance.add(GetNotificationDetailsParam.PAGE, 1);
paramInstance.add(GetNotificationDetailsParam.PER_PAGE, 2);
//Call getNotificationDetails method
APIResponse < ResponseHandler > response = notificationOperations.getNotificationDetails(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 GetNotificationDetails
{
public static void main(String[] args)
{
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/actions/watch");
uriBuilder.addParameter("page", "1");
uriBuilder.addParameter("per_page", "1");
uriBuilder.addParameter("channel_id", "10068001");
uriBuilder.addParameter("module", "Contacts");
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();
}
}
}
Copied//Get instance of NotificationOperations Class
$notificationOperations = new NotificationOperations();
$paramInstance = new ParameterMap();
$paramInstance->add(GetNotificationDetailsParam::channelId(), "106800211");
$paramInstance->add(GetNotificationDetailsParam::module(), "Accounts");
$paramInstance->add(GetNotificationDetailsParam::page(), 1);
$paramInstance->add(GetNotificationDetailsParam::perPage(), 2);
//Call getNotificationDetails method
$response = $notificationOperations->getNotificationDetails($paramInstance);
Copied<?php
class GetNotificationDetails{
public function execute(){
$curl_pointer = curl_init();
$curl_options = array();
$url = "https://www.zohoapis.com/crm/v2/actions/watch?";
$parameters = array();
$parameters["channel_id"]="100068001";
foreach ($parameters as $key=>$value){
$url =$url.$key."=".$value."&";
}
$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 GetNotificationDetails())->execute();
Copied//Get instance of NotificationOperations Class
NotificationOperations notificationOperations = new NotificationOperations();
ParameterMap paramInstance = new ParameterMap();
paramInstance.Add(GetNotificationDetailsParam.CHANNEL_ID, 100000006800212);
paramInstance.Add(GetNotificationDetailsParam.MODULE, "Leads");
paramInstance.Add(GetNotificationDetailsParam.PAGE, 1);
paramInstance.Add(GetNotificationDetailsParam.PER_PAGE, 2);
//Call getNotificationDetails method
APIResponse<ResponseHandler> response = notificationOperations.GetNotificationDetails(paramInstance);
Copiedusing System;
using System.IO;
using System.Net;
using System.Xml;
using Newtonsoft.Json;
namespace Com.Zoho.Crm.API.Sample.RestAPI.Notifications
{
public class NotificationDetails
{
public static void GetNotificationDetails()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.zohoapis.com/crm/v2/actions/watch?channel_id=100068001&module=Contacts");
request.Method = "GET";
request.Headers["Authorization"] = "Zoho-oauthtoken 1000.abfeXXXXXXXXXXX2asw.XXXXXXXXXXXXXXXXXXsdc2";
string IfModifiedSince = JsonConvert.SerializeObject("2020-05-15T12:00:00+05:30");
IfModifiedSince = IfModifiedSince.Replace("\\", "");
IfModifiedSince = IfModifiedSince.Replace("\"", "");
DateTime dateConversion = XmlConvert.ToDateTime(IfModifiedSince, XmlDateTimeSerializationMode.Utc);
request.IfModifiedSince = dateConversion;
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 NotificationOperations Class
notification_operations = NotificationOperations()
# Get instance of ParameterMap Class
param_instance = ParameterMap()
param_instance.add(GetNotificationDetailsParam.module, 'Deals')
param_instance.add(GetNotificationDetailsParam.page, 1)
param_instance.add(GetNotificationDetailsParam.per_page, 20)
param_instance.add(GetNotificationDetailsParam.channel_id, 100000006800211)
# Call get_notification_details method
response = notification_operations.get_notification_details(param_instance)
Copieddef get_notification_details():
import requests
url = 'https://www.zohoapis.com/crm/v2/actions/watch'
headers = {
'Authorization': 'Zoho-oauthtoken 1000.04be928e4a96XXXXXXXXXXXXX68.0b9eXXXXXXXXXXXX60396e268'
}
parameters = {
'page': 1,
'per_page': 20,
'channel_id': '1000000068001',
'module': 'Contacts'
}
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_notification_details()
Copied//Get instance of NotificationOperations Class
let notificationOperations = new NotificationOperations();
//Get instance of ParameterMap Class
let paramInstance = new ParameterMap();
await paramInstance.add(GetNotificationDetailsParam.CHANNEL_ID, 100000006800211n);
await paramInstance.add(GetNotificationDetailsParam.MODULE, "Accounts");
await paramInstance.add(GetNotificationDetailsParam.PAGE, 1);
await paramInstance.add(GetNotificationDetailsParam.PER_PAGE, 200);
//Call getNotificationDetails method
let response = await notificationOperations.getNotificationDetails(paramInstance);
Copiedasync function getNotificationDetails() {
const got = require("got");
let url = 'https://www.zohoapis.com/crm/v2/actions/watch'
let headers = {
Authorization : "Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
}
let parameters = {
'page': 1,
'per_page': 20,
'channel_id': '1000000068001',
'module': 'Contacts'
}
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);
}
}
getNotificationDetails()
Copied# Get instance of NotificationOperations Class
no = Notification::NotificationOperations.new
# Get instance of ParameterMap Class
pm = ParameterMap.new
pm.add(Notification::NotificationOperations::GetNotificationDetailsParam.channel_id, 10_000_000_680_211)
pm.add(Notification::NotificationOperations::GetNotificationDetailsParam.module_1, 'Deals')
# Call get_notification_details method
response = no.get_notification_details(pm)
Copiedclass GetNotificationDetails
def execute
parameters ={}
parameters["channel_id"]="1000000068001"
query_string = parameters.to_a.map { |x| "#{x[0]}=#{x[1]}" }.join('&')
url = "https://www.zohoapis.com/crm/v2/actions/watch"
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
GetNotificationDetails.new.execute
Copied//Get instance of NotificationOperations Class
let notificationOperations = new ZCRM.Notification.Operations();
//Get instance of ParameterMap Class
let paramInstance = new ParameterMap();
await paramInstance.add(ZCRM.Notification.Model.GetNotificationDetailsParam.CHANNEL_ID, 16800211n);
await paramInstance.add(ZCRM.Notification.Model.GetNotificationDetailsParam.MODULE, "Accounts");
await paramInstance.add(ZCRM.Notification.Model.GetNotificationDetailsParam.PAGE, 1);
await paramInstance.add(ZCRM.Notification.Model.GetNotificationDetailsParam.PER_PAGE, 200);
//Call getNotificationDetails method
let response = await notificationOperations.getNotificationDetails(paramInstance);
Copiedclass GetNotificationDetails {
async getNotificationDetails() {
var url = "https://www.zohoapis.com/crm/v2/actions/watch"
var parameters = new Map()
var headers = new Map()
var token = {
clientId:"1000.NPY9M1V0XXXXXXXXXXXXXXXXXXXF7H",
redirectUrl:"http://127.0.0.1:5500/redirect.html",
scope:"ZohoCRM.notifications.ALL,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 GetNotificationDetails().getToken(token)
headers.set("Authorization", "Zoho-oauthtoken " + accesstoken)
parameters.set("page", "1")
parameters.set("per_page", "1")
parameters.set("channel_id", "168001")
parameters.set("module", "Contacts")
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 GetNotificationDetails().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);
}
}
})
}
}
Use the page and per_page parameter to fetch records according to their position in the CRM. Let's assume that the user has to fetch 400 records. The maximum number of records that one can get for an API call is 200. So, for records above the 200th position, they cannot be fetched. By using the page (1, 2, 3 and 4) and per_page (100) parameter, the user can fetch all 400 records using 4 API calls.
Sample Response
Copied{
"watch": [
{
"channel_expiry": "2018-02-02T11:30:00+05:30",
"resource_uri": "https://www.zohoapis.com/crm/v2/Contacts",
"resource_id": "1000000000045",
"notify_url": "https://www.zoho.com/callback?authorization=Zoho-oauthtoken 1000.23dnsbbbh455jnn&key1=val1&key2=val2&key3=val3",
"resource_name": "Contacts",
"channel_id": "1000000068001",
"events": [
"Contacts.create"
],
"token": "TOKEN_FOR_VERIFICATION_OF_1000000068001"
},
{
"channel_expiry": "2018-02-02T11:30:00+05:30",
"resource_uri": "https://www.zohoapis.com/crm/v2/Leads",
"resource_id": "1000000000041",
"notify_url": "https://www.zoho.com/callback?authorization=Zoho-oauthtoken 1000.23dnsbbbh455jnn&key1=val1&key2=val2&key3=val3",
"resource_name": "Leads",
"channel_id": "1000000068001",
"events": [
"Leads.edit",
"Leads.create",
"Leads.delete"
],
"token": "TOKEN_FOR_VERIFICATION_OF_1000000068001"
},
{
"channel_expiry": "2018-02-02T11:30:00+05:30",
"resource_uri": "https://www.zohoapis.com/crm/v2/Deals",
"resource_id": "1000000000047",
"notify_url": "https://www.zoho.com/callback?authorization=Zoho-oauthtoken 1000.23dnsbbbh455jnn&key1=val1&key2=val2&key3=val3",
"resource_name": "Deals",
"channel_id": "1000000068001",
"events": [
"Deals.edit",
"Deals.create",
"Deals.delete"
],
"token": "TOKEN_FOR_VERIFICATION_OF_1000000068001"
},
{
"channel_expiry": "2018-02-02T11:30:00+05:30",
"resource_uri": "https://www.zohoapis.com/crm/v2/Tasks",
"resource_id": "1000000000063",
"notify_url": "https://www.zoho.com/callback?authorization=Zoho-oauthtoken 1000.23dnsbbbh455jnn&key1=val1&key2=val2",
"resource_name": "Tasks",
"channel_id": "1000000068001",
"events": [
"Tasks.edit",
"Tasks.create",
"Tasks.delete"
],
"token": "TOKEN_FOR_VERIFICATION_OF_1000000068001"
},
{
"channel_expiry": "2018-02-02T10:30:00+05:30",
"resource_uri": "https://www.zohoapis.com/crm/v2/Leads",
"resource_id": "1000000000041",
"notify_url": "https://www.zoho.com/callback?authorization=Zoho-oauthtoken 1000.23dnsbbbh455jnn&key1=val1&key2=val2&key3=val3",
"resource_name": "Leads",
"channel_id": "1000000058003",
"events": [
"Leads.edit",
"Leads.create",
"Leads.delete"
],
"token": "TOKEN_FOR_VERIFICATION_OF_1000000058003"
}
],
"info": {
"per_page": 200,
"count": 5,
"page": 1,
"more_records": false
}
}