Delete Records

Purpose

To delete entities or records from a module.

Request Details

Request URL

https://www.zohoapis.com/crm/v2/{module_api_name}?ids={record_id1,record_id2,..}

To delete a specific record:
https://www.zohoapis.com/crm/v2/{module_api_name}/{record_id}

Supported modules

Leads, Accounts, Contacts, Deals, Campaigns, Tasks, Cases, Events, Calls, Solutions, Products, Vendors, Price Books, Quotes, Sales Orders, Purchase Orders, Invoices, Custom, and Activities

Header

Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52

Scope

scope=ZohoCRM.modules.ALL
(or)
scope=ZohoCRM.modules.{module_name}.{operation_type}

Possible module names

leads, accounts, contacts, deals, campaigns, tasks, cases, events, calls, solutions, products, vendors, pricebooks, quotes, salesorders, purchaseorders, invoices, custom, and activities

Possible operation types

ALL - Full access to the record
DELETE - Delete records in the module

Parameters

  • idsstring, mandatory

    Specify the unique ID of the record that you want to delete.
    Possible values: Entity IDs separated by commas.
    For example: 410405000002264040, 410405000002264025.

  • wf_triggerboolean, optional

    Represents if the workflow rules are to be triggered upon record deletion. The default value is true.
    Possible values - true: triggers associated workflows; false: does not trigger associated workflows.

Note
  • A maximum of 100 records can be deleted per API call.

  • By default, all the workflows related to this API will get executed.

  • All the subforms related to this API will get deleted.

Sample Request

Copiedcurl "https://www.zohoapis.com/crm/v2/Leads?ids=410405000002264040,410405000002264025&wf_trigger=true"
-X DELETE
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
3.0.08.0
Copied//API Name of the module 
String moduleAPIName = "Leads";
List<Long> recordIds = new ArrayList<Long>(Arrays.asList(3477061000005908033L,3477061000005908017L;,3477061000005908001L));

//Get instance of RecordOperations Class
RecordOperations recordOperations = new RecordOperations();

//Get instance of ParameterMap Class
ParameterMap paramInstance = new ParameterMap();

for (Long id: recordIds) {
    paramInstance.add(DeleteRecordsParam.IDS, id);
}

