C# SDK Samples - Blueprint Operations

Get Blueprint Details
              
              
using System;

using System.Collections.Generic;

using System.Reflection;

using Com.Zoho.Crm.API.BluePrint;

using Com.Zoho.Crm.API.Fields;

using Com.Zoho.Crm.API.Layouts;

using Com.Zoho.Crm.API.Users;

using Com.Zoho.Crm.API.Util;

using Newtonsoft.Json;

namespace Com.Zoho.Crm.Sample.BluePrint
{
    public class BluePrint
    {
        /// 
        /// This method is used to get a single record's Blueprint details with ID and print the response.
        /// 
        /// The API Name of the record's module
        /// The ID of the record to get Blueprint
        public static void GetBlueprint (string moduleAPIName, long recordId)
        {
            //example
            //string moduleAPIName = "Leads";
            //long recordId = 3477061000004381002;

            //Get instance of BluePrintOperations Class that takes recordId and moduleAPIName as parameter
            BluePrintOperations bluePrintOperations = new BluePrintOperations (recordId, moduleAPIName);

            //Call GetBlueprint method
            APIResponse<API.BluePrint.ResponseHandler> response = bluePrintOperations.GetBlueprint();

            if (response != null)
            {
                //Get the status code from response
                Console.WriteLine("Status Code: " + response.StatusCode);

                if (new List<int>() { 204, 304 }.Contains(response.StatusCode))
                {
                    Console.WriteLine(response.StatusCode == 204 ? "No Content" : "Not Modified");

                    return;
                }

                //Check if expected response is received
                if (response.IsExpected)
                {
                    //Get object from response
                    API.BluePrint.ResponseHandler responseHandler = response.Object;

                    if (responseHandler is API.BluePrint.ResponseWrapper)
                    {
                        //Get the received ResponseWrapper instance
                        API.BluePrint.ResponseWrapper responseWrapper = (API.BluePrint.ResponseWrapper) responseHandler;

                        //Get the obtained BluePrint instance
                        API.BluePrint.BluePrint bluePrint = responseWrapper.Blueprint;

                        //Get the ProcessInfo instance of the obtained BluePrint
                        ProcessInfo processInfo = bluePrint.ProcessInfo;
                        
                        //Check if ProcessInfo is not null
                        if (processInfo != null)
                        {
                            //Get the Field ID of the ProcessInfo
                            Console.WriteLine("ProcessInfo Field-ID: " + processInfo.FieldId);

                            //Get the isContinuous of the ProcessInfo
                            Console.WriteLine("ProcessInfo isContinuous: " + processInfo.IsContinuous);

                            //Get the API Name of the ProcessInfo
                            Console.WriteLine("ProcessInfo API Name: " + processInfo.APIName);

                            //Get the Continuous of the ProcessInfo
                            Console.WriteLine("ProcessInfo Continuous: " + processInfo.Continuous);

                            //Get the FieldLabel of the ProcessInfo
                            Console.WriteLine("ProcessInfo FieldLabel: " + processInfo.FieldLabel);

                            //Get the Name of the ProcessInfo
                            Console.WriteLine("ProcessInfo Name: " + processInfo.Name);

                            //Get the ColumnName of the ProcessInfo
                            Console.WriteLine("ProcessInfo ColumnName: " + processInfo.ColumnName);

                            //Get the FieldValue of the ProcessInfo
                            Console.WriteLine("ProcessInfo FieldValue: " + processInfo.FieldValue);

                            //Get the ID of the ProcessInfo
                            Console.WriteLine("ProcessInfo ID: " + processInfo.Id);

                            //Get the FieldName of the ProcessInfo
                            Console.WriteLine("ProcessInfo FieldName: " + processInfo.FieldName);

                            //Get the Escalation of the ProcessInfo
                            Console.WriteLine("ProcessInfo Escalation: " + processInfo.Escalation);
                        }

                        //Get the list of transitions from BluePrint instance
                        List<Transition> transitions = bluePrint.Transitions;

                        foreach (Transition transition in transitions)
                        {
                            List nextTransitions = transition.NextTransitions;

                            foreach (NextTransition nextTransition in nextTransitions)
                            {
                                //Get the ID of the NextTransition
                                Console.WriteLine("NextTransition ID: " + nextTransition.Id);

                                //Get the Name of the NextTransition
                                Console.WriteLine("NextTransition Name: " + nextTransition.Name);
                            }

                            //Get the PercentPartialSave of each Transition
                            Console.WriteLine("Transition PercentPartialSave: " + transition.PercentPartialSave);

                            Com.Zoho.Crm.API.Record.Record data = transition.Data;

                            //Get the ID of each record
                            Console.WriteLine("Record ID: " + data.Id);

                            //Get the createdBy User instance of each record
                            User createdBy = data.CreatedBy;

                            if (createdBy != null)
                            {
                                //Get the ID of the createdBy User
                                Console.WriteLine("Record Created By User-ID: " + createdBy.Id);

                                //Get the name of the createdBy User
                                Console.WriteLine("Record Created By User-Name: " + createdBy.Name);
                            }

                            //Check if the created time is not null
                            if (data.CreatedTime != null)
                            {
                                //Get the created time of each record
                                Console.WriteLine("Record Created Time: " + data.CreatedTime.ToString());
                            }

                            //Check if the modified time is not null
                            if (data.ModifiedTime != null)
                            {
                                //Get the modified time of each record
                                Console.WriteLine("Record Modified Time: " + data.ModifiedTime.ToString());
                            }

                            //Get the modifiedBy User instance of each record
                            User modifiedBy = data.ModifiedBy;

                            //Check if modifiedByUser is not null
                            if (modifiedBy != null)
                            {
                                //Get the ID of the modifiedBy User
                                Console.WriteLine("Record Modified By User-ID: " + modifiedBy.Id);

                                //Get the name of the modifiedBy User
                                Console.WriteLine("Record Modified By user-Name: " + modifiedBy.Name);
                            }

                            //Get all entries from the keyValues map
                            foreach (KeyValuePair<string, object> entry in data.GetKeyValues())
                            {
                                //Get each value in the map
                                Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
                            }

                            //Get the NextFieldValue of the Transition
                            Console.WriteLine("Transition NextFieldValue: " + transition.NextFieldValue);

                            //Get the Name of each Transition
                            Console.WriteLine("Transition Name: " + transition.Name);

                            //Get the CriteriaMatched of the Transition
                            Console.WriteLine("Transition CriteriaMatched: " + transition.CriteriaMatched.ToString());

                            //Get the ID of the Transition
                            Console.WriteLine("Transition ID: " + transition.Id);

                            Console.WriteLine("Transition Fields: ");

                            List fields = transition.Fields;

                            foreach (Field field in fields)
                            {
                                //Get the webhook of each Field
                                Console.WriteLine("Transition Fields Webhook: " + field.Webhook);

                                //Get the JsonType of each Field
                                Console.WriteLine("Transition Fields JsonType: " + field.JsonType);

                                //Get the DisplayLabel of each Field
                                Console.WriteLine("Transition Fields DisplayLabel: " + field.DisplayLabel);

                                //Get the ValidationRule of each Field
                                Console.WriteLine("Transition Fields ValidationRule: " + field.ValidationRule);

                                //Get the DataType of each Field
                                Console.WriteLine("Transition Fields DataType: " + field.DataType);

                                //Get the ColumnName of each Field
                                Console.WriteLine("Transition Fields ColumnName: " + field.ColumnName);

                                //Get the PersonalityName of each Field
                                Console.WriteLine("Transition Fields PersonalityName: " + field.PersonalityName);

                                //Get the ID of each Field
                                Console.WriteLine("Transition Fields ID: " + field.Id);

                                //Get the TransitionSequence of each Field
                                Console.WriteLine("Transition Fields TransitionSequence: " + field.TransitionSequence.ToString());

                                if(field.Mandatory != null)
                                {
                                    //Get the Mandatory of each Field
                                    Console.WriteLine("Transition Fields Mandatory: " + field.Mandatory.ToString());
                                }

                                Layout layout = field.Layouts;

                                if (layout != null) 
                                {
                                    //Get the ID of the Layout
                                    Console.WriteLine("Transition Fields Layout ID: " + layout.Id);

                                    //Get the name of the Layout
                                    Console.WriteLine("Transition Fields Layout Name: " + layout.Name);
                                }

                                //Get the APIName of each Field
                                Console.WriteLine("Transition Fields APIName: " + field.APIName);

                                //Get the Content of each Field
                                Console.WriteLine("Transition Fields Content: " + field.Content);

                                if(field.SystemMandatory != null)
                                {
                                    //Get the SystemMandatory of each Field
                                    Console.WriteLine("Transition Fields SystemMandatory: " + field.SystemMandatory.ToString());
                                }

                                //Get the Crypt of each Field
                                Console.WriteLine("Transition Fields Crypt: " + field.Crypt);

                                //Get the FieldLabel of each Field
                                Console.WriteLine("Transition Fields FieldLabel: " + field.FieldLabel);

                                //Get the Tooltip of each Field
                                ToolTip toolTip = field.Tooltip;

                                if (toolTip != null)
                                {
                                    //Get the Tooltip Name
                                    Console.WriteLine("Transition Fields Tooltip Name: " + toolTip.Name);

                                    //Get the Tooltip Value
                                    Console.WriteLine("Transition Fields Tooltip Value: " + toolTip.Value);
                                }

                                //Get the CreatedSource of each Field
                                Console.WriteLine("Transition Fields CreatedSource: " + field.CreatedSource);

                                if(field.FieldReadOnly != null)
                                {
                                    //Get the FieldReadOnly of each Field
                                    Console.WriteLine("Transition Fields FieldReadOnly: " + field.FieldReadOnly.ToString());
                                }

                                if(field.ReadOnly != null)
                                {
                                    //Get the ReadOnly of each Field
                                    Console.WriteLine("Transition Fields ReadOnly: " + field.ReadOnly.ToString());
                                }
                                
                                //Get the AssociationDetails of each Field
                                Console.WriteLine("Transition Fields AssociationDetails: " + field.AssociationDetails);

                                if(field.QuickSequenceNumber != null)
                                {
                                    //Get the QuickSequenceNumber of each Field
                                    Console.WriteLine("Transition Fields QuickSequenceNumber: " + field.QuickSequenceNumber.ToString());
                                }

                                if(field.CustomField != null)
                                {
                                    //Get the CustomField of each Field
                                    Console.WriteLine("Transition Fields CustomField: " + field.CustomField.ToString());
                                }

                                if(field.Visible != null)
                                {
                                    //Get the Visible of each Field
                                    Console.WriteLine("Transition Fields Visible: " + field.Visible.ToString());
                                }

                                if(field.Length != null)
                                {
                                    //Get the Length of each Field
                                    Console.WriteLine("Transition Fields Length: " + field.Length.ToString());
                                }
                                
                                //Get the DecimalPlace of each Field
                                Console.WriteLine("Transition Fields DecimalPlace: " + field.DecimalPlace);

                                ViewType viewType = field.ViewType;

                                if (viewType != null)
                                {
                                    //Get the View of the ViewType
                                    Console.WriteLine(" Transition Fields View: " + viewType.View.ToString());

                                    //Get the Edit of the ViewType
                                    Console.WriteLine("Transition Fields Edit: " + viewType.Edit.ToString());

                                    //Get the Create of the ViewType
                                    Console.WriteLine("Transition Fields Create: " + viewType.Create.ToString());

                                    //Get the View of the ViewType
                                    Console.WriteLine("Transition Fields QuickCreate: " + viewType.QuickCreate.ToString());
                                }

                                List<PickListValue> pickListValues = field.PickListValues;

                                if (pickListValues != null)
                                {
                                    foreach (PickListValue pickListValue in pickListValues)
                                    {
                                        //Get the DisplayValue of each PickListValues
                                        Console.WriteLine("Transition Fields DisplayValue: " + pickListValue.DisplayValue);

                                        //Get the SequenceNumber of each PickListValues
                                        Console.WriteLine("Transition Fields SequenceNumber: " + pickListValue.SequenceNumber.ToString());

                                        //Get the ExpectedDataType of each PickListValues
                                        Console.WriteLine("Transition Fields ExpectedDataType: " + pickListValue.ExpectedDataType);

                                        //Get the ActualValue of each PickListValues
                                        Console.WriteLine("Transition Fields ActualValue: " + pickListValue.ActualValue);

                                        foreach (object map in pickListValue.Maps)
                                        {
                                            //Get each value from the map
                                            Console.WriteLine(map);
                                        }
                                    }
                                }

                                //Get all entries from the MultiSelectLookup instance
                                MultiSelectLookup multiSelectLookup = field.Multiselectlookup;

                                if (multiSelectLookup != null) 
                                {
                                    //Get the DisplayValue of the MultiSelectLookup
                                    Console.WriteLine("Transition Fields MultiSelectLookup DisplayLabel: " + multiSelectLookup.DisplayLabel);

                                    //Get the LinkingModule of the MultiSelectLookup
                                    Console.WriteLine("Transition Fields MultiSelectLookup LinkingModule: " + multiSelectLookup.LinkingModule);

                                    //Get the LookupAPIname of the MultiSelectLookup
                                    Console.WriteLine("Transition Fields MultiSelectLookup LookupAPIname: " + multiSelectLookup.LookupApiname);

                                    //Get the APIName of the MultiSelectLookup
                                    Console.WriteLine("Transition Fields MultiSelectLookup APIName: " + multiSelectLookup.APIName);

                                    //Get the ConnectedlookupAPIname of the MultiSelectLookup
                                    Console.WriteLine("Transition Fields MultiSelectLookup ConnectedlookupAPIname: " + multiSelectLookup.ConnectedlookupApiname);

                                    //Get the ID of the MultiSelectLookup
                                    Console.WriteLine("Transition Fields MultiSelectLookup ID: " + multiSelectLookup.Id);
                                }

                                //Get the AutoNumber of each Field
                                AutoNumber autoNumber = field.AutoNumber;

                                if (autoNumber != null)
                                {
                                    //Get the Prefix of the AutoNumber
                                    Console.WriteLine("Transition Fields AutoNumber Prefix: " + autoNumber.Prefix);

                                    //Get the Suffix of the AutoNumber
                                    Console.WriteLine("Transition Fields AutoNumber Suffix: " + autoNumber.Suffix);

                                    if(autoNumber.StartNumber != null)
                                    {
                                        //Get the StartNumber of the AutoNumber
                                        Console.WriteLine("Transition Fields AutoNumber StartNumber: " + autoNumber.StartNumber.ToString());
                                    }
                                }

                                //Get the ConvertMapping of each Field
                                Console.WriteLine("Transition Fields ConvertMapping: ");

                                if(field.ConvertMapping != null)
                                {
                                    //Get the details map
                                    foreach (KeyValuePair entry in field.ConvertMapping)
                                    {
                                        //Get each value in the map
                                        Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
                                    }
                                }
                            }

                            //Get the CriteriaMessage of each Transition
                            Console.WriteLine("Transition CriteriaMessage: " + transition.CriteriaMessage);

                            //Get the Type of each Transition
                            Console.WriteLine("Transition Type: " + transition.Type);

                            //Get the ExecutionTime of each Transition
                            Console.WriteLine("Transition ExecutionTime: " + transition.ExecutionTime);
                        }
                    }
                    //Check if the request returned an exception
                    else if (responseHandler is API.BluePrint.APIException)
                    {
                        //Get the received APIException instance
                        API.BluePrint.APIException exception = (API.BluePrint.APIException) responseHandler;

                        //Get the Status
                        Console.WriteLine("Status: " + exception.Status.Value);

                        //Get the Code
                        Console.WriteLine("Code: " + exception.Code.Value);

                        Console.WriteLine("Details: ");

                        //Get the details map
                        foreach (KeyValuePair entry in exception.Details)
                        {
                            //Get each value in the map
                            Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
                        }

                        //Get the Message
                        Console.WriteLine("Message: " + exception.Message.Value);
                    }
                } 
                else
                { //If response is not as expected

                    //Get model object from response
                    Model responseObject = response.Model;

                    //Get the response object's class
                    Type type = responseObject.GetType();

                    //Get all declared fields of the response class
                    Console.WriteLine("Type is: {0}", type.Name);

                    PropertyInfo[] props = type.GetProperties();

                    Console.WriteLine("Properties (N = {0}):", props.Length);

                    foreach (var prop in props)
                    {
                        if (prop.GetIndexParameters().Length == 0)
                        {
                            Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject));
                        }
                        else
                        {
                            Console.WriteLine("{0} ({1}) : ", prop.Name, prop.PropertyType.Name);
                        }
                    }
                }
            }
        }
    }
}
 
