Get Notification Details

Purpose

To get the details of the notifications enabled by the user.

Request Details

Request URL

{api-domain}/crm/v2/actions/watch

Header

Authorization: Zoho-oauthtoken 100xx.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://zylkercorp.zohoplatform.com/crm/v2/actions/watch?page=1&per_page=200"
-X GET
-H "Authorization: Zoho-oauthtoken 100xxx.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
1.0.0ES6
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://zylkercorp.zohoplatform.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://zylkercorp.zohoplatform.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);
                }
            }
        })
    }
}
Note
  • Use the page and per_page parameter to fetch records according to their position in the Vertical Solutions. 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://zylkercorp.zohoplatform.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://zylkercorp.zohoplatform.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://zylkercorp.zohoplatform.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://zylkercorp.zohoplatform.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://zylkercorp.zohoplatform.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
    }
}