paramInstance.add(DeleteRecordsParam.WF_TRIGGER, false);
HeaderMap headerInstance = new HeaderMap();
//Call deleteRecords method that takes moduleAPIName and paramInstance as parameter.
APIResponse < ActionHandler > response = recordOperations.deleteRecords(moduleAPIName, paramInstance,headerInstance);
Copiedimport javax.net.ssl.SSLContext;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpDelete;
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 DeleteRecords 
{
	private static void deleteRecords()
	{
		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/Leads");
			uriBuilder.addParameter("ids", "34770617742004,34770617742003");
			uriBuilder.addParameter("wf_trigger", "true");
			HttpUriRequest requestObj = new HttpDelete(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 deleteRecord()
	{
		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/Leads/34770617738002");
			HttpUriRequest requestObj = new HttpDelete(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) 
	{
		deleteRecords();
		deleteRecord();
	}
}
3.0.07.x
Copied//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
foreach($recordIds as $id)
{
    $paramInstance->add(DeleteRecordsParam::ids(), $id);
}
// $paramInstance->add(DeleteRecordsParam::wfTrigger(), "true");
$headerInstance = new HeaderMap();
//Call deleteRecord method that takes ModuleAPIName and recordId as parameter.
$response = $recordOperations->deleteRecords($moduleAPIName,$paramInstance,$headerInstance);
Copied<?php
class DeleteRecords{
    
    public function execute(){
        $curl_pointer = curl_init();
        
        $curl_options = array();
        $url = "https://www.zohoapis.com/crm/v2/Leads?";
        $parameters = array();
        $parameters["ids"] = "347706107596026,347706107246019";
        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] = "DELETE";
        $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 DeleteRecords())->execute();
3.0.08.x
Copied//Get instance of RecordOperations Class
RecordOperations recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
ParameterMap paramInstance = new ParameterMap();
paramInstance.Add(DeleteRecordParam.WF_TRIGGER, "false");
HeaderMap headerInstance = new HeaderMap();
//Call DeleteRecord method that takes paramInstance, ModuleAPIName and recordId as parameter.
APIResponse<ActionHandler> response = recordOperations.DeleteRecord(recordId, moduleAPIName, paramInstance,headerInstance);
Copiedusing System;
using System.IO;
using System.Net;
namespace Com.Zoho.Crm.API.Sample.RestAPI.Records
{
    public class DeleteRecords
    {
        public static void DeleteListofRecord()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.zohoapis.com/crm/v2/Leads?ids=34770617846014,34770617008005&wf_trigger=true");
            request.Method = "DELETE";
            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 DeleteRecord()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.zohoapis.com/crm/v2/Leads/34770617846013");
            request.Method = "DELETE";
            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);
        }
    }
}
3.0.03.x.x
Copied# Get instance of RecordOperations Class
record_operations = RecordOperations()
# Get instance of ParameterMap Class
param_instance = ParameterMap()
# Possible parameters for Delete Records operation
param_instance.add(DeleteRecordsParam.wf_trigger, True)
for record_id in record_ids:
param_instance.add(DeleteRecordsParam.ids, record_id)
# Get instance of HeaderMap Class
header_instance = HeaderMap()
header_instance.add(DeleteRecordsHeader.x_external, "Leads.External")
# Call deleteRecords method that takes param_instance and module_api_name as parameter.
response = record_operations.delete_records(module_api_name, param_instance, header_instance)


# Get instance of RecordOperations Class
record_operations = RecordOperations()
# Get instance of ParameterMap Class
param_instance = ParameterMap()
# Possible parameters for Delete Record operation
param_instance.add(DeleteRecordParam.wf_trigger, True)
# Get instance of HeaderMap Class
header_instance = HeaderMap()
# Possible headers for Get Record operation
# header_instance.add(UpdateRecordHeader.x_external, "Leads.External")
# Call deleteRecord method that takes param_instance, module_api_name and record_id as parameter.
response = record_operations.delete_record(record_id, module_api_name, param_instance, header_instance)
Copieddef delete_records():
    import requests

    url = 'https://www.zohoapis.com/crm/v2/Leads'

    headers = {
        'Authorization': 'Zoho-oauthtoken 1000.04be928e4a96XXXXXXXXXXXXX68.0b9eXXXXXXXXXXXX60396e268',
    }

    parameters = {
        'ids': '3409643000002804002,3409643000002804003,3409643000002804004',
        'wf_trigger': 'true'
    }

    response = requests.delete(url=url, headers=headers, params=parameters)

    if response is not None:
        print("HTTP Status Code : " + str(response.status_code))

        print(response.json())

delete_records()


def delete_record():
    import requests

    url = 'https://www.zohoapis.com/crm/v2/Leads/3409643000002804003'

    headers = {
        'Authorization': 'Zoho-oauthtoken 1000.04be928e4a96XXXXXXXXXXXXX68.0b9eXXXXXXXXXXXX60396e268',
    }

    parameters = {
        'wf_trigger': 'true'
    }

    response = requests.delete(url=url, headers=headers, params=parameters)

    if response is not None:
        print("HTTP Status Code : " + str(response.status_code))

        print(response.json())

delete_record()
1.0.010.x
Copied//Get instance of RecordOperations Class
let recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
let paramInstance = new ParameterMap();
/* Possible parameters for Delete Records operation */
for(let recordId of recordIds) {
    await paramInstance.add(DeleteRecordsParam.IDS, recordId);
}
await paramInstance.add(DeleteRecordsParam.WF_TRIGGER, "true");
//Get instance of HeaderMap Class
let headerInstance = new HeaderMap();
//Call deleteRecords method that takes paramInstance and moduleAPIName as parameter.
let response = recordOperations.deleteRecords(moduleAPIName, paramInstance,headerInstance);
Copiedasync function deleteRecords() {
    const got = require("got");

    let url = 'https://www.zohoapis.com/crm/v2/Leads'

    let headers = {
        Authorization : "Zoho-oauthtoken 1000.354df3680XXXXXXXXXXXXX3.aae0efXXXXXXXXXXXXXXXXXX9"
    }

    let parameters = {
        'ids': '3409643000002804002,3409643000002804003,3409643000002804004',
        'wf_trigger': 'true'
    }

    let requestDetails = {
        method : "DELETE",
        headers : headers,
        searchParams : parameters,
        throwHttpErrors : false
    }
    
    let response = await got(url, requestDetails)
    
    if(response != null) {
        console.log(response.statusCode);
        console.log(response.body);
    } 
}
deleteRecords()

async function deleteRecord() {
    const got = require("got");

    let url = 'https://www.zohoapis.com/crm/v2/Leads/3409643000002804003'

    let headers = {
        Authorization : "Zoho-oauthtoken 1000.354df3680XXXXXXXXXXXXX3.aae0efXXXXXXXXXXXXXXXXXX9"
    }

    let parameters = {
        'wf_trigger': 'true'
    }

    let requestDetails = {
        method : "DELETE",
        headers : headers,
        searchParams : parameters,
        throwHttpErrors : false
    }
    
    let response = await got(url, requestDetails)
    
    if(response != null) {
        console.log(response.statusCode);
        console.log(response.body);
    }
}

deleteRecord()
2.02.x.x
Copiedrecords = []
# Get instance of ParameterMap Class
pm = ParameterMap.new
# Possible parameters for Delete Records operation
record_ids.each do |record_id|
  pm.add(Record::RecordOperations::DeleteRecordsParam.ids, record_id)
end
# Get instance of RecordOperations Class
rr = Record::RecordOperations.new

# Call deleteRecords method that takes param_instance and module_api_name as parameter.
response = rr.delete_records(module_api_name,pm)



records = []
# Get instance of ParameterMap Class
pm = ParameterMap.new
pm.add(Record::RecordOperations::DeleteRecordParam.wf_trigger, false)
# Get instance of RecordOperations Class
rr = Record::RecordOperations.new
# Get instance of HeaderMap Class
hm = HeaderMap.new
# Call deleteRecord method that takes param_instance, module_api_name and record_id as parameter.
response = rr.delete_record(record_id, module_api_name, pm,hm) 
Copiedclass DeleteRecords

    def execute
        parameters ={}
        parameters["ids"]="3477061000007596026,3477061000007246019"
        query_string = parameters.to_a.map { |x| "#{x[0]}=#{x[1]}" }.join('&')
        url= "https://www.zohoapis.com/crm/v2/Leads"
        url += '?' + query_string if !query_string.nil? && (query_string.strip != '')
        url = URI(url)
        req = Net::HTTP::Delete.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
DeleteRecords.new.execute
1.0.0ES6
Copied//Get instance of RecordOperations Class
let recordOperations = new ZCRM.Record.Operations();
//Get instance of ParameterMap Class
let paramInstance = new ParameterMap();
/* Possible parameters for Delete Records operation */
for(let recordId of recordIds) {
    await paramInstance.add(ZCRM.Record.Model.DeleteRecordsParam.IDS, recordId);
}
await paramInstance.add(ZCRM.Record.Model.DeleteRecordsParam.WF_TRIGGER, "true");
//Call deleteRecords method that takes paramInstance and moduleAPIName as parameter.
let response = await recordOperations.deleteRecords(moduleAPIName, paramInstance);



//Get instance of RecordOperations Class
let recordOperations = new ZCRM.Record.Operations();
//Get instance of ParameterMap Class
let paramInstance = new ParameterMap();
//Possible parameters for Delete Record operation
await paramInstance.add(ZCRM.Record.Model.DeleteRecordParam.WF_TRIGGER, "true");
//Call deleteRecord method that takes paramInstance, ModuleAPIName and recordId as parameter.
let response = await recordOperations.deleteRecord(recordId, moduleAPIName, paramInstance);
Copiedvar listener = 0;
class DeleteRecords {

	async deleteListofRecord() {
		var url = "https://www.zohoapis.com/crm/v2/Leads"
        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 DeleteRecords().getToken(token)
        headers.set("Authorization", "Zoho-oauthtoken " + accesstoken)
        parameters.set("ids", "34770617742004,34770617742003")
        parameters.set("wf_trigger", "true")
        var requestMethod = "DELETE"
        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 DeleteRecords().makeAPICall(requestObj);
        console.log(result.status)
        console.log(result.response)
    }

	async deleteRecord() {
		var url = "https://www.zohoapis.com/crm/v2/Leads/34770617738002"
        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 DeleteRecords().getToken(token)
        headers.set("Authorization", "Zoho-oauthtoken " + accesstoken)
        var requestMethod = "DELETE"
        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 DeleteRecords().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/Leads?ids=410405000002264040,410405000002264025&wf_trigger=true"
	type: DELETE
	connection:"crm_oauth_connection"
];
info response;

Possible Errors

  • INVALID_DATAHTTP 400

    record not deleted
    Resolution: The record you are trying to delete has already been deleted. Specify a valid record ID. Refer Get Records API to get valid record IDs.

  • UNABLE_TO_PARSE_DATA_TYPEHTTP 400

    either the request body or parameters is in wrong format
    Resolution: The parameter values are in the wrong format. Specify valid record IDs in the correct format. Refer to endpoints section above.

  • INVALID_MODULEHTTP 400

    The module name given seems to be invalid
    Resolution: You have specified an invalid module name or there is no tab permission, or the module could have been removed from the available modules. Specify a valid module API name.

  • INVALID_MODULEHTTP 400

    The given module is not supported in API
    Resolution: The modules such as Documents and Projects are not supported in the current API. (This error will not be shown, once these modules are been supported). Specify a valid module API name.

  • 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.modules.{module_name}.DELETE. Create a new client with valid scope. Refer to scope section above.

  • NO_PERMISSIONHTTP 403

    Permission denied to delete
    Resolution: The user does not have permission to delete records. Contact your system administrator.

  • INTERNAL_ERRORHTTP 500

    Internal Server Error
    Resolution: Unexpected and unhandled exception in the 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 delete records
    Resolution: The user does not have the permission to delete records. Contact your system administrator.

  • REQUIRED_PARAM_MISSINGHTTP 400

    One of the expected parameter is missing
    Resolution: 'ids' parameter is missing in the request. Please specify the valid IDs of the records to be deleted. Refer to Get Records API to get valid record IDs.

  • RECORD_LOCKEDHTTP 400

    cannot delete record that is not approved yet
    Resolution: Please wait until the Zia image or the merge duplicates process is complete and try again.

  • NOT_APPROVEDHTTP 400

    cannot delete record that is not approved yet
    Resolution:

    • Case 1: If the record is in the rejected state due to Zia image validation, delete the failed image and, resubmit the record to Zia image validation.
    • Case 2: If the record is in Zia record approval, the system will not allow you to update the images of the record until the reviewer approves or rejects the record.

Sample Response

Copied{
    "data": [
       {
            "code": "SUCCESS",
            "details": {
                "id": "410405000002264040"
            },
            "message": "record deleted",
            "status": "success"
        },
       {
            "code": "SUCCESS",
            "details": {
                "id": "410405000002264025"
            },
            "message": "record deleted",
            "status": "success"
        }
    ]
}