Update Blueprint
              
              
using System;

using System.Collections.Generic;

using System.Reflection;

using Com.Zoho.Crm.API.BluePrint;

using Com.Zoho.Crm.API.Fields;

using Com.Zoho.Crm.API.Layouts;

using Com.Zoho.Crm.API.Users;

using Com.Zoho.Crm.API.Util;

using Newtonsoft.Json;

namespace Com.Zoho.Crm.Sample.BluePrint
{
    public class BluePrint
    {
        /// 
        /// This method is used to update a single record's Blueprint details with ID and print the response.
        /// 
        /// The API Name of the record's module
        /// The ID of the record to Get Blueprint
        /// The ID of the Blueprint transition Id
        public static void UpdateBlueprint (string moduleAPIName, long recordId, long transitionId)
        {
            //ID of the BluePrint to be updated
            //string moduleAPIName = "Leads";
            //long recordId = 3477061000004381002;
            //long transitionId = 3477061000000173096;

            //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();

            //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", "8940372937");

            lookup.Add("id", "8940372937");

            //data.AddKeyValue("Lookup_2", lookup);

            data.AddKeyValue("Phone", "8940372937");

            data.AddKeyValue("Notes", "Updated via blueprint");

            Dictionary attachments = new Dictionary();

            List fileIds = new List();
            
            fileIds.Add("blojtd2d13b5f044e4041a3315e0793fb21ef");
            
            attachments.Add("$file_id", fileIds);
            
            //data.AddKeyValue("Attachments", attachments);

            List> checkLists = new List>();

            Dictionary checkListItem = new Dictionary();
            
            checkListItem.Add("list 1", true);
            
            checkLists.Add(checkListItem);
            
            checkListItem = new Dictionary();
            
            checkListItem.Add("list 2", true);
            
            checkLists.Add(checkListItem);
            
            checkListItem = new Dictionary();
            
            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);

