Java SDK Samples - Blueprint Operations

Get Blueprint Details
              
              
package samples.src.com.zoho.crm.api.blueprint;

import java.util.ArrayList;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import java.util.Map;

import com.zoho.crm.api.blueprint.APIException;

import com.zoho.crm.api.blueprint.ActionResponse;

import com.zoho.crm.api.fields.AutoNumber;

import com.zoho.crm.api.blueprint.BluePrintOperations;

import com.zoho.crm.api.blueprint.BodyWrapper;

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.blueprint.NextTransition;

import com.zoho.crm.api.blueprint.ProcessInfo;

import com.zoho.crm.api.blueprint.ResponseHandler;

import com.zoho.crm.api.blueprint.ResponseWrapper;

import com.zoho.crm.api.blueprint.SuccessResponse;

import com.zoho.crm.api.blueprint.Transition;
import com.zoho.crm.api.blueprint.ValidationError;
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;

public class BluePrint
{
    /**
     * 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
     */
    public static void getBlueprint(String moduleAPIName, Long recordId) throws Exception
    {
        //example
        //String moduleAPIName = "Leads";
        //Long recordId = 34770614381002l;
        
        //Get instance of BluePrintOperations Class that takes recordId and moduleAPIName as parameter
        BluePrintOperations bluePrintOperations = new BluePrintOperations(recordId, moduleAPIName);
        
        //Call getBlueprint method
        APIResponse response = bluePrintOperations.getBlueprint();
        
        if(response != null)
        {
            //Get the status code from response
            System.out.println("Status Code: " + response.getStatusCode());
            
            if(Arrays.asList(204,304).contains(response.getStatusCode()))
            {
                System.out.println(response.getStatusCode() == 204? "No Content" : "Not Modified");
                
                return;
            }
            
            //Check if expected response is received
            if(response.isExpected())
            {
                //Get object from response
                ResponseHandler responseHandler = response.getObject();
                
                if(responseHandler instanceof ResponseWrapper)
                {
                    //Get the received ResponseWrapper instance
                    ResponseWrapper responseWrapper = (ResponseWrapper) responseHandler;
                    
                    //Get the obtained BluePrint instance
                    com.zoho.crm.api.blueprint.BluePrint bluePrint = responseWrapper.getBlueprint();
                
                    //Get the ProcessInfo instance of the obtained BluePrint
                    ProcessInfo processInfo = bluePrint.getProcessInfo();
                    
                    //Check if ProcessInfo is not null
                    if(processInfo != null)
                    {
                        //Get the Field ID of the ProcessInfo
                        System.out.println("ProcessInfo Field-ID: " + processInfo.getFieldId());
                        
                        Escalation escalation = processInfo.getEscalation();
                        
                        if (escalation!=null) {
                            System.out.println("Escalation days: " + escalation.getDays());
                            System.out.println("Escalation status: " + escalation.getStatus());
                        }
                        
                        //Get the isContinuous of the ProcessInfo
                        System.out.println("ProcessInfo isContinuous: " + processInfo.getIsContinuous());
                        
                        //Get the API Name of the ProcessInfo
                        System.out.println("ProcessInfo API Name: " + processInfo.getAPIName());
                        
                        //Get the Continuous of the ProcessInfo
                        System.out.println("ProcessInfo Continuous: " + processInfo.getContinuous());
                        
                        //Get the FieldLabel of the ProcessInfo
                        System.out.println("ProcessInfo FieldLabel: " + processInfo.getFieldLabel());
                        
                        //Get the Name of the ProcessInfo
                        System.out.println("ProcessInfo Name: " + processInfo.getName());
                        
                        //Get the ColumnName of the ProcessInfo
                        System.out.println("ProcessInfo ColumnName: " + processInfo.getColumnName());
                        
                        //Get the FieldValue of the ProcessInfo
                        System.out.println("ProcessInfo FieldValue: " + processInfo.getFieldValue());
                        
                        //Get the ID of the ProcessInfo
                        System.out.println("ProcessInfo ID: " + processInfo.getId());
                        
                        //Get the FieldName of the ProcessInfo
                        System.out.println("ProcessInfo FieldName: " + processInfo.getFieldName()); 
                    }
                    
                    //Get the list of transitions from BluePrint instance
                    List transitions = bluePrint.getTransitions();
                    
                    for(Transition transition : transitions)
                    {
                        
                        List nextTransitions = transition.getNextTransitions();
                        
                        for(NextTransition nextTransition : nextTransitions)
                        {
                            //Get the ID of the NextTransition
                            System.out.println("NextTransition ID: " + nextTransition.getId());
                            
                            //Get the criteria_matched of the NextTransition
                            System.out.println("NextTransition criteria_matched: " + nextTransition.getCriteriaMatched());
                            
                            //Get the Name of the NextTransition
                            System.out.println("NextTransition Name: " + nextTransition.getName());
                            
                            //Get the type of the NextTransition
                            System.out.println("NextTransition type: " + nextTransition.getType());
                        }
                        //Get the parent of the Transition
                        Transition parentTransition = transition.getParentTransition();
                        if (parentTransition!=null) {
                            System.out.println("Parenttransition ID: " + parentTransition.getId());
                        }
                        
                        Record data = transition.getData();
                        
                        //Get the ID of each record
                        System.out.println("Record ID: " + data.getId());
                        
                        //Get the createdBy User instance of each record
                        User createdBy = data.getCreatedBy();
                        
                        if(createdBy != null)
                        {
                            //Get the ID of the createdBy User
                            System.out.println("Record Created By User-ID: " + createdBy.getId());
                            
                            //Get the name of the createdBy User
                            System.out.println("Record Created By User-Name: " + createdBy.getName());
                        }
                        
                        //Check if the created time is not null
                        if(data.getCreatedTime() != null)
                        {
                            //Get the created time of each record
                            System.out.println("Record Created Time: " + data.getCreatedTime().toString());
                        }
                        
                        //Check if the modified time is not null
                        if(data.getModifiedTime() != null)
                        {
                            //Get the modified time of each record
                            System.out.println("Record Modified Time: " + data.getModifiedTime().toString());
                        }
                        
                        //Get the modifiedBy User instance of each record
                        User modifiedBy = data.getModifiedBy();
    
                        //Check if modifiedByUser is not null
                        if(modifiedBy != null)
                        {
                            //Get the ID of the modifiedBy User
                            System.out.println("Record Modified By User-ID: " + modifiedBy.getId());
                            
                            //Get the name of the modifiedBy User
                            System.out.println("Record Modified By user-Name: " + modifiedBy.getName());
                        }
                        
                        //Get all entries from the keyValues map
                        for(Map.Entryentry : data.getKeyValues().entrySet())
                        {
                            //Get each value from the map
                            System.out.println(entry.getKey() + ": " + entry.getValue());
                        }
                        
                        //Get the NextFieldValue of the Transition
                        System.out.println("Transition NextFieldValue: " + transition.getNextFieldValue());
                        
                        //Get the Name of each Transition
                        System.out.println("Transition Name: " + transition.getName());
                        
                        //Get the CriteriaMatched of the Transition
                        System.out.println("Transition CriteriaMatched: " + transition.getCriteriaMatched().toString());
                        
                        //Get the ID of the Transition
                        System.out.println("Transition ID: " + transition.getId());
                        
                        System.out.println("Transition Fields: ");
                        
                        List fields = transition.getFields();
                        
                        for(Field field : fields)
                        {
                            if(field.getSystemMandatory() != null)
                            {
                                //Get the SystemMandatory of each Field
                                System.out.println("Field is SystemMandatory: " + field.getSystemMandatory() );
                            }

                            //Get the private of each Field
                            System.out.println("Field is Private"+ field.getPrivate()) ;
                            //Get the webhook of each Field
                            System.out.println("Transition Fields Webhook: " + field.getWebhook());
                            
                            //Get the JsonType of each Field
                            System.out.println("Transition Fields JsonType: " + field.getJsonType());
                            
                            //Get the DisplayLabel of each Field
                            System.out.println("Transition Fields DisplayLabel: " + field.getDisplayLabel());

                            //Get the UiType of each Field
                            System.out.println("Transition Fields UiType: " + field.getUiType());
                            
                            //Get the ValidationRule of each Field
                            System.out.println("Transition Fields ValidationRule: " + field.getValidationRule());
                            
                            //Get the DataType of each Field
                            System.out.println("Transition Fields DataType: " + field.getDataType());
                            
                            //Get the Type of each Field
                            System.out.println("Transition Fields Type: " + field.getType());
                            
                            //Get the ColumnName of each Field
                            System.out.println("Transition Fields ColumnName: " + field.getColumnName());
                            
                            //Get the PersonalityName of each Field
                            System.out.println("Transition Fields PersonalityName: " + field.getPersonalityName());
                            
                            //Get the ID of each Field
                            System.out.println("Transition Fields ID: " + field.getId());
                            
                            //Get the TransitionSequence of each Field
                            System.out.println("Transition Fields TransitionSequence: " + field.getTransitionSequence().toString());
                            
                            if(field.getMandatory() != null)
                            {
                                //Get the Mandatory of each Field
                                System.out.println("Transition Fields Mandatory: " + field.getMandatory().toString());
                            }
                            
                            Layout layout = field.getLayouts();
                            
                            if(layout != null)
                            {
                                //Get the ID of the Layout
                                System.out.println("Transition Fields Layout ID: " + layout.getId());
                                
                                //Get the name of the Layout
                                System.out.println("Transition Fields Layout Name: " + layout.getName());
                            }

                             //Get the PickListValuesSortedLexically of each Field
                            System.out.println("Field PickListValuesSortedLexically: " +field.getPickListValuesSortedLexically() );

                            //Get the Sortable of each Field
                            System.out.println("Field Sortable: " +field.getSortable() );

                            //Get the TransitionSequence of each Field
                            System.out.println("Field TransitionSequence: " +field.getTransitionSequence() );

                            External external = field.getExternal();

                            if(external != null)
                            {
                                //Get the Show of External
                                System.out.println("Field External Show: " +external.getShow() );

                                //Get the Type of External
                                System.out.println("Field External Type: " +external.getType() );

                                //Get the AllowMultipleConfig of External
                                System.out.println("Field External AllowMultipleConfig: " +external.getAllowMultipleConfig() );
                            }
                            //Get the Object obtained Unique instance
                            Unique unique = field.getUnique();

                            if(unique != null)
                            {
                                //Get the Casesensitive of the Unique
                                System.out.println("Field Unique Casesensitive : " +unique.getCasesensitive() );
                            }
                            if(field.getHistoryTracking() != null)
                            {
                                //Get the HistoryTracking of each Field
                                System.out.println("Field HistoryTracking: " +field.getHistoryTracking() );
                            }

                            //Get the DataType of each Field
                            System.out.println("Field DataType: " + field.getDataType() );
                            //Get the APIName of each Field
                            System.out.println("Transition Fields APIName: " + field.getAPIName());
                            
                            //Get the Content of each Field
                            System.out.println("Transition Fields Content: " + field.getContent());
                            
                            if(field.getSystemMandatory() != null)
                            {
                                //Get the SystemMandatory of each Field
                                System.out.println("Transition Fields SystemMandatory: " + field.getSystemMandatory().toString());
                            }

                            
                            
                            //Get the FieldLabel of each Field
                            System.out.println("Transition Fields FieldLabel: " + field.getFieldLabel());

                            //Get the MultiModuleLookup of each Field
                            MultiModuleLookup multiModuleLookup = field.getMultiModuleLookup();

                            if(multiModuleLookup != null)
                            {
                                Module module = multiModuleLookup.getModule();

                                if(module != null)
                                {
                                    //Get the APIName of MultiModuleLookup Module
                                    System.out.println("Field MultiModuleLookup Module APIName: " +module.getAPIName() );

                                    //Get the Id of MultiModuleLookup Module
                                    System.out.println("Field MultiModuleLookup Module Id: " +module.getId() );
                                }

                                //Get the APIName of MultiModuleLookup
                                System.out.println("Field MultiModuleLookup APIName: " +multiModuleLookup.getName() );

                                //Get the Id of MultiModuleLookup
                                System.out.println("Field MultiModuleLookup Id: " +multiModuleLookup.getId() );
                            }
                            //Get the Object obtained Currency instance
                            Currency currency = field.getCurrency();

                            //Check if currency is not null
                            if(currency != null)
                            {
                                //Get the RoundingOption of the Currency
                                System.out.println("Field Currency RoundingOption: " + currency.getRoundingOption() );

                                if(currency.getPrecision() != null)
                                {
                                    //Get the Precision of the Currency
                                    System.out.println("Field Currency Precision: " + currency.getPrecision() );
                                }
                            }

                            
                            //Get the Tooltip of each Field
                            ToolTip toolTip = field.getTooltip();
                            
                            if(toolTip != null)
                            {
                                //Get the Tooltip Name
                                System.out.println("Transition Fields Tooltip Name: " + toolTip.getName());
                                
                                //Get the Tooltip Value
                                System.out.println("Transition Fields Tooltip Value: " + toolTip.getValue());
                            }
                            
                            //Get the CreatedSource of each Field
                            System.out.println("Transition Fields CreatedSource: " + field.getCreatedSource());
                            
                            if(field.getFieldReadOnly() != null)
                            {
                                //Get the FieldReadOnly of each Field
                                System.out.println("Transition Fields FieldReadOnly: " + field.getFieldReadOnly().toString());
                            }

                            if(field.getDisplayType() != null)
                            {
                                //Get the ReadOnly of each Field
                                System.out.println("Transition Fields DisplayType: " + field.getDisplayType().toString());
                            }
                            
                            if(field.getReadOnly() != null)
                            {
                                //Get the ReadOnly of each Field
                                System.out.println("Transition Fields ReadOnly: " + field.getReadOnly().toString());
                            }
                            
                            //Get the AssociationDetails of each Field
                            System.out.println("Transition Fields AssociationDetails: " + field.getAssociationDetails());
                            
                            if(field.getQuickSequenceNumber() != null)
                            {
                                //Get the QuickSequenceNumber of each Field
                                System.out.println("Transition Fields QuickSequenceNumber: " + field.getQuickSequenceNumber().toString());
                            }
                            
                            if(field.getCustomField() != null)
                            {
                                //Get the CustomField of each Field
                                System.out.println("Transition Fields CustomField: " + field.getCustomField().toString());
                            }

                            Module lookup = field.getLookup();

                            //Check if lookup is not null
                            if(lookup != null)
                            {
                                //Get the Object obtained Layout instance
                                layout = lookup.getLayout();

                                //Check if layout is not null
                                if(layout != null)
                                {
                                    //Get the ID of the Layout
                                    System.out.println("Field ModuleLookup Layout ID: "+ layout.getId() );

                                    //Get the Name of the Layout
                                    System.out.println("Field ModuleLookup Layout Name: "+ layout.getName() );
                                }

                                //Get the DisplayLabel of the Module
                                System.out.println("Field ModuleLookup DisplayLabel: "+ lookup.getDisplayLabel() );

                                //Get the APIName of the Module
                                System.out.println("Field ModuleLookup APIName: "+ lookup.getAPIName() );

                                //Get the Module of the Module
                                System.out.println("Field ModuleLookup Module: "+ lookup.getModule() );

                                if(lookup.getId() != null)
                                {
                                    //Get the ID of the Module
                                    System.out.println("Field ModuleLookup ID: "+ lookup.getId() );
                                }
                            }

                            //Get the Filterable of each Field
                            System.out.println("Field Filterable: "+ field.getFilterable() );

                            //Check if ConvertMapping is not null
                            if(field.getConvertMapping() != null)
                            {
                                //Get the details map
                                for(Entry cm :field.getConvertMapping().entrySet()) {
                                    //Get each value in the map
                                    System.out.println(cm.getKey() + " : "+ cm.getValue() );
                                }
                                
                            }
                            
                            if(field.getVisible() != null)
                            {
                                //Get the Visible of each Field
                                System.out.println("Transition Fields Visible: " + field.getVisible().toString());
                            }

                            List profiles = field.getProfiles();

                            if(profiles != null)
                            {
                                for (Profile profile:profiles) {
                                    //Get the PermissionType of each Profile
                                    System.out.println("Field Profile PermissionType: " + profile.getPermissionType() );

                                    //Get the Name of each Profile
                                    System.out.println("Field Profile Name: " + profile.getName() );

                                    //Get the Id of each Profile
                                    System.out.println("Field Profile Id: " + profile.getId() );
                                }
                            }

                            
                            if(field.getFormula() != null)
                            {
                                if(field.getFormula().getExpression() != null)
                                {
                                    //Get the Length of each Field
                                    System.out.println("Field Formula Expression :  " + field.getFormula().getExpression());
                                }
                            }

                            if(field.getDecimalPlace() != null)
                            {
                                //Get the Length of each Field
                                System.out.println("Field DecimalPlace: " + field.getDecimalPlace());
                            }

                            if(field.getLength() != null)
                            {
                                //Get the Length of each Field
                                System.out.println("Transition Fields Length: " + field.getLength().toString());
                            }
                            
                            //Get the DecimalPlace of each Field
                            System.out.println("Transition Fields DecimalPlace: " + field.getDecimalPlace());
                            
                            ViewType viewType = field.getViewType();
                            
                            if(viewType != null)
                            {
                                //Get the View of the ViewType
                                System.out.println("Transition Fields ViewType View: " + viewType.getView().toString());
                                
                                //Get the Edit of the ViewType
                                System.out.println("Transition Fields ViewType Edit: " + viewType.getEdit().toString());
                                
                                //Get the Create of the ViewType
                                System.out.println("Transition Fields ViewType Create: " + viewType.getCreate().toString());
                                
                                //Get the View of the ViewType
                                System.out.println("Transition Fields ViewType QuickCreate: " + viewType.getQuickCreate().toString());
                            }
                            
                            List pickListValues = field.getPickListValues();
                            
                            if(pickListValues != null)
                            {
                                for(PickListValue pickListValue : pickListValues)
                                {
                                    printPickListValue(pickListValue);
                                }
                            }
                            
                            //Get all entries from the MultiSelectLookup instance
                            MultiSelectLookup multiSelectLookup = field.getMultiselectlookup();
                            
                            if(multiSelectLookup != null)
                            {
                                //Get the DisplayValue of the MultiSelectLookup
                                System.out.println("Transition Fields MultiSelectLookup DisplayLabel: " + multiSelectLookup.getDisplayLabel());
                                
                                //Get the LinkingModule of the MultiSelectLookup
                                System.out.println("Transition Fields MultiSelectLookup LinkingModule: " + multiSelectLookup.getLinkingModule());
                                
                                //Get the LookupApiname of the MultiSelectLookup
                                System.out.println("Transition Fields MultiSelectLookup LookupApiname: " + multiSelectLookup.getLookupApiname());
                                
                                //Get the APIName of the MultiSelectLookup
                                System.out.println("Transition Fields MultiSelectLookup APIName: " + multiSelectLookup.getAPIName());
                                
                                //Get the ConnectedlookupApiname of the MultiSelectLookup
                                System.out.println("Transition Fields MultiSelectLookup ConnectedlookupApiname: " + multiSelectLookup.getConnectedlookupApiname());
                                
                                //Get the ID of the MultiSelectLookup
                                System.out.println("Transition Fields MultiSelectLookup ID: " + multiSelectLookup.getId());
                            }
                            
                            //Get the AutoNumber of each Field
                            AutoNumber autoNumber = field.getAutoNumber();
                            
                            if(autoNumber != null)
                            {
                                //Get the Prefix of the AutoNumber
                                System.out.println("Transition Fields AutoNumber Prefix: " + autoNumber.getPrefix());
                                
                                //Get the Suffix of the AutoNumber
                                System.out.println("Transition Fields AutoNumber Suffix: " + autoNumber.getSuffix());
                                
                                if(autoNumber.getStartNumber() != null)
                                {
                                    //Get the StartNumber of the AutoNumber
                                    System.out.println("Transition Fields Auto StartNumber: " + autoNumber.getStartNumber().toString());
                                }
                            }
                            
                            //Get the ConvertMapping of each Field
                            System.out.println("Transition Fields ConvertMapping: ");
                            
                            if(field.getConvertMapping() != null) 
                            {
                                //Get all entries from the ConvertMapping
                                for(Map.Entryentry : field.getConvertMapping().entrySet())
                                {
                                    //Get each value from the map
                                    System.out.println(entry.getKey() + ": " + entry.getValue());
                                }
                            }
                        }
                        
                        //Get the CriteriaMessage of each Transition
                        System.out.println("Transition CriteriaMessage: " + transition.getCriteriaMessage());

                        //Get the PercentPartialSave of each PercentPartialSave
                        System.out.println("Transition PercentPartialSave: " + transition.getPercentPartialSave());

                        //Get the ExecutionTime of each Transition
                        System.out.println("Transition ExecutionTime: " + transition.getExecutionTime());

                        //Get the Type of each Transition
                        System.out.println("Transition Type: " + transition.getType());

                    }
                }
                //Check if the request returned an exception
                else if(responseHandler instanceof APIException)
                {
                    //Get the received APIException instance
                    APIException exception = (APIException) responseHandler;
                    
                    //Get the Status
                    System.out.println("Status: " + exception.getStatus().getValue());
                    
                    //Get the Code
                    System.out.println("Code: " + exception.getCode().getValue());
                    
                    System.out.println("Details: " );
                    
                    //Get the details map
                    for(Map.Entry entry : exception.getDetails().entrySet())
                    {
                        //Get each value in the map
                        System.out.println(entry.getKey() + ": " + entry.getValue());
                    }
                    
                    //Get the Message
                    System.out.println("Message: " + exception.getMessage().getValue());
                }
            }
            else
            {//If response is not as expected
                
                //Get model object from response
                Model responseObject = response.getModel();
                
                //Get the response object's class
                Class extends Model> clas = responseObject.getClass();
                
                //Get all declared fields of the response class
                java.lang.reflect.Field[] fields = clas.getDeclaredFields();
                
                for(java.lang.reflect.Field field : fields)
                {
                    //Get each value
                    System.out.println(field.getName() + ":" + field.get(responseObject));
                }
            }
        }
    }
}
 
