Node JS SDK Samples - Blueprint Operations
const ZCRMBluePrint = require("@zohocrm/nodejs-sdk-2.1/core/com/zoho/crm/api/blue_print/blue_print").BluePrint;
const ZCRMRecord = require("@zohocrm/nodejs-sdk-2.1/core/com/zoho/crm/api/record/record").Record;
const BluePrintOperations = require("@zohocrm/nodejs-sdk-2.1/core/com/zoho/crm/api/blue_print/blue_print_operations").BluePrintOperations;
const ResponseWrapper = require("@zohocrm/nodejs-sdk-2.1/core/com/zoho/crm/api/blue_print/response_wrapper").ResponseWrapper;
const BodyWrapper = require("@zohocrm/nodejs-sdk-2.1/core/com/zoho/crm/api/blue_print/body_wrapper").BodyWrapper;
const APIException = require("@zohocrm/nodejs-sdk-2.1/core/com/zoho/crm/api/blue_print/api_exception").APIException;
const SuccessResponse = require("@zohocrm/nodejs-sdk-2.1/core/com/zoho/crm/api/blue_print/success_response").SuccessResponse;
const Transition = require("@zohocrm/nodejs-sdk-2.1/core/com/zoho/crm/api/blue_print/transition").Transition;
class BluePrint{
/**
* Get Blueprint
* This method is used to get a single record's Blueprint details with ID and print the response.
* @param {String} moduleAPIName The API Name of the record's module
* @param {BigInt} recordId The ID of the record to get Blueprint
*/
static async getBlueprint(moduleAPIName, recordId) {
//example
// let moduleAPIName = "module_api_name";
// let recordId = 2469044n;
//Get instance of BluePrintOperations Class that takes moduleAPIName and recordId as parameter
let bluePrintOperations = new BluePrintOperations(recordId, moduleAPIName);
//Call getBlueprint method
let response = await bluePrintOperations.getBlueprint();
if (response != null) {
//Get the status code from response
console.log("Status Code: " + response.getStatusCode());
if ([204, 304].includes(response.getStatusCode())) {
console.log(response.getStatusCode() == 204 ? "No Content" : "Not Modified");
return;
}
//Get object from response
let responseObject = response.getObject();
if (responseObject != null) {
//Check if expected ResponseWrapper instance is received.
if (responseObject instanceof ResponseWrapper) {
//Get the obtained BluePrint instance
let bluePrint = responseObject.getBlueprint();
//Get the ProcessInfo instance of the obtained BluePrint
let processInfo = bluePrint.getProcessInfo();
//Check if ProcessInfo is not null
if (processInfo != null) {
//Get the Field ID of the ProcessInfo
console.log("ProcessInfo Field-ID: " + processInfo.getFieldId());
let escalation = processInfo.getEscalation();
if (escalation != null) {
console.log("ProcessInfo Escalation Days : " + escalation.getDays());
console.log("ProcessInfo Escalation Status : " + escalation.getStatus());
}
//Get the isContinuous of the ProcessInfo
console.log("ProcessInfo isContinuous: " + processInfo.getIsContinuous());
//Get the API Name of the ProcessInfo
console.log("ProcessInfo API Name: " + processInfo.getAPIName());
//Get the Continuous of the ProcessInfo
console.log("ProcessInfo Continuous: " + processInfo.getContinuous());
//Get the FieldLabel of the ProcessInfo
console.log("ProcessInfo FieldLabel: " + processInfo.getFieldLabel());
//Get the Name of the ProcessInfo
console.log("ProcessInfo Name: " + processInfo.getName());
//Get the ColumnName of the ProcessInfo
console.log("ProcessInfo ColumnName: " + processInfo.getColumnName());
//Get the FieldValue of the ProcessInfo
console.log("ProcessInfo FieldValue: " + processInfo.getFieldValue());
//Get the ID of the ProcessInfo
console.log("ProcessInfo ID: " + processInfo.getId());
//Get the FieldName of the ProcessInfo
console.log("ProcessInfo FieldName: " + processInfo.getFieldName());
}
//Get the array of transitions from BluePrint instance
let transitions = bluePrint.getTransitions();
transitions.forEach(transition => {
let nextTransitions = transition.getNextTransitions();
nextTransitions.forEach(nextTransition => {
//Get the ID of the NextTransition
console.log("NextTransition ID: " + nextTransition.getId());
//Get the CriteriaMatched of the NextTransition
console.log("NextTransition CriteriaMatched: " + nextTransition.getCriteriaMatched());
//Get the Name of the NextTransition
console.log("NextTransition Name: " + nextTransition.getName());
//Get the Type of the NextTransition
console.log("NextTransition Type: " + nextTransition.getType());
});
//Get the parent of the Transition
let parentTransition = transition.getParentTransition();
if (parentTransition != null) {
console.log("Parenttransition ID: " + parentTransition.getId());
}
let data = transition.getData();
if (data != null) {
//Get the ID of each record
console.log("Record ID: " + data.getId());
//Get the createdBy User instance of each record
let createdBy = data.getCreatedBy();
if (createdBy != null) {
//Get the ID of the createdBy User
console.log("Record Created By User-ID: " + createdBy.getId());
//Get the name of the createdBy User
console.log("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
console.log("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
console.log("Record Modified Time: " + data.getModifiedTime().toString());
}
//Get the modifiedBy User instance of each record
let modifiedBy = data.getModifiedBy();
//Check if modifiedByUser is not null
if (modifiedBy != null) {
//Get the ID of the modifiedBy User
console.log("Record Modified By User-ID: " + modifiedBy.getId());
//Get the name of the modifiedBy User
console.log("Record Modified By user-Name: " + modifiedBy.getName());
}
//Get all entries from the keyValues map
Array.from(data.getKeyValues().keys()).forEach(key => {
console.log(key + ": " + data.getKeyValues().get(key));
});
}
//Get the NextFieldValue of the Transition
console.log("Transition NextFieldValue: " + transition.getNextFieldValue());
//Get the Name of each Transition
console.log("Transition Name: " + transition.getName());
//Get the CriteriaMatched of the Transition
console.log("Transition CriteriaMatched: " + transition.getCriteriaMatched().toString());
//Get the ID of the Transition
console.log("Transition ID: " + transition.getId());
let fields = transition.getFields();
console.log("Transition Fields");
for (let index = 0; index {
console.log(key + ": " + field.getConvertMapping().get(key));
});
}
if (field.getVisible() != null) {
//Get the Visible of each Field
console.log("Visible: " + field.getVisible().toString());
}
let profiles = field.getProfiles();
if (profiles != null) {
profiles.forEach(profile => {
//Get the PermissionType of each Profile
console.log("Field Profile PermissionType: " + profile.getPermissionType());
//Get the Name of each Profile
console.log("Field Profile Name: " + profile.getName());
//Get the Id of each Profile
console.log("Field Profile Id: " + profile.getId());
});
}
if (field.getLength() != null) {
//Get the Length of each Field
console.log("Length: " + field.getLength().toString());
}
//Get the ColumnName of each Field
console.log("ColumnName: " + field.getColumnName());
//Get the Type of each Field
console.log("Type: " + field.getType());
let viewType = field.getViewType();
if (viewType != null) {
//Get the View of the ViewType
console.log("Field View: " + viewType.getView());
//Get the Edit of the ViewType
console.log("Field Edit: " + viewType.getEdit());
//Get the Create of the ViewType
console.log("Field Create: " + viewType.getCreate());
//Get the View of the ViewType
console.log("Field QuickCreate: " + viewType.getQuickCreate());
}
//Get the PickListValuesSortedLexically of each Field
console.log("Field PickListValuesSortedLexically: " + field.getPickListValuesSortedLexically());
//Get the Sortable of each Field
console.log("Sortable: " + field.getSortable());
//Get the TransitionSequence of each Field
console.log("TransitionSequence: " + field.getTransitionSequence().toString());
let external = field.getExternal();
if (external != null) {
//Get the Show of External
console.log("Field External Show: " + external.getShow());
//Get the Type of External
console.log("Field External Type: " + external.getType());
//Get the AllowMultipleConfig of External
console.log("Field External AllowMultipleConfig: " + external.getAllowMultipleConfig());
}
//Get the APIName of each Field
console.log("APIName: " + field.getAPIName());
//Get the Object obtained Unique instance
let unique = field.getUnique();
//Check if unique is not null
if (unique != null) {
//Get the Casesensitive of the Unique
console.log("Field Unique Casesensitive : " + unique.getCasesensitive());
}
if (field.getHistoryTracking() != null) {
//Get the HistoryTracking of each Field
console.log("Field HistoryTracking: " + field.getHistoryTracking());
}
//Get the DataType of each Field
console.log("DataType: " + field.getDataType());
//Get the Object obtained Formula instance
let formula = field.getFormula();
//Check if formula is not null
if (formula != null) {
//Get the ReturnType of the Formula
console.log("Field Formula ReturnType : " + formula.getReturnType());
if (formula.getExpression() != null) {
//Get the Expression of the Formula
console.log("Field Formula Expression : " + formula.getExpression());
}
}
//Get the DecimalPlace of each Field
console.log("DecimalPlace: " + field.getDecimalPlace());
//Get all entries from the MultiSelectLookup instance
let multiSelectLookup = field.getMultiselectlookup();
if (multiSelectLookup != null) {
//Get the DisplayValue of the MultiSelectLookup
console.log("DisplayLabel: " + multiSelectLookup.getDisplayLabel());
//Get the LinkingModule of the MultiSelectLookup
console.log("LinkingModule: " + multiSelectLookup.getLinkingModule());
//Get the LookupApiname of the MultiSelectLookup
console.log("LookupApiname: " + multiSelectLookup.getLookupApiname());
//Get the APIName of the MultiSelectLookup
console.log("APIName: " + multiSelectLookup.getAPIName());
//Get the ConnectedlookupApiname of the MultiSelectLookup
console.log("ConnectedlookupApiname: " + multiSelectLookup.getConnectedlookupApiname());
//Get the ID of the MultiSelectLookup
console.log("ID: " + multiSelectLookup.getId());
}
let pickListValues = field.getPickListValues();
if (pickListValues != null) {
pickListValues.forEach(pickListValue => {
this.printPickListValue(pickListValue);
});
}
//Get the AutoNumber of each Field
let autoNumber = field.getAutoNumber();
if (autoNumber != null) {
//Get the Prefix of the AutoNumber
console.log("Prefix: " + autoNumber.getPrefix());
//Get the Suffix of the AutoNumber
console.log("Suffix: " + autoNumber.getSuffix());
if (autoNumber.getStartNumber() != null) {
//Get the StartNumber of the AutoNumber
console.log("StartNumber: " + autoNumber.getStartNumber().toString());
}
}
//Get the PersonalityName of each Field
console.log("PersonalityName: " + field.getPersonalityName());
if (field.getMandatory() != null) {
//Get the Mandatory of each Field
console.log("Mandatory: " + field.getMandatory().toString());
}
}
//Get the CriteriaMessage of each Transition
console.log("Transition CriteriaMessage: " + transition.getCriteriaMessage());
//Get the PercentPartialSave of each Transition
console.log("Transition PercentPartialSave: " + transition.getPercentPartialSave());
if (transition.getExecutionTime() != null) {
//Get the Execution Time of the Transition
console.log("Transition ExecutionTime: " + transition.getExecutionTime().toString());
}
//Get the type of each Transition
console.log("Transition Type: " + transition.getType());
});
}
//Check if the request returned an exception
else if (responseObject instanceof APIException) {
//Get the Status
console.log("Status: " + responseObject.getStatus().getValue());
//Get the Code
console.log("Code: " + responseObject.getCode().getValue());
console.log("Details");
let details = responseObject.getDetails();
//Get the details map
if (details != null) {
Array.from(details.keys()).forEach(key => {
console.log(key + ": " + details.get(key));
});
}
//Get the Message
console.log("Message: " + responseObject.getMessage().getValue());
}
}
}
}
}
module.exports = {BluePrint}