            if (response != null)
            {
                //Get the status code from response
                Console.WriteLine("Status Code: " + response.StatusCode);

                //Check if expected response is received
                if (response.IsExpected)
                {
                    //Get object from response
                    API.BluePrint.ActionResponse actionResponse = response.Object;

                    //Check if the request is successful
                    if (actionResponse is API.BluePrint.SuccessResponse)
                    {
                        //Get the received SuccessResponse instance
                        API.BluePrint.SuccessResponse successResponse = (API.BluePrint.SuccessResponse) actionResponse;

                        //Get the Status
                        Console.WriteLine("Status: " + successResponse.Status.Value);

                        //Get the Code
                        Console.WriteLine("Code: " + successResponse.Code.Value);

                        Console.WriteLine("Details: ");

                        if (successResponse.Details != null)
                        {
                            //Get the details map
                            foreach (KeyValuePair entry in successResponse.Details)
                            {
                                //Get each value in the map
                                Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
                            }
                        }

                        //Get the Message
                        Console.WriteLine("Message: " + successResponse.Message.Value);
                    }
                    //Check if the request returned an exception
                    else if (actionResponse is API.BluePrint.APIException)
                    {
                        //Get the received APIException instance
                        API.BluePrint.APIException exception = (API.BluePrint.APIException) actionResponse;

                        //Get the Status
                        Console.WriteLine("Status: " + exception.Status.Value);

                        //Get the Code
                        Console.WriteLine("Code: " + exception.Code.Value);

                        Console.WriteLine("Details: ");

                        //Get the details map
                        foreach (KeyValuePair entry in exception.Details)
                        {
                            //Get each value in the map
                            Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
                        }

                        //Get the Message
                        Console.WriteLine("Message: " + exception.Message.Value);
                    }
                } 
                else
                { //If response is not as expected

                    //Get model object from response
                    Model responseObject = response.Model;

                    //Get the response object's class
                    Type type = responseObject.GetType();

                    //Get all declared fields of the response class
                    Console.WriteLine("Type is: {0}", type.Name);

                    PropertyInfo[] props = type.GetProperties();

                    Console.WriteLine("Properties (N = {0}):", props.Length);

                    foreach (var prop in props)
                    {
                        if (prop.GetIndexParameters().Length == 0)
                        {
                            Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject));
                        }
                        else
                        {
                            Console.WriteLine("{0} ({1}) : ", prop.Name, prop.PropertyType.Name);
                        }
                    }
                }
            }
        }
    }
}