Update Blueprint
              
              
package com.zoho.crm.sample.blueprint;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Map;

import org.json.JSONObject;

import com.zoho.crm.api.blueprint.APIException;

import com.zoho.crm.api.blueprint.ActionResponse;

import com.zoho.crm.api.blueprint.AutoNumber;

import com.zoho.crm.api.blueprint.BluePrintOperations;

import com.zoho.crm.api.blueprint.BodyWrapper;

import com.zoho.crm.api.blueprint.Field;

import com.zoho.crm.api.blueprint.Layout;

import com.zoho.crm.api.blueprint.MultiSelectLookup;

import com.zoho.crm.api.blueprint.NextTransition;

import com.zoho.crm.api.blueprint.PickListValues;

import com.zoho.crm.api.blueprint.ProcessInfo;

import com.zoho.crm.api.blueprint.ResponseHandler;

import com.zoho.crm.api.blueprint.ResponseWrapper;

import com.zoho.crm.api.blueprint.SuccessResponse;

import com.zoho.crm.api.blueprint.ToolTip;

import com.zoho.crm.api.blueprint.Transition;

import com.zoho.crm.api.blueprint.ViewType;

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;

public class BluePrint
{
    /**
     * 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
     */
    public static void updateBlueprint(String moduleAPIName, Long recordId, Long transitionId) throws Exception
    {
        //ID of the BluePrint to be updated
        //String moduleAPIName = "Leads";
        //Long recordId = 34770614381002l;
        //Long transitionId = 34770610173096l;
                
        //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 bluePrintList = new ArrayList();

        //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 lookup = new HashMap();
        
        lookup.put("Phone", "8940372937");
        
        lookup.put("id", "8940372937");
        
        
        data.addKeyValue("Phone", "8940372937");
        
        data.addKeyValue("Notes", "Updated via blueprint");
        
        HashMap attachments = new HashMap();
        
        ArrayList fileIds = new ArrayList();
        
        fileIds.add("blojtd2d13b5f044e4041a3315e0793fb21ef");
        
        attachments.put("file_id", fileIds);
        
        data.addKeyValue("Attachments", attachments);
        
        ArrayList> checkLists = new ArrayList>();
        
        HashMap checkListItem = new HashMap();
        
        checkListItem.put("list 1", true);
        
        checkLists.add(checkListItem);
        
        checkListItem = new HashMap();
        
        checkListItem.put("list 2", true);
        
        checkLists.add(checkListItem);
        
        checkListItem = new HashMap();
        
        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 response = bluePrintOperations.updateBlueprint(bodyWrapper);
        
        if(response != null)
        {
            //Get the status code from response
            System.out.println("Status Code: " + response.getStatusCode());
            
            //Check if expected response is received
            if(response.isExpected())
            {
                //Get object from response
                ActionResponse actionResponse = response.getObject();
                
                //Check if the request is successful
                if(actionResponse instanceof SuccessResponse)
                {
                    //Get the received SuccessResponse instance
                    SuccessResponse successResponse = (SuccessResponse)actionResponse;
                    
                    //Get the Status
                    System.out.println("Status: " + successResponse.getStatus().getValue());
                    
                    //Get the Code
                    System.out.println("Code: " + successResponse.getCode().getValue());
                    
                    System.out.println("Details: " );
                    
                    if(successResponse.getDetails() != null)
                    {
                        //Get the details map
                        for(Map.Entry entry : successResponse.getDetails().entrySet())
                        {
                            //Get each value in the map
                            System.out.println(entry.getKey() + ": " + entry.getValue());
                        }
                    }
                    
                    //Get the Message
                    System.out.println("Message: " + successResponse.getMessage().getValue());
                }
                //Check if the request returned an exception
                else if(actionResponse instanceof APIException)
                {
                    //Get the received APIException instance
                    APIException exception = (APIException) actionResponse;
                    
                    //Get the Status
                    System.out.println("Status: " + exception.getStatus().getValue());
                    
                    //Get the Code
                    System.out.println("Code: " + exception.getCode().getValue());
                    
                    System.out.println("Details: " );
                    
                    //Get the details map
                    for(Map.Entry entry : exception.getDetails().entrySet())
                    {
                        //Get each value in the map
                        System.out.println(entry.getKey() + ": ");
                        
                        if(entry.getValue() instanceof List)
                        {
                            @SuppressWarnings("unchecked")
                            List validationError = (List) entry.getValue();
                            
                            for(ValidationError error : validationError)
                            {
                                System.out.println("Field APIName " + error.getAPIName() + " : " + error.getMessage());
                                System.out.println("Field index "+error.getIndex());
                                System.out.println("Field info message "+error.getInfoMessage());
                                System.out.println("Field parent api name "+error.getParentAPIName());
                            }
                        }
                        else
                        {
                            System.out.println(entry.getValue().toString());
                        }
                    }
                    
                    //Get the Message
                    System.out.println("Message: " + exception.getMessage().getValue());
                }
            }
            else
            {//If response is not as expected
                
                //Get model object from response
                Model responseObject = response.getModel();
                
                //Get the response object's class
                Class extends Model> clas = responseObject.getClass();
                
                //Get all declared fields of the response class
                java.lang.reflect.Field[] fields = clas.getDeclaredFields();
                
                for(java.lang.reflect.Field field : fields)
                {
                    //Get each value
                    System.out.println(field.getName() + ":" + field.get(responseObject));
                }
            }
        }
    }
}