- Overview
- What's New
- V2.0 Migration
- API Directory
- API Collection
- OAuth Authentication
- API Limits
- Multi DC Support
- CORS Support
- Increase API Credits
- Customize API Usage Notification
- GDPR Compliance
- HIPAA Compliance
- API Dashboard
- Status Codes
- Request Methods
- Response Structure
- Entity API
- Bulk API
- Notification API
- Query API
Update Blueprint Details
Purpose
To update a single transition at a time. An error is thrown if the record is not in transition, transition_id is wrong, field_value data type mismatches, or field validation fails.
Request Details
Request URL
https://www.zohoapis.com/crm/v2/{module_api_name}/{id}/actions/blueprint
Supported modules
Leads, Accounts, Contacts, Deals, Campaigns, Tasks, Cases, Events, Meetings, Solutions, Products, Vendors, Pricebooks, Quotes, Salesorders, Purchaseorders, Invoices, Notes, and Custom
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, meetings, solutions, products, vendors, pricebooks, quotes, salesorders, purchaseorders, invoices, notes, and custom
Possible operation types
ALL - Full access to records
WRITE - Edit records in the module
UPDATE - Update records in the module
Sample Request
Copiedcurl "https://www.zohoapis.com/crm/v2/Leads/410888000000698006/actions/blueprint"
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
-d "@blueprint1.json"
-X PUT
CopiedString moduleAPIName = "Leads";
Long recordId = 3477061000004381002L;
Long transitionId = 3477061000000173096L;
//Get instance of BluePrintOperations Class that takes recordId and moduleAPIName as parameter
BluePrintOperations bluePrintOperations = new BluePrintOperations(recordId, moduleAPIName);
//Get instance of BodyWrapper Class that will contain the request body
BodyWrapper bodyWrapper = new BodyWrapper();
//List of BluePrint instances
List < com.zoho.crm.api.blueprint.BluePrint > bluePrintList = new ArrayList < com.zoho.crm.api.blueprint.BluePrint > ();
//Get instance of BluePrint Class
com.zoho.crm.api.blueprint.BluePrint bluePrint = new com.zoho.crm.api.blueprint.BluePrint();
//Set transition_id to the BluePrint instance
bluePrint.setTransitionId(transitionId);
//Get instance of Record Class
Record data = new Record();
HashMap < String, Object > lookup = new HashMap < String, Object > ();
lookup.put("Phone", "8940372937");
lookup.put("id", "8940372937");
// data.addKeyValue("Lookup_2", lookup);
data.addKeyValue("Phone", "8940372937");
data.addKeyValue("Notes", "Updated via blueprint");
HashMap < String, Object > attachments = new HashMap < String, Object > ();
ArrayList < String > fileIds = new ArrayList < String > ();
fileIds.add("blojtd2d13b5f044e4041a3315e0793fb21ef");
attachments.put("$file_id", fileIds);
data.addKeyValue("Attachments", attachments);
ArrayList < HashMap < String, Object >> checkLists = new ArrayList < HashMap < String, Object >> ();
HashMap < String, Object > checkListItem = new HashMap < String, Object > ();
checkListItem.put("list 1", true);
checkLists.add(checkListItem);
checkListItem = new HashMap < String, Object > ();
checkListItem.put("list 2", true);
checkLists.add(checkListItem);
checkListItem = new HashMap < String, Object > ();
checkListItem.put("list 3", true);
checkLists.add(checkListItem);
data.addKeyValue("CheckLists", checkLists);
//Set data to the BluePrint instance
bluePrint.setData(data);
//Add BluePrint instance to the list
bluePrintList.add(bluePrint);
//Set the list to bluePrint in BodyWrapper instance
bodyWrapper.setBlueprint(bluePrintList);
//Call updateBluePrint method that takes BodyWrapper instance
APIResponse < ActionResponse > response = bluePrintOperations.updateBlueprint(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.HttpPut;
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 UpdateBlueprintDetails
{
@SuppressWarnings("deprecation")
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/Leads/3477381002/actions/blueprint");
HttpUriRequest requestObj = new HttpPut(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
JSONObject requestBody = new JSONObject();
JSONArray recordArray = new JSONArray();
JSONObject recordObject = new JSONObject();
recordObject.put("transition_id", "347773093");
JSONObject dataObject = new JSONObject();
dataObject.put("Phone", "9876543210");
dataObject.put("Notes", "Updated via blueprint");
recordObject.put("data", dataObject);
recordArray.put(recordObject);
requestBody.put("blueprint", 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();
}
}
}
Copied//Get instance of BluePrintOperations Class that takes moduleAPIName and recordId as parameter
$bluePrintOperations = new BluePrintOperations($recordId,$moduleAPIName);
//Get instance of BodyWrapper Class that will contain the request body
$bodyWrapper = new BodyWrapper();
//List of BluePrint instances
$bluePrintList = array();
$bluePrintClass = 'com\zoho\crm\api\blueprint\BluePrint';
//Get instance of BluePrint Class
$bluePrint = new $bluePrintClass();
//Set transition_id to the BluePrint instance
$bluePrint->setTransitionId($transitionId);
//Get instance of Record Class
$data = new Record();
$lookup = array();
$lookup["Phone"] = "894XXXX2937";
$lookup["id"] = "8940XXXX937";
// $data->addKeyValue("Lookup_2", (object)$lookup);
$data->addKeyValue("Phone", "89403XXX37");
$data->addKeyValue("Notes", "Updated via blueprint");
$attachments = array();
$fileIds = array();
array_push($fileIds, "blojtd2d13b5f041a3315e0793fb21ef");
$attachments['$file_id'] = $fileIds;
$data->addKeyValue("Attachments", $attachments);
$checkLists = array();
$list = array();
$list["list 1"] = true;
array_push($checkLists, $list);
$list = array();
$list["list 2"] = true;
array_push($checkLists, $list);
$list = array();
$list["list 3"] = true;
array_push($checkLists, $list);
$data->addKeyValue("CheckLists", $checkLists);
//Set data to the BluePrint instance
$bluePrint->setData($data);
//Add BluePrint instance to the list
array_push($bluePrintList, $bluePrint);
//Set the list to bluePrint in BodyWrapper instance
$bodyWrapper->setBlueprint($bluePrintList);
// var_dump($bodyWrapper);
//Call updateBluePrint method that takes BodyWrapper instance
$response = $bluePrintOperations->updateBlueprint($bodyWrapper);
Copied<?php
class UpdateBlueprintDetails{
public function execute(){
$curl_pointer = curl_init();
$curl_options = array();
$curl_options[CURLOPT_URL] = "https://www.zohoapis.com/crm/v2/Leads/35240335811001/actions/blueprint";
$curl_options[CURLOPT_RETURNTRANSFER] = true;
$curl_options[CURLOPT_HEADER] = 1;
$curl_options[CURLOPT_CUSTOMREQUEST] = "PUT";
$requestBody = array();
$recordArray = array();
$recordObject = array();
$dataObject=array();
$recordObject["transition_id"] = "3524033191089";
$dataObject["Phone"]="894XXXX2937";
$dataObject["Notes"]="Updated via blueprint";
$recordObject["data"] = $dataObject;
$recordArray[] = $recordObject;
$requestBody["blueprint"] =$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 UpdateBlueprintDetails())->execute();
Copied//Get instance of BluePrintOperations Class that takes recordId and moduleAPIName as parameter
BluePrintOperations bluePrintOperations = new BluePrintOperations (recordId, moduleAPIName);
//Get instance of BodyWrapper Class that will contain the request body
API.BluePrint.BodyWrapper bodyWrapper = new API.BluePrint.BodyWrapper();
//List of BluePrint instances
List<API.BluePrint.BluePrint> bluePrintList = new List<API.BluePrint.BluePrint>();
//Get instance of BluePrint Class
API.BluePrint.BluePrint bluePrint = new API.BluePrint.BluePrint();
//Set transition_id to the BluePrint instance
bluePrint.TransitionId = transitionId;
//Get instance of Record Class
Com.Zoho.Crm.API.Record.Record data = new Com.Zoho.Crm.API.Record.Record();
Dictionary<string, object> lookup = new Dictionary<string, object>();
lookup.Add("Phone", "123456723");
lookup.Add("id", "123456723");
//data.AddKeyValue("Lookup_2", lookup);
data.AddKeyValue("Phone", "123456723");
data.AddKeyValue("Notes", "Updated via blueprint");
Dictionary<string, object> attachments = new Dictionary<string, object>();
List<string> fileIds = new List<string>();
fileIds.Add("blojtd2d13b5f044e4041a3315e0793fb21ef");
attachments.Add("$file_id", fileIds);
//data.AddKeyValue("Attachments", attachments);
List<Dictionary<string, object>> checkLists = new List<Dictionary<string, object>>();
Dictionary<string, object> checkListItem = new Dictionary<string, object>();
checkListItem.Add("list 1", true);
checkLists.Add(checkListItem);
checkListItem = new Dictionary<string, object>();
checkListItem.Add("list 2", true);
checkLists.Add(checkListItem);
checkListItem = new Dictionary<string, object>();
checkListItem.Add("list 3", true);
checkLists.Add(checkListItem);
//data.AddKeyValue("CheckLists", checkLists);
//Set data to the BluePrint instance
bluePrint.Data = data;
//Add BluePrint instance to the list
bluePrintList.Add(bluePrint);
//Set the list to bluePrint in BodyWrapper instance
bodyWrapper.Blueprint = bluePrintList;
//Call UpdateBlueprint method that takes BodyWrapper instance
APIResponse<API.BluePrint.ActionResponse> response = bluePrintOperations.UpdateBlueprint(bodyWrapper);
Copiedusing System;
using System.IO;
using System.Net;
using System.Text;
using Newtonsoft.Json.Linq;
namespace Com.Zoho.Crm.API.Sample.RestAPI.BluePrint
{
public class UpdateBlueprintDetails
{
public static void UpdateBlueprintDetail()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.zohoapis.com/crm/v2/Leads/34770614381002/actions/blueprint");
request.Method = "PUT";
request.Headers["Authorization"] = "Zoho-oauthtoken 1000.abfeXXXXXXXXXXX2asw.XXXXXXXXXXXXXXXXXXsdc2";
JObject requestBody = new JObject();
JArray recordArray = new JArray();
JObject recordObject = new JObject();
recordObject.Add("transition_id", "3477061173093");
JObject dataObject = new JObject();
dataObject.Add("Phone", "123456787");
dataObject.Add("Notes", "Updated via blueprint");
recordObject.Add("data", dataObject);
recordArray.Add(recordObject);
requestBody.Add("blueprint", 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 BluePrintOperations Class that takes module_api_name and record_id as parameter
blue_print_operations = BluePrintOperations(module_api_name, record_id)
# Get instance of BodyWrapper Class that will contain the request body
request = BodyWrapper()
# List to contain BluePrint instances
blue_print_list = []
# Get instance of BluePrint Class
blue_print = BluePrint()
# Set transitionId to the BluePrint instance
blue_print.set_transition_id(transition_id)
# Get instance of Record Class
data = Record()
lookup = dict()
lookup['id'] = '8940372937'
data.add_key_value('Data_3', lookup)
data.add_key_value('Phone', '8940372937')
data.add_key_value("Notes", "Updated via blueprint")
check_list_item = {'item1': True}
check_list_item_2 = {'item1': True}
check_list_item_3 = {'item1': True}
check_lists = [check_list_item, check_list_item_2, check_list_item_3]
data.add_field_value("CheckLists", check_lists)
# Set data to the BluePrint instance
blue_print.set_data(data)
# Add BluePrint instance to the list
blue_print_list.append(blue_print)
# Set the list to bluePrint in BodyWrapper instance
request.set_blueprint(blue_print_list)
# Call updateBluePrint method that takes BodyWrapper instance as parameter
response = blue_print_operations.update_blueprint(request)
Copieddef update_blueprint_details():
import requests
import json
url = 'https://www.zohoapis.com/crm/v2/Leads/3409643000002882015/actions/blueprint'
headers = {
'Authorization': 'Zoho-oauthtoken 1000.04be928e4a96XXXXXXXXXXXXX68.0b9eXXXXXXXXXXXX60396e268'
}
request_body = dict()
record_list = list()
record_object = dict()
data_object = dict()
record_object['transition_id'] = '3409643000001172029'
data_object["Phone"] = "8940372937"
data_object["Notes"] = "Updated via blueprint"
record_object['data'] = data_object
record_list.append(record_object)
request_body['blueprint'] = record_list
response = requests.put(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())
update_blueprint_details()
Copied//Get instance of BluePrintOperations Class that takes moduleAPIName and recordId as parameter
let bluePrintOperations = new BluePrintOperations(recordId, moduleAPIName);
//Get instance of BodyWrapper Class that will contain the request body
let bodyWrapper = new BodyWrapper();
//Array to contain BluePrint instances
let bluePrintArray = [];
//Get instance of BluePrint Class
let bluePrint = new BluePrint();
//Set transitionId to the BluePrint instance
bluePrint.setTransitionId(transitionId);
//Get instance of Record Class
let data = new Record();
let lookup = new Map();
lookup.set("Phone", "8940372937");
lookup.set("id", "8940372937");
// data.addKeyValue("Data_3", lookup);
data.addKeyValue("Phone", "8940372937");
data.addKeyValue("Notes", "Updated via blueprint");
let checkLists = [];
let checkListItem = new Map();
checkListItem.set("list 1", true);
checkLists.push(checkListItem);
checkListItem = new Map();
checkListItem.set("list 2", true);
checkLists.push(checkListItem);
checkListItem = new Map();
checkListItem.set("list 3", true);
checkLists.push(checkListItem);
data.addKeyValue("CheckLists", checkLists);
//Set data to the BluePrint instance
bluePrint.setData(data);
//Add BluePrint instance to the array
bluePrintArray.push(bluePrint);
//Set the array to bluePrint in BodyWrapper instance
bodyWrapper.setBlueprint(bluePrintArray);
//Call updateBluePrint method that takes BodyWrapper instance
let response = await bluePrintOperations.updateBlueprint(bodyWrapper);
Copiedasync function updateBluePrintDetails() {
const got = require("got");
let url = "https://www.zohoapis.com/crm/v2/Leads/3409643000002882015/actions/blueprint"
let headers = {
Authorization : "Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"
}
let requestBody = {}
let recordArray = []
let recordObject = {}
let dataObject = {}
recordObject.transition_id = "3409643000001172029"
dataObject["Phone"] = "8940372937"
dataObject["Notes"] = "Updated via blueprint"
recordObject.data = dataObject
recordArray.push(recordObject)
requestBody["blueprint"] = recordArray
let requestDetails = {
method : "PUT",
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);
}
}
updateBluePrintDetails();
Copied# Get instance of BluePrintOperations Class that takes module_api_name and record_id as parameter
bpo = BluePrint::BluePrintOperations.new(record_id, module_api_name)
# Get instance of BodyWrapper Class that will contain the request body
bw = BluePrint::BodyWrapper.new
# Get instance of BluePrint Class
blue_print = BluePrint::BluePrint.new
# Set transitionId to the BluePrint instance
blue_print.transition_id = transition_id
# Get instance of Record Class
data = Record::Record.new
data.add_key_value('Phone', '8940372937')
data.add_key_value('Notes', 'Updated via blueprint')
# Set data to the BluePrint instance
blue_print.data = data
# List to contain BluePrint instances
# Add BluePrint instance to the list
blue_print_list = [blue_print]
# Set the list to bluePrint in BodyWrapper instance
bw.blueprint = blue_print_list
# Call updateBluePrint method that takes BodyWrapper instance as parameter
response = bpo.update_blueprint(bw)
Copiedclass UpdateBlueprintDetails
def execute
url = URI("https://www.zohoapis.com/crm/v2/Leads/3524033000005495065/actions/blueprint")
req = Net::HTTP::Put.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 = {};
data_object={};
record_object["transition_id"] = "3524033000000191089";
data_object["Phone"]="8940372937";
data_object["Notes"]="Updated via blueprint";
record_object["data"] = data_object;
record_array = [record_object];
request_body["blueprint"] =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
UpdateBlueprintDetails.new.execute
Copied//Get instance of BluePrintOperations Class that takes moduleAPIName and recordId as parameter
let bluePrintOperations = new ZCRM.BluePrint.Operations(recordId, moduleAPIName);
//Get instance of BodyWrapper Class that will contain the request body
let bodyWrapper = new ZCRM.BluePrint.Model.BodyWrapper();
//Array to contain BluePrint instances
let bluePrintArray = [];
//Get instance of BluePrint Class
let bluePrint = new ZCRM.BluePrint.Model.BluePrint();
//Set transitionId to the BluePrint instance
bluePrint.setTransitionId(transitionId);
//Get instance of Record Class
let data = new ZCRM.Record.Model.Record();
let lookup = new Map();
lookup.set("Phone", "1234567890");
lookup.set("id", "123456789990");
// data.addKeyValue("Data_3", lookup);
data.addKeyValue("Phone", "1234567890");
data.addKeyValue("Notes", "Updated via blueprint");
let checkLists = [];
let checkListItem = new Map();
checkListItem.set("list 1", true);
checkLists.push(checkListItem);
checkListItem = new Map();
checkListItem.set("list 2", true);
checkLists.push(checkListItem);
checkListItem = new Map();
checkListItem.set("list 3", true);
checkLists.push(checkListItem);
data.addKeyValue("CheckLists", checkLists);
//Set data to the BluePrint instance
bluePrint.setData(data);
//Add BluePrint instance to the array
bluePrintArray.push(bluePrint);
//Set the array to bluePrint in BodyWrapper instance
bodyWrapper.setBlueprint(bluePrintArray);
//Call updateBluePrint method that takes BodyWrapper instance
let response = await bluePrintOperations.updateBlueprint(bodyWrapper);
Copiedvar listener = 0;
class UpdateBlueprintDetails {
async updateBlueprintDetails() {
var url = "https://www.zohoapis.com/crm/v2/Leads/34770616838058/actions/blueprint"
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 UpdateBlueprintDetails().getToken(token)
headers.set("Authorization", "Zoho-oauthtoken " + accesstoken)
var requestMethod = "PUT"
var reqBody = {
"blueprint": [
{
"transition_id": "3477061173093",
"data": {
"Phone": "1234567890",
"Notes": "Updated via blueprint"
}
}
]
}
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 UpdateBlueprintDetails().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);
}
}
})
}
}
CopieddataMap = Map();
dataMap.put("Notes", "Updated via blueprint");
blueprint1 = Map();
blueprint1.put("transition_id", "692969000000981130");
blueprint1.put("data", dataMap);
blueprintList = List();
blueprintList.add(blueprint1);
param = Map();
param.put("blueprint", blueprintList);
response = invokeurl
[
url: "https://www.zohoapis.com/crm/v2/Leads/692969000000983046/actions/blueprint"
type: PUT
parameters: param.toString()
connection:"crm_oauth_connection"
];
info response;
Copied//Get instance of BluePrintOperations Class that takes moduleAPIName and recordId as parameter
let bluePrintOperations = new BluePrintOperations(recordId, moduleAPIName);
//Get instance of BodyWrapper Class that will contain the request body
let bodyWrapper: BodyWrapper = new BodyWrapper();
//Array to contain BluePrint instances
let bluePrintArray: ZCRMBluePrint[] = [];
//Get instance of BluePrint Class
let bluePrint: ZCRMBluePrint = new ZCRMBluePrint();
//Set transitionId to the BluePrint instance
bluePrint.setTransitionId(transitionId);
//Get instance of Record Class
let data: Record = new Record();
let lookup = new Map();
lookup.set("Phone", "8940372937");
lookup.set("id", "8940372937");
// data.addKeyValue("Data_3", lookup);
data.addKeyValue("Phone", "8940372937");
data.addKeyValue("Notes", "Updated via blueprint");
let checkLists = [];
let checkListItem = new Map();
checkListItem.set("list 1", true);
checkLists.push(checkListItem);
checkListItem = new Map();
checkListItem.set("list 2", true);
checkLists.push(checkListItem);
checkListItem = new Map();
checkListItem.set("list 3", true);
checkLists.push(checkListItem);
data.addKeyValue("CheckLists", checkLists);
//Set data to the BluePrint instance
bluePrint.setData(data);
//Add BluePrint instance to the array
bluePrintArray.push(bluePrint);
//Set the array to bluePrint in BodyWrapper instance
bodyWrapper.setBlueprint(bluePrintArray);
//Call updateBluePrint method that takes BodyWrapper instance
let response: APIResponse < ActionResponse > = await bluePrintOperations.updateBlueprint(bodyWrapper);
Copiedimport got from 'got';
class UpdateBlueprintDetails {
public async main() {
var apiHeaders: {[key: string]: string} = {};
var apiParameters: {[key: string]: string} = {};
var modifiedRequestBody: any={
"blueprint": [
{
"transition_id": "3477061173093",
"data": {
"Phone": "8940372937",
"Notes": "Updated via blueprint"
}
}
]
};
modifiedRequestBody = JSON.stringify(modifiedRequestBody)
apiHeaders["Authorization"] = "Zoho-oauthtoken 1000.xxxxxxx.xxxxxx"
var requestDetails: {[key: string]: any} = {
method : "PUT",
headers : apiHeaders,
searchParams : apiParameters,
body : modifiedRequestBody,
encoding: "utf8",
allowGetBody : true,
throwHttpErrors : false
};
var response = await got("https://www.zohoapis.com/crm/v2/Leads/34770619294014/actions/blueprint", requestDetails);
console.log(response.statusCode)
console.log(JSON.parse(response.body));
}
}
var v = new UpdateBlueprintDetails()
v.main()
Show full
Show less
In the request, "@blueprint1.json" contains the sample input data.
Note
- In the Related List sample, the key "Tasks" is the name of the list related to the record used in the transition.
- The related list support for this API depends on the module of the record, which is used in the transition of the blueprint.
- In case the number of fields in the input does not meet the required number, the "message" in the response would be "transition saved partially".
- You can update only to the next state of Blueprint using Update Blueprint API and not to any of the previous states of the Blueprint.
Sample Input
Copied{
"blueprint": [
{
"transition_id": "401308000003240197",
"data": {
"Phone": 8940372937,
"Notes": "Updated via blueprint"
}
}
]
}
Sample Input: To add notes to a record in transition
{
"blueprint": [
{
"transition_id": "401308000003240197",
"data": {
"Phone": 8940372937,
"Notes": "Updated via blueprint"
}
}
]
}
Sample Input: To upload attachments to the blueprint
{
"blueprint": [
{
"transition_id": "1000000031897",
"data": {
"Attachments": {
"$file_id": [
"59cf260313b6907ffc56957f4241bd94ba3e0b6aad53b50f8b38583a859d623a",
"59cf260313b6907ffc56957f4241bd94ba3e0b6aad53b50f8b38583a859d624d"
]
}
}
}
]
}
Sample Input: To handle parent module fields during transition
{
"blueprint": [
{
"transition_id": "2000000031536",
"data": {
"Lookup_2": {
"phone": "123458939",
"id": "2000000048165"
}
}
}
]
}
Sample Input: To update checklist information
{
"blueprint": [
{
"transition_id": "1000000034304",
"data": {
"CheckLists": [
{
"list 1": true
},
{
"list 2": false
},
{
"list 3": true
},
{
"list 4": true
}
]
}
}
]
}
Sample Input: To update related list information
{
"blueprint": [
{
"transition_id": "2000000031536",
"data": {
"Tasks": {
"Subject": "Event"
}
}
}
]
}
Show full
Show less
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.{module_name}.UPDATE scope. Create a new client with valid scope. Refer to scope section above. - NO_PERMISSIONHTTP 403
Permission denied to update records
Resolution: The user does not have permission to update blueprint 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 update records
Resolution: The user does not have the permission to update blueprint data. Contact your system administrator. - INVALID_DATAHTTP 400
the id given seems to be invalid
Resolution: You have specified an incorrect record ID. Please specify a valid record ID. Refer to Get Records API to get valid record IDs. - MANDATORY_NOT_FOUNDHTTP 400
mandatory param missing
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{
"code": "SUCCESS",
"details": {},
"message": "transition updated successfully",
"status": "success"
}
© 2025, Zoho Corporation Pvt. Ltd. All Rights Reserved.