Run your entire business on Zoho with our unified cloud software, designed to help you break down silos between departments and increase organizational efficiency.
package com.zoho.crm.sample.blueprint
import java.util
import com.zoho.crm.api.blueprint.{APIException, ActionResponse, BluePrint, BluePrintOperations, BodyWrapper, NextTransition, ProcessInfo, ResponseHandler, ResponseWrapper, SuccessResponse, Transition, ValidationError}
import com.zoho.crm.api.fields.AutoNumber
import com.zoho.crm.api.fields.Field
import com.zoho.crm.api.fields.MultiSelectLookup
import com.zoho.crm.api.fields.PickListValue
import com.zoho.crm.api.fields.ToolTip
import com.zoho.crm.api.fields.ViewType
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.record.Record
import com.zoho.crm.api.users.User
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import scala.collection.mutable.Map
import scala.collection.mutable.ArrayBuffer
object BluePrints {
/**
* Get Blueprint
* This method is used to get a single record's Blueprint details with ID and print the response.
*
* @param moduleAPIName The API Name of the record's module
* @param recordId The ID of the record to get Blueprint
* @throws Exception
*/
@throws[Exception]
def getBlueprint(moduleAPIName: String, recordId: Long): Unit = { //example
//String moduleAPIName = "Leads"
//Long recordId = 34770614381002l
//Get instance of BluePrintOperations Class that takes recordId and moduleAPIName as parameter
val bluePrintOperations = new BluePrintOperations(recordId,moduleAPIName)
//Call getBlueprint method
val responseOption = bluePrintOperations.getBlueprint
if (responseOption.isDefined) { //check response
var response= responseOption.get
println("Status Code: " + response.getStatusCode)
if (util.Arrays.asList(204, 304).contains(response.getStatusCode)) {
println(if (response.getStatusCode == 204) "No Content"
else "Not Modified")
return
}
//Check if expected response is received
if (response.isExpected) { //Get object from response
val responseHandler = response.getObject
if (responseHandler.isInstanceOf[ResponseWrapper]) { //Get the received ResponseWrapper instance
val responseWrapper = responseHandler.asInstanceOf[ResponseWrapper]
//Get the obtained BluePrint instance
val bluePrintOption = responseWrapper.getBlueprint
val bluePrint = bluePrintOption.get
//Get the ProcessInfo instance of the obtained BluePrint
val processInfoOption= bluePrint.getProcessInfo()
//Check if ProcessInfo is not null
if (processInfoOption.isDefined) { //Get the Field ID of the ProcessInfo
var processInfo = processInfoOption.get
println("ProcessInfo Field-ID: " + processInfo.getFieldId)
//Get the isContinuous of the ProcessInfo
println("ProcessInfo isContinuous: " + processInfo.getIsContinuous)
//Get the API Name of the ProcessInfo
println("ProcessInfo API Name: " + processInfo.getAPIName)
//Get the Continuous of the ProcessInfo
println("ProcessInfo Continuous: " + processInfo.getContinuous)
//Get the FieldLabel of the ProcessInfo
println("ProcessInfo FieldLabel: " + processInfo.getFieldLabel)
//Get the Name of the ProcessInfo
println("ProcessInfo Name: " + processInfo.getName)
//Get the ColumnName of the ProcessInfo
println("ProcessInfo ColumnName: " + processInfo.getColumnName)
//Get the FieldValue of the ProcessInfo
println("ProcessInfo FieldValue: " + processInfo.getFieldValue)
//Get the ID of the ProcessInfo
println("ProcessInfo ID: " + processInfo.getId)
//Get the FieldName of the ProcessInfo
println("ProcessInfo FieldName: " + processInfo.getFieldName)
}
//Get the list of transitions from BluePrint instance
val transitions = bluePrint.getTransitions
for (transition {
println(entry._1 + ": " + entry._2)
})
//Get the NextFieldValue of the Transition
println("Transition NextFieldValue: " + transition.getNextFieldValue)
//Get the Name of each Transition
println("Transition Name: " + transition.getName)
//Get the CriteriaMatched of the Transition
println("Transition CriteriaMatched: " + transition.getCriteriaMatched.toString)
//Get the ID of the Transition
println("Transition ID: " + transition.getId)
println("Transition Fields: ")
val fields = transition.getFields
for (field {
println(entry._1 + ": " + entry._2)
})
}
}
//Get the CriteriaMessage of each Transition
println("Transition CriteriaMessage: " + transition.getCriteriaMessage)
}
}
else { //Check if the request returned an exception
if (responseHandler.isInstanceOf[APIException]) { //Get the received APIException instance
val exception = responseHandler.asInstanceOf[APIException]
//Get the Status
println("Status: " + exception.getStatus.getValue)
//Get the Code
println("Code: " + exception.getCode.getValue)
println("Details: ")
//Get the details map
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
//Get the Message
println("Message: " + exception.getMessage.getValue)
}
}
}
else { //If response is not as expected
//Get model object from response
val responseObject = response.getModel
//Get the response object's class
val clas = responseObject.getClass
//Get all declared fields of the response class
val fields = clas.getDeclaredFields
for (field
Update Blueprint
package com.zoho.crm.sample.blueprint
import java.util
import com.zoho.crm.api.blueprint.{APIException, ActionResponse, BluePrint, BluePrintOperations, BodyWrapper, NextTransition, ProcessInfo, ResponseHandler, ResponseWrapper, SuccessResponse, Transition, ValidationError}
import com.zoho.crm.api.fields.AutoNumber
import com.zoho.crm.api.fields.Field
import com.zoho.crm.api.fields.MultiSelectLookup
import com.zoho.crm.api.fields.PickListValue
import com.zoho.crm.api.fields.ToolTip
import com.zoho.crm.api.fields.ViewType
import com.zoho.crm.api.layouts.Layout
import com.zoho.crm.api.record.Record
import com.zoho.crm.api.users.User
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import scala.collection.mutable.Map
import scala.collection.mutable.ArrayBuffer
object BluePrints {
/**
* Update Blueprint
* This method is used to update a single record's Blueprint details with ID and print the response.
*
* @param moduleAPIName The API Name of the record's module
* @param recordId The ID of the record to get Blueprint
* @param transitionId The ID of the Blueprint transition Id
* @throws Exception
*/
@throws[Exception]
def updateBlueprint(moduleAPIName: String, recordId: Long, transitionId: Long): Unit = { //ID of the BluePrint to be updated
//Long transitionId = 34770610173096l
//Get instance of BluePrintOperations Class that takes moduleAPIName and recordId as parameter
val bluePrintOperations = new BluePrintOperations(recordId,moduleAPIName)
//Get instance of BodyWrapper Class that will contain the request body
val bodyWrapper = new BodyWrapper
//List of BluePrint instances
val bluePrintList = new ArrayBuffer[BluePrint]
//Get instance of BluePrint Class
val bluePrint = new BluePrint
//Set transition_id to the BluePrint instance
bluePrint.setTransitionId(Option(transitionId))
//Get instance of Record Class
val data = new Record
val lookup:Map[String,Any] = Map()
lookup.put("Phone", "1234567890")
lookup.put("id", "8940372937")
// data.addKeyValue("Lookup_2", lookup)
data.addKeyValue("Phone", "1234567890")
data.addKeyValue("Notes", "Updated via blueprint")
val attachments:Map[String,Any] =Map()
val fileIds = new ArrayBuffer[String]
fileIds.addOne("blojtd2d13b5f1a3315e0793fb21ef")
attachments.put("$file_id", fileIds)
data.addKeyValue("Attachments", attachments)
val checkLists = new ArrayBuffer[Map[String,Any]]
var checkListItem1:Map[String,Any] = Map()
checkListItem1.put("list 1", true)
checkLists.addOne(checkListItem1)
var checkListItem2:Map[String,Any] = Map()
checkListItem2.put("list 2", true)
checkLists.addOne(checkListItem2)
var checkListItem3:Map[String,Any] = Map()
checkListItem3.put("list 3", true)
checkLists.addOne(checkListItem3)
data.addKeyValue("CheckLists", checkLists)
//Set data to the BluePrint instance
bluePrint.setData(Option(data))
//Add BluePrint instance to the list
bluePrintList.addOne(bluePrint)
//Set the list to bluePrint in BodyWrapper instance
bodyWrapper.setBlueprint(bluePrintList)
//Call updateBluePrint method that takes BodyWrapper instance
val responseOption = bluePrintOperations.updateBlueprint(bodyWrapper)
if (responseOption.isDefined) {
val response = responseOption.get
println("Status Code: " + response.getStatusCode)
if (response.isExpected) {
val actionResponse = response.getObject
//Check if the request is successful
if (actionResponse.isInstanceOf[SuccessResponse]) { //Get the received SuccessResponse instance
val successResponse = actionResponse.asInstanceOf[SuccessResponse]
println("Status: " + successResponse.getStatus.getValue)
println("Code: " + successResponse.getCode.getValue)
println("Details: ")
if (successResponse.getDetails != null) {
successResponse.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
println("Message: " + successResponse.getMessage.getValue)
}
else if (actionResponse.isInstanceOf[APIException]) {
val exception = actionResponse.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
if (entry._2.isInstanceOf[ArrayBuffer[Any]]) {
@SuppressWarnings(Array("unchecked")) val validationError = entry._2.asInstanceOf[ArrayBuffer[ValidationError]]
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
else println(entry._2.toString)
})
println("Message: " + exception.getMessage.getValue)
}
}
else {
val responseObject = response.getModel
val clas = responseObject.getClass
val fields = clas.getDeclaredFields
for (field