Create Notes
Purpose
To add new notes.
Request Details
Request URL
https://www.zohoapis.com/crm/v2/Notes
To add notes for a specific record:
https://www.zohoapis.com/crm/v2/{module_api_name}/{record_id}/Notes
Supported modules
Leads, Accounts, Contacts, Deals, Campaigns, Tasks, Cases, Events, Calls, Solutions, Products, Vendors, Price Books, Quotes, Sales Orders, Purchase Orders, Invoices, and Custom
Header
Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52
Scope
scope=ZohoCRM.modules.ALL
(or)
scope=ZohoCRM.modules.{module_name}.{operation_type}
(and)
scope=ZohoCRM.modules.notes.{operation_type}
Possible module names
leads, accounts, contacts, deals, campaigns, tasks, events, calls, cases, events, calls, solutions, products, vendors, pricebooks, quotes, salesorders, purchaseorders, invoices, and custom
Possible operation types
ALL - Full access to notes
WRITE - Edit note data
CREATE - Create note data
Sample Request
Copiedcurl "https://www.zohoapis.com/crm/v2/Leads/1000000145990/Notes"
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
-d "@newnote.json"
-X POST
Copied//Get instance of NotesOperations Class
NotesOperations notesOperations = new NotesOperations();
//Get instance of BodyWrapper Class that will contain the request body
BodyWrapper bodyWrapper = new BodyWrapper();
//List of Note instances
List < com.zoho.crm.api.notes.Note > notes = new ArrayList < com.zoho.crm.api.notes.Note > ();
for (int i = 1; i <= 5; i++) {
//Get instance of Note Class
com.zoho.crm.api.notes.Note note = new com.zoho.crm.api.notes.Note();
//Set Note_Title of the Note
note.setNoteTitle("Contacted");
//Set NoteContent of the Note
note.setNoteContent("Need to do further tracking");
//Get instance of Record Class
Record parentRecord = new Record();
//Set ID of the Record
parentRecord.setId(3477061000005702002 L);
//Set ParentId of the Note
note.setParentId(parentRecord);
//Set SeModule of the Record
note.setSeModule("Leads");
//Add Note instance to the list
notes.add(note);
}
//Set the list to notes in BodyWrapper instance
bodyWrapper.setData(notes);
//Call createNotes method that takes BodyWrapper instance as parameter
APIResponse < ActionHandler > response = notesOperations.createNotes(bodyWrapper);
Copiedimport javax.net.ssl.SSLContext;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpPost;
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.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
public class CreateNotes
{
@SuppressWarnings("deprecation")
private static void createNotes()
{
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/Notes");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
JSONObject requestBody = new JSONObject();
JSONArray recordArray = new JSONArray();
JSONObject recordObject = new JSONObject();
recordObject.put("Note_Title", "Contacted");
recordObject.put("Note_Content", "Need to do further tracking");
recordObject.put("Parent_Id", "34770617736020");
recordObject.put("se_module", "Leads");
recordArray.put(recordObject);
recordObject = new JSONObject();
recordObject.put("Note_Title", "Contacted1");
recordObject.put("Note_Content", "Need to do further tracking");
recordObject.put("Parent_Id", "34770617736020");
recordObject.put("se_module", "Leads");
recordArray.put(recordObject);
requestBody.put("data", recordArray);
requestBase.setEntity(new StringEntity(requestBody.toString(), HTTP.UTF_8));
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();
}
}
@SuppressWarnings("deprecation")
private static void addNotesforASpecificRecord()
{
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/34770617736020/Notes");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
JSONObject requestBody = new JSONObject();
JSONArray recordArray = new JSONArray();
JSONObject recordObject = new JSONObject();
recordObject.put("Note_Title", "Contacted");
recordObject.put("Note_Content", "Need to do further tracking");
recordArray.put(recordObject);
recordObject = new JSONObject();
recordObject.put("Note_Title", "Contacted1");
recordObject.put("Note_Content", "Need to do further tracking");
recordArray.put(recordObject);
requestBody.put("data", recordArray);
requestBase.setEntity(new StringEntity(requestBody.toString(), HTTP.UTF_8));
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)
{
createNotes();
addNotesforASpecificRecord();
}
}
Copied//Get instance of NotesOperations Class
$notesOperations = new NotesOperations();
//Get instance of BodyWrapper Class that will contain the request body
$bodyWrapper = new BodyWrapper();
//List of Note instances
$notes = array();
for($i = 1; $i <= 5; $i++)
{
$nodeClass = 'com\zoho\crm\api\notes\Note';
//Get instance of Note Class
$note = new $nodeClass();
//Set Note_Title of the Note
$note->setNoteTitle("Contacted");
//Set NoteContent of the Note
$note->setNoteContent("Need to do further tracking");
//Get instance of Record Class
$parentRecord = new Record();
//Set ID of the Record
$parentRecord->setId("34770615702002");
//Set ParentId of the Note
$note->setParentId($parentRecord);
//Set SeModule of the Record
$note->setSeModule("Leads");
//Add Note instance to the list
array_push($notes, $note);
}
//Set the list to notes in BodyWrapper instance
$bodyWrapper->setData($notes);
//Call createNotes method that takes BodyWrapper instance as parameter
$response = $notesOperations->createNotes($bodyWrapper);
Copied<?php
class CreateNotes
{
public function execute(){
$curl_pointer = curl_init();
$curl_options = array();
$url = "https://www.zohoapis.com/crm/v2/Notes";
$curl_options[CURLOPT_URL] =$url;
$curl_options[CURLOPT_RETURNTRANSFER] = true;
$curl_options[CURLOPT_HEADER] = 1;
$curl_options[CURLOPT_CUSTOMREQUEST] = "POST";
$requestBody = array();
$recordArray = array();
$recordObject = array();
$recordObject["Note_Title"]="Contacted";
$recordObject["Note_Content"]="Need to do further tracking";
$recordObject["Parent_Id"]="35240335811001";
$recordObject["se_module"]="Leads";
$recordArray[] = $recordObject;
$requestBody["data"] =$recordArray;
$curl_options[CURLOPT_POSTFIELDS]= json_encode($requestBody);
$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 CreateNotes())->execute();
Copied//Get instance of NotesOperations Class
NotesOperations notesOperations = new NotesOperations();
//Get instance of BodyWrapper Class that will contain the request body
BodyWrapper bodyWrapper = new BodyWrapper();
//List of Note instances
List<Com.Zoho.Crm.API.Notes.Note> notes = new List<Com.Zoho.Crm.API.Notes.Note>();
for(int i = 1; i <= 5; i++)
{
//Get instance of Note Class
Com.Zoho.Crm.API.Notes.Note note = new Com.Zoho.Crm.API.Notes.Note();
//Set Note_Title of the Note
note.NoteTitle = "Contacted";
//Set NoteContent of the Note
note.NoteContent = "Need to do further tracking";
//Get instance of Record Class
Com.Zoho.Crm.API.Record.Record parentRecord = new Com.Zoho.Crm.API.Record.Record();
//Set ID of the Record
parentRecord.Id = 3477061000006920152;
//Set ParentId of the Note
note.ParentId = parentRecord;
//Set SeModule of the Record
note.SeModule = "Leads";
//Add Note instance to the list
notes.Add(note);
}
//Set the list to notes in BodyWrapper instance
bodyWrapper.Data = notes;
//Call CreateNotes method that takes BodyWrapper instance as parameter
APIResponse<ActionHandler> response = notesOperations.CreateNotes(bodyWrapper);
Copiedusing System;
using System.IO;
using System.Net;
using System.Text;
using Newtonsoft.Json.Linq;
namespace Com.Zoho.Crm.API.Sample.RestAPI.Notes
{
public class CreateNotes
{
public static void CreateNote()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.zohoapis.com/crm/v2/Notes");
request.Method = "POST";
request.Headers["Authorization"] = "Zoho-oauthtoken 1000.abfeXXXXXXXXXXX2asw.XXXXXXXXXXXXXXXXXXsdc2";
JObject requestBody = new JObject();
JArray recordArray = new JArray();
JObject recordObject = new JObject();
recordObject.Add("Note_Title", "Contacted");
recordObject.Add("Note_Content", "Need to do further tracking");
recordObject.Add("Parent_Id", "347706107736020");
recordObject.Add("se_module", "Leads");
recordArray.Add(recordObject);
recordObject = new JObject();
recordObject.Add("Note_Title", "Contacted1");
recordObject.Add("Note_Content", "Need to do further tracking");
recordObject.Add("Parent_Id", "347706107736020");
recordObject.Add("se_module", "Leads");
recordArray.Add(recordObject);
requestBody.Add("data", recordArray);
string dataString = requestBody.ToString();
var data = Encoding.UTF8.GetBytes(dataString);
int dataLength = data.Length;
request.ContentLength = dataLength;
using (var writer = request.GetRequestStream())
{
writer.Write(data, 0, dataLength);
}
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 AddNotesforASpecificRecord()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.zohoapis.com/crm/v2/Leads/34770617736020/Notes");
request.Method = "POST";
request.Headers["Authorization"] = "Zoho-oauthtoken 1000.abfeXXXXXXXXXXX2asw.XXXXXXXXXXXXXXXXXXsdc2";
JObject requestBody = new JObject();
JArray recordArray = new JArray();
JObject recordObject = new JObject();
recordObject.Add("Note_Title", "Contacted");
recordObject.Add("Note_Content", "Need to do further tracking");
recordArray.Add(recordObject);
recordObject = new JObject();
recordObject.Add("Note_Title", "Contacted1");
recordObject.Add("Note_Content", "Need to do further tracking");
recordArray.Add(recordObject);
requestBody.Add("data", recordArray);
string dataString = requestBody.ToString();
var data = Encoding.UTF8.GetBytes(dataString);
int dataLength = data.Length;
request.ContentLength = dataLength;
using (var writer = request.GetRequestStream())
{
writer.Write(data, 0, dataLength);
}
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 NotesOperations Class
notes_operations = NotesOperations()
# Get instance of BodyWrapper Class that will contain the request body
request = BodyWrapper()
# List to hold Note instances
notes_list = []
for i in range(0, 4):
# Get instance of Note Class
note = Note()
# Set Note Content of the Note
note.set_note_content("Need to do further tracking")
# Set Note Title of the Note
note.set_note_title('Contacted ' + str(i))
# Get instance of Record Class
parent_record = Record()
# Set ID of the Record
parent_record.set_id(3409643000002267003)
# Set ParentId of the Note
note.set_parent_id(parent_record)
# Set SeModule of the Record
note.set_se_module('Leads')
notes_list.append(note)
# Set the list to notes in BodyWrapper instance
request.set_data(notes_list)
# Call create_notes method that takes BodyWrapper instance as parameter
response = notes_operations.create_notes(request)
Copieddef create_notes():
import requests
import json
url = 'https://www.zohoapis.com/crm/v2/Notes'
headers = {
'Authorization': 'Zoho-oauthtoken 1000.04be928e4a96XXXXXXXXXXXXX68.0b9eXXXXXXXXXXXX60396e268'
}
request_body = dict()
record_list = list()
record_object_1 = {
'Note_Title': 'Contacted',
'Note_Content':'Need to do further tracking',
'Parent_Id': '3409643000002277005',
'se_module': 'Contacts'
}
record_object_2 = {
'Note_Title': 'Follow Up',
'Note_Content': 'Need to do further tracking',
'Parent_Id': '3409643000002267003',
'se_module': 'Leads'
}
record_list.append(record_object_1)
record_list.append(record_object_2)
request_body['data'] = record_list
response = requests.post(url=url, headers=headers, data=json.dumps(request_body).encode('utf-8'))
if response is not None:
print("HTTP Status Code : " + str(response.status_code))
print(response.json())
create_notes()
def add_notes_to_specific_record():
import requests
import json
url = 'https://www.zohoapis.com/crm/v2/Leads/3409643000002267003/Notes'
headers = {
'Authorization': 'Zoho-oauthtoken 1000.04be928e4a96XXXXXXXXXXXXX68.0b9eXXXXXXXXXXXX60396e268'
}
request_body = dict()
record_list = list()
record_object_1 = {
'Note_Title': 'New Note',
'Note_Content': 'Amigo',
}
record_object_2 = {
'Note_Title': 'Follow Up',
'Note_Content': 'Need to do further tracking',
}
record_list.append(record_object_1)
record_list.append(record_object_2)
request_body['data'] = record_list
response = requests.post(url=url, headers=headers, data=json.dumps(request_body).encode('utf-8'))
if response is not None:
print("HTTP Status Code : " + str(response.status_code))
print(response.json())
add_notes_to_specific_record()
Copied//Get instance of NotesOperations Class
let notesOperations = new NotesOperations();
//Get instance of BodyWrapper Class that will contain the request body
let request = new BodyWrapper();
//Array to hold Note instances
let notesArray = [];
for (let index = 0; index < 5; index++) {
//Get instance of Note Class
let note = new Note();
//Set Note Content of the Note
note.setNoteContent("Need to do further tracking");
//Set Note Title of the Note
note.setNoteTitle("Contacted");
//Get instance of Record Class
let parentRecord = new Record();
//Set ID of the Record
parentRecord.setId(3409643000002757042n);
//Set ParentId of the Note
note.setParentId(parentRecord);
//Set SeModule of the Record
note.setSeModule("PRoducts");
//Add Note instance to the array
notesArray.push(note);
}
//Set the array to notes in BodyWrapper instance
request.setData(notesArray);
//Call createNotes method that takes BodyWrapper instance as parameter
let response = await notesOperations.createNotes(request);
Copiedasync function createNotes() {
const got = require("got");
let url = 'https://www.zohoapis.com/crm/v2/Notes'
let headers = {
Authorization : "Zoho-oauthtoken 1000.354df3680b39983084e6a9d1894732f3.aae0efe21a1cf8c14beb10f6f4c92bc9"
}
let requestBody = {}
let recordArray = []
let recordObject1 = {
Note_Title : 'Contacted',
Note_Content :'Need to do further tracking',
Parent_Id : '3409643000002277005',
se_module : 'Contacts'
}
let recordObject2 = {
Note_Title : 'Follow Up',
Note_Content :'Need to do further tracking',
Parent_Id : '3409643000002267003',
se_module : 'Leads'
}
recordArray.push(recordObject1)
recordArray.push(recordObject2)
requestBody['data'] = recordArray
let requestDetails = {
method : "POST",
headers : headers,
body : JSON.stringify(requestBody),
encoding: "utf8",
throwHttpErrors : false
};
let response = await got(url, requestDetails)
if(response != null) {
console.log(response.statusCode);
console.log(response.body);
}
}
createNotes()
async function addNotesToSpecificRecord() {
const got = require("got");
let url = 'https://www.zohoapis.com/crm/v2/Leads/3409643000002267003/Notes'
let headers = {
Authorization : "Zoho-oauthtoken 1000.354df3680b39983084e6a9d1894732f3.aae0efe21a1cf8c14beb10f6f4c92bc9"
}
let requestBody = {}
let recordArray = []
let recordObject1 = {
Note_Title : 'Contacted',
Note_Content :'Need to do further tracking'
}
let recordObject2 = {
Note_Title : 'Follow Up',
Note_Content :'Need to do further tracking',
}
recordArray.push(recordObject1)
recordArray.push(recordObject2)
requestBody['data'] = recordArray
let requestDetails = {
method : "POST",
headers : headers,
body : JSON.stringify(requestBody),
encoding: "utf8",
throwHttpErrors : false
};
let response = await got(url, requestDetails)
if(response != null) {
console.log(response.statusCode);
console.log(response.body);
}
}
addNotesToSpecificRecord()
Copied# Get instance of NotesOperations Class
no = Notes::NotesOperations.new
# List to hold Note instances
notes = []
(0..5).each do |i|
# Get instance of Note Class
note = Notes::Note.new
# Set Note Title of the Note
note.note_title = 'Contacted'
# Set Note Content of the Note
note.note_content = 'Need to do further tracking'
# Get instance of Record Class
parent_record = Record::Record.new
# Set ID of the Record
parent_record.id = 3_524_033_000_005_495_066
# Set ParentId of the Note
note.parent_id = parent_record
# Set SeModule of the Record
note.se_module = 'Leads'
notes.push(note)
end
# Get instance of BodyWrapper Class that will contain the request body
body_wrapper = Notes::BodyWrapper.new
# Set the list to notes in BodyWrapper instance
body_wrapper.data = notes
# Call create_notes method that takes BodyWrapper instance as parameter
response = no.create_notes(body_wrapper)
Copiedclass CreateNotes
def execute
url ="https://www.zohoapis.com/crm/v2/Notes"
url = URI(url)
req = Net::HTTP::Post.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) }
request_body = {};
record_array = [];
record_object = {};
record_object["FieldAPIName"] = "FieldAPIValue";
record_object["Note_Title"]="Contacted";
record_object["Note_Content"]="Need to do further tracking";
record_object["Parent_Id"]="3524033000005811001";
record_object["se_module"]="Leads";
record_array = [record_object];
request_body["data"] =record_array;
request_json = request_body.to_json
req.body = request_json.to_s
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
CreateNotes.new.execute
Copied//Get instance of NotesOperations Class
let notesOperations = new ZCRM.Note.Operations();
//Get instance of BodyWrapper Class that will contain the request body
let request = new ZCRM.Note.Model.BodyWrapper();
//Array to hold Note instances
let notesArray = [];
for (let index = 0; index < 5; index++) {
//Get instance of Note Class
let note = new ZCRM.Note.Model.Note();
//Set Note Content of the Note
note.setNoteContent("Need to do further tracking");
//Set Note Title of the Note
note.setNoteTitle("Contacted");
//Get instance of Record Class
let parentRecord = new ZCRM.Record.Model.Record();
//Set ID of the Record
parentRecord.setId(34770616838058n);
//Set ParentId of the Note
note.setParentId(parentRecord);
//Set SeModule of the Record
note.setSeModule("Leads");
//Add Note instance to the array
notesArray.push(note);
}
//Set the array to notes in BodyWrapper instance
request.setData(notesArray);
//Call createNotes method that takes BodyWrapper instance as parameter
let response = await notesOperations.createNotes(request);
Copiedvar listener = 0;
class CreateNotes {
async createNote() {
var url = "https://www.zohoapis.com/crm/v2/Notes"
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 CreateNotes().getToken(token)
headers.set("Authorization", "Zoho-oauthtoken " + accesstoken)
var requestMethod = "POST"
var reqBody = {
"data": [
{
"Note_Title": "Contacted",
"Note_Content": "Need to do further tracking",
"Parent_Id": "35240336239039",
"se_module": "Leads"
}
]
}
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 CreateNotes().makeAPICall(requestObj);
console.log(result.status)
console.log(result.response)
}
async addNotesforASpecificRecord() {
var url = "https://www.zohoapis.com/crm/v2/Leads/35240336239039/Notes"
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 CreateNotes().getToken(token)
headers.set("Authorization", "Zoho-oauthtoken " + accesstoken)
var requestMethod = "POST"
var reqBody = {
"data": [
{
"Note_Title": "Contacted",
"Note_Content": "Need to do further tracking"
}
]
}
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 CreateNotes().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);
}
}
})
}
}
Copiednote1 = Map();
note1.put("Note_Title", "Contacted");
note1.put("Note_Content", "Need to do further tracking");
note1.put("Parent_Id", "692969000000981055");
note1.put("se_module", "Leads");
dataList = List();
dataList.add(note1);
params = Map();
params.put("data", dataList);
response = invokeurl
[
url :"https://www.zohoapis.com/crm/v2/Notes"
type :POST
parameters: params.toString()
connection:"crm_oauth_connection"
];
info response;
In the request, "@newnote.json" contains the sample input data.
Request JSON Keys
- Note_Titlestring, optional
Specify the title of the note.
- Note_Contentstring, mandatory
Specify the content of the note.
- Parent_Idstring, mandatory
Specify the unique ID of the parent record. Refer to Get Records API to get valid record IDs.
- se_modulestring, mandatory
Specify the module API name of the parent module. Refer to Modules API to get valid module API names.
You must use only Field API names in the input. You can obtain the field API names from Fields metadata API (the value for the key “api_name” for every field).
You can create a maximum of 100 notes per API call.
Sample Input
Copied{
"data": [
{
"Note_Title": "Contacted",
"Note_Content": "Need to do further tracking",
"Parent_Id": "412963000001376069",
"se_module": "Leads"
}
]
}
In the input, specify the field API names of the Notes module along with the corresponding values.
Possible Errors
- 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.notes.CREATE scope. Create a new client with valid scope. Refer to scope section above. - NO_PERMISSIONHTTP 403
Permission denied to add notes details
Resolution: The user does not have permission to add notes 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 add notes
Resolution: The user does not have the permission to add notes data. Contact your system administrator. - INVALID_DATAHTTP 400
the related id given seems to be invalid
Resolution: You have specified an incorrect related record ID. Please specify a valid record ID. Refer to Get Related Records API to get valid record IDs. - MANDATORY_NOT_FOUNDHTTP 400
required field not found
Resolution: You have not specified one or more mandatory fields in the input. Refer to Fields Metadata API to know the mandatory fields.
Sample Response
Copied{
"data": [
{
"message": "record added",
"details": {
"created_by": {
"id": "410888000000086001",
"name": "Patricia Boyle"
},
"id": "410888000000737002",
"modified_by": {
"id": "410888000000086001",
"name": "Patricia Boyle"
},
"modified_time": "2016-09-16T12:15:13+05:30",
"created_time": "2016-09-16T12:15:13+05:30"
},
"status": "success",
"code": "SUCCESS"
}
]
}