PHP SDK Samples - Records Operations
Get a Record
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Get Record
* This method is used to get a single record of a module with ID and print the response.
* @param moduleAPIName - The API Name of the record's module.
* @param recordId - The ID of the record to be obtained.
* @param destinationFolder - The absolute path of the destination folder to store the file.
* @throws Exception
*/
public static function getRecord(string $moduleAPIName, string $recordId, string $destinationFolder)
{
//example
//$moduleAPIName = "Leads";
//$recordId = "34770615177002";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
// $paramInstance->add(GetRecordParam::approved(), "false");
// $paramInstance->add(GetRecordParam::converted(), "false");
// $fieldNames = array("Deal_Name", "Company");
// foreach($fieldNames as $fieldName)
// {
// $paramInstance->add(GetRecordParam::fields(), $fieldName);
// }
// $startdatetime = date_create("2020-06-27T15:10:00");
// $paramInstance->add(GetRecordParam::startDateTime(), $startdatetime);
// $enddatetime = date_create("2020-06-29T15:10:00");
// $paramInstance->add(GetRecordParam::endDateTime(), $enddatetime);
// $paramInstance->add(GetRecordParam::territoryId(), "34770613051357");
// $paramInstance->add(GetRecordParam::includeChild(), true);
$headerInstance = new HeaderMap();
// $ifmodifiedsince = date_create("2020-06-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
// $headerInstance->add(GetRecordHeader::IfModifiedSince(), $ifmodifiedsince);
// $headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call getRecord method that takes paramInstance, moduleAPIName and recordID as parameter
$response = $recordOperations->getRecord($recordId,$moduleAPIName,$paramInstance, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status code " . $response->getStatusCode() . "\n");
if(in_array($response->getStatusCode(), array(204, 304)))
{
echo($response->getStatusCode() == 204? "No Content\n" : "Not Modified\n");
return;
}
if($response->isExpected())
{
//Get object from response
$responseHandler = $response->getObject();
if($responseHandler instanceof ResponseWrapper)
{
//Get the received ResponseWrapper instance
$responseWrapper = $responseHandler;
//Get the list of obtained Record instances
$records = $responseWrapper->getData();
if($records != null)
{
$recordClass = 'com\zoho\crm\api\record\Record';
foreach($records as $record)
{
//Get the ID of each Record
echo("Record ID: " . $record->getId() . "\n");
//Get the createdBy User instance of each Record
$createdBy = $record->getCreatedBy();
//Check if createdBy is not null
if($createdBy != null)
{
//Get the ID of the createdBy User
echo("Record Created By User-ID: " . $createdBy->getId() . "\n");
//Get the name of the createdBy User
echo("Record Created By User-Name: " . $createdBy->getName() . "\n");
//Get the Email of the createdBy User
echo("Record Created By User-Email: " . $createdBy->getEmail() . "\n");
}
//Get the CreatedTime of each Record
echo("Record CreatedTime: ");
print_r($record->getCreatedTime());
echo("\n");
//Get the modifiedBy User instance of each Record
$modifiedBy = $record->getModifiedBy();
//Check if modifiedBy is not null
if($modifiedBy != null)
{
//Get the ID of the modifiedBy User
echo("Record Modified By User-ID: " . $modifiedBy->getId() . "\n");
//Get the name of the modifiedBy User
echo("Record Modified By User-Name: " . $modifiedBy->getName() . "\n");
//Get the Email of the modifiedBy User
echo("Record Modified By User-Email: " . $modifiedBy->getEmail() . "\n");
}
//Get the ModifiedTime of each Record
echo("Record ModifiedTime: ");
print_r($record->getModifiedTime());
print_r("\n");
//Get the list of Tag instance each Record
$tags = $record->getTag();
//Check if tags is not null
if($tags != null)
{
foreach($tags as $tag)
{
//Get the Name of each Tag
echo("Record Tag Name: " . $tag->getName() . "\n");
//Get the Id of each Tag
echo("Record Tag ID: " . $tag->getId() . "\n");
}
}
//To get particular field value
echo("Record Field Value: " . $record->getKeyValue("Last_Name") . "\n");// FieldApiName
echo("Record KeyValues : \n" );
//Get the KeyValue map
foreach($record->getKeyValues() as $keyName => $value)
{
if($value != null)
{
if((is_array($value) && sizeof($value) > 0) && isset($value[0]))
{
if($value[0] instanceof FileDetails)
{
$fileDetails = $value;
foreach($fileDetails as $fileDetail)
{
//Get the Extn of each FileDetails
echo("Record FileDetails Extn: " . $fileDetail->getExtn() . "\n");
//Get the IsPreviewAvailable of each FileDetails
echo("Record FileDetails IsPreviewAvailable: " . $fileDetail->getIsPreviewAvailable() . "\n");
//Get the DownloadUrl of each FileDetails
echo("Record FileDetails DownloadUrl: " . $fileDetail->getDownloadUrl() . "\n");
//Get the DeleteUrl of each FileDetails
echo("Record FileDetails DeleteUrl: " . $fileDetail->getDeleteUrl() . "\n");
//Get the EntityId of each FileDetails
echo("Record FileDetails EntityId: " . $fileDetail->getEntityId() . "\n");
//Get the Mode of each FileDetails
echo("Record FileDetails Mode: " . $fileDetail->getMode() . "\n");
//Get the OriginalSizeByte of each FileDetails
echo("Record FileDetails OriginalSizeByte: " . $fileDetail->getOriginalSizeByte() . "\n");
//Get the PreviewUrl of each FileDetails
echo("Record FileDetails PreviewUrl: " . $fileDetail->getPreviewUrl() . "\n");
//Get the FileName of each FileDetails
echo("Record FileDetails FileName: " . $fileDetail->getFileName() . "\n");
//Get the FileId of each FileDetails
echo("Record FileDetails FileId: " . $fileDetail->getFileId() . "\n");
//Get the AttachmentId of each FileDetails
echo("Record FileDetails AttachmentId: " . $fileDetail->getAttachmentId() . "\n");
//Get the FileSize of each FileDetails
echo("Record FileDetails FileSize: " . $fileDetail->getFileSize() . "\n");
//Get the CreatorId of each FileDetails
echo("Record FileDetails CreatorId: " . $fileDetail->getCreatorId() . "\n");
//Get the LinkDocs of each FileDetails
echo("Record FileDetails LinkDocs: " . $fileDetail->getLinkDocs() . "\n");
}
}
else if($value[0] instanceof Choice)
{
$choice = $value;
foreach($choice as $choiceValue)
{
echo("Record " . $keyName . " : " . $choiceValue->getValue() . "\n");
}
}
else if($value[0] instanceof InventoryLineItems)
{
$productDetails = $value;
foreach($productDetails as $productDetail)
{
$lineItemProduct = $productDetail->getProduct();
if($lineItemProduct != null)
{
echo("Record ProductDetails LineItemProduct ProductCode: " . $lineItemProduct->getProductCode() . "\n");
echo("Record ProductDetails LineItemProduct Currency: " . $lineItemProduct->getCurrency() . "\n");
echo("Record ProductDetails LineItemProduct Name: " . $lineItemProduct->getName() . "\n");
echo("Record ProductDetails LineItemProduct Id: " . $lineItemProduct->getId() . "\n");
}
echo("Record ProductDetails Quantity: " . $productDetail->getQuantity() . "\n");
echo("Record ProductDetails Discount: " . $productDetail->getDiscount() . "\n");
echo("Record ProductDetails TotalAfterDiscount: " . $productDetail->getTotalAfterDiscount() . "\n");
echo("Record ProductDetails NetTotal: " . $productDetail->getNetTotal() . "\n");
if($productDetail->getBook() != null)
{
echo("Record ProductDetails Book: " . $productDetail->getBook() . "\n");
}
echo("Record ProductDetails Tax: " . $productDetail->getTax() . "\n");
echo("Record ProductDetails ListPrice: " . $productDetail->getListPrice() . "\n");
echo("Record ProductDetails UnitPrice: " . $productDetail->getUnitPrice() . "\n");
echo("Record ProductDetails QuantityInStock: " . $productDetail->getQuantityInStock() . "\n");
echo("Record ProductDetails Total: " . $productDetail->getTotal() . "\n");
echo("Record ProductDetails ID: " . $productDetail->getId() . "\n");
echo("Record ProductDetails ProductDescription: " . $productDetail->getProductDescription() . "\n");
$lineTaxes = $productDetail->getLineTax();
foreach($lineTaxes as $lineTax)
{
echo("Record ProductDetails LineTax Percentage: " . $lineTax->getPercentage() . "\n");
echo("Record ProductDetails LineTax Name: " . $lineTax->getName() . "\n");
echo("Record ProductDetails LineTax Id: " . $lineTax->getId() . "\n");
echo("Record ProductDetails LineTax Value: " . $lineTax->getValue() . "\n");
}
}
}
else if($value[0] instanceof Tag)
{
$tagList = $value;
foreach($tagList as $tag)
{
//Get the Name of each Tag
echo("Record Tag Name: " . $tag->getName() . "\n");
//Get the Id of each Tag
echo("Record Tag ID: " . $tag->getId() . "\n");
}
}
else if($value[0] instanceof PricingDetails)
{
$pricingDetails = $value;
foreach($pricingDetails as $pricingDetail)
{
echo("Record PricingDetails ToRange: " . $pricingDetail->getToRange(). "\n");
echo("Record PricingDetails Discount: " . $pricingDetail->getDiscount(). "\n");
echo("Record PricingDetails ID: " . $pricingDetail->getId() . "\n");
echo("Record PricingDetails FromRange: " . $pricingDetail->getFromRange(). "\n");
}
}
else if($value[0] instanceof Participants)
{
$participants = $value;
foreach($participants as $participant)
{
echo("RelatedRecord Participants Name: " . $participant->getName() . "\n");
echo("RelatedRecord Participants Invited: " . $participant->getInvited() . "\n");
echo("RelatedRecord Participants ID: " . $participant->getId() . "\n");
echo("RelatedRecord Participants Type: " . $participant->getType() . "\n");
echo("RelatedRecord Participants Participant: " . $participant->getParticipant() . "\n");
echo("RelatedRecord Participants Status: " . $participant->getStatus() . "\n");
}
}
else if($value[0] instanceof $recordClass)
{
$recordList = $value;
foreach($recordList as $record1)
{
//Get the details map
foreach($record1->getKeyValues() as $key => $value1)
{
//Get each value in the map
echo($key . " : " );
print_r($value1);
echo("\n");
}
}
}
else if($value[0] instanceof LineTax)
{
$lineTaxes = $value;
foreach($lineTaxes as $lineTax)
{
echo("Record ProductDetails LineTax Percentage: " . $lineTax->getPercentage(). "\n");
echo("Record ProductDetails LineTax Name: " . $lineTax->getName() . "\n");
echo("Record ProductDetails LineTax Id: " . $lineTax->getId() . "\n");
echo("Record ProductDetails LineTax Value: " . $lineTax->getValue(). "\n");
}
}
else if($value[0] instanceof Comment)
{
$comments = $value;
foreach($comments as $comment)
{
echo("Record Comment CommentedBy: " . $comment->getCommentedBy() . "\n");
echo("Record Comment CommentedTime: ");
print_r($comment->getCommentedTime());
echo("\n");
echo("Record Comment CommentContent: " . $comment->getCommentContent(). "\n");
echo("Record Comment Id: " . $comment->getId() . "\n");
}
}
else if($value[0] instanceof Attachment)
{
$attachments = $value;
foreach ($attachments as $attachment)
{
//Get the owner User instance of each attachment
$owner = $attachment->getOwner();
//Check if owner is not null
if($owner != null)
{
//Get the Name of the Owner
echo("Record Attachment Owner User-Name: " . $owner->getName() . "\n");
//Get the ID of the Owner
echo("Record Attachment Owner User-ID: " . $owner->getId() . "\n");
//Get the Email of the Owner
echo("Record Attachment Owner User-Email: " . $owner->getEmail() . "\n");
}
//Get the modified time of each attachment
echo("Record Attachment Modified Time: ");
print_r($attachment->getModifiedTime());
echo("\n");
//Get the name of the File
echo("Record Attachment File Name: " . $attachment->getFileName() . "\n");
//Get the created time of each attachment
echo("Record Attachment Created Time: " );
print_r($attachment->getCreatedTime());
echo("\n");
//Get the Attachment file size
echo("Record Attachment File Size: " . $attachment->getSize() . "\n");
//Get the parentId Record instance of each attachment
$parentId = $attachment->getParentId();
//Check if parentId is not null
if($parentId != null)
{
//Get the parent record Name of each attachment
echo("Record Attachment parent record Name: " . $parentId->getKeyValue("name") . "\n");
//Get the parent record ID of each attachment
echo("Record Attachment parent record ID: " . $parentId->getId() . "\n");
}
//Get the attachment is Editable
echo("Record Attachment is Editable: " . $attachment->getEditable() . "\n");
//Get the file ID of each attachment
echo("Record Attachment File ID: " . $attachment->getFileId() . "\n");
//Get the type of each attachment
echo("Record Attachment File Type: " . $attachment->getType() . "\n");
//Get the seModule of each attachment
echo("Record Attachment seModule: " . $attachment->getSeModule() . "\n");
//Get the modifiedBy User instance of each attachment
$modifiedBy = $attachment->getModifiedBy();
//Check if modifiedBy is not null
if($modifiedBy != null)
{
//Get the Name of the modifiedBy User
echo("Record Attachment Modified By User-Name: " . $modifiedBy->getName() . "\n");
//Get the ID of the modifiedBy User
echo("Record Attachment Modified By User-ID: " . $modifiedBy->getId() . "\n");
//Get the Email of the modifiedBy User
echo("Record Attachment Modified By User-Email: " . $modifiedBy->getEmail() . "\n");
}
//Get the state of each attachment
echo("Record Attachment State: " . $attachment->getState() . "\n");
//Get the ID of each attachment
echo("Record Attachment ID: " . $attachment->getId() . "\n");
//Get the createdBy User instance of each attachment
$createdBy = $attachment->getCreatedBy();
//Check if createdBy is not null
if($createdBy != null)
{
//Get the name of the createdBy User
echo("Record Attachment Created By User-Name: " . $createdBy->getName() . "\n");
//Get the ID of the createdBy User
echo("Record Attachment Created By User-ID: " . $createdBy->getId() . "\n");
//Get the Email of the createdBy User
echo("Record Attachment Created By User-Email: " . $createdBy->getEmail() . "\n");
}
//Get the linkUrl of each attachment
echo("Record Attachment LinkUrl: " . $attachment->getLinkUrl() . "\n");
}
}
else
{
echo($keyName . " : ");
print_r($value);
echo("\n");
}
}
else if($value instanceof Layout)
{
$layout = $value;
if($layout != null)
{
echo("Record " . $keyName. " ID: " . $layout->getId() . "\n");
echo("Record " . $keyName . " Name: " . $layout->getName() . "\n");
}
}
else if($value instanceof User)
{
$user = $value;
if($user != null)
{
echo("Record " . $keyName . " User-ID: " . $user->getId() . "\n");
echo("Record " . $keyName . " User-Name: " . $user->getName() . "\n");
echo("Record " . $keyName . " User-Email: " . $user->getEmail() . "\n");
}
}
else if($value instanceof $recordClass)
{
$recordValue = $value;
echo("Record " . $keyName . " ID: " . $recordValue->getId() . "\n");
echo("Record " . $keyName . " Name: " . $recordValue->getKeyValue("name") . "\n");
}
else if($value instanceof Choice)
{
$choiceValue = $value;
echo("Record " . $keyName . " : " . $choiceValue->getValue() . "\n");
}
else if($value instanceof RemindAt)
{
echo($keyName . ": " . $value->getAlarm() . "\n");
}
else if($value instanceof RecurringActivity)
{
echo($keyName . " : RRULE" . ": " . $value->getRrule() . "\n");
}
else if($value instanceof Consent)
{
$consent = $value;
echo("Record Consent ID: " . $consent->getId());
//Get the Owner User instance of each attachment
$owner = $consent->getOwner();
//Check if owner is not null
if($owner != null)
{
//Get the name of the owner User
echo("Record Consent Owner Name: " . $owner->getName());
//Get the ID of the owner User
echo("Record Consent Owner ID: " . $owner->getId());
//Get the Email of the owner User
echo("Record Consent Owner Email: " . $owner->getEmail());
}
$consentCreatedBy = $consent->getCreatedBy();
//Check if createdBy is not null
if($consentCreatedBy != null)
{
//Get the name of the CreatedBy User
echo("Record Consent CreatedBy Name: " . $consentCreatedBy->getName());
//Get the ID of the CreatedBy User
echo("Record Consent CreatedBy ID: " . $consentCreatedBy->getId());
//Get the Email of the CreatedBy User
echo("Record Consent CreatedBy Email: " . $consentCreatedBy->getEmail());
}
$consentModifiedBy = $consent->getModifiedBy();
//Check if createdBy is not null
if($consentModifiedBy != null)
{
//Get the name of the ModifiedBy User
echo("Record Consent ModifiedBy Name: " . $consentModifiedBy->getName());
//Get the ID of the ModifiedBy User
echo("Record Consent ModifiedBy ID: " . $consentModifiedBy->getId());
//Get the Email of the ModifiedBy User
echo("Record Consent ModifiedBy Email: " . $consentModifiedBy->getEmail());
}
echo("Record Consent CreatedTime: " . $consent->getCreatedTime());
echo("Record Consent ModifiedTime: " . $consent->getModifiedTime());
echo("Record Consent ContactThroughEmail: " . $consent->getContactThroughEmail());
echo("Record Consent ContactThroughSocial: " . $consent->getContactThroughSocial());
echo("Record Consent ContactThroughSurvey: " . $consent->getContactThroughSurvey());
echo("Record Consent ContactThroughPhone: " . $consent->getContactThroughPhone());
echo("Record Consent MailSentTime: " . $consent->getMailSentTime());
echo("Record Consent ConsentDate: " . $consent->getConsentDate());
echo("Record Consent ConsentRemarks: " . $consent->getConsentRemarks());
echo("Record Consent ConsentThrough: " . $consent->getConsentThrough());
echo("Record Consent DataProcessingBasis: " . $consent->getDataProcessingBasis());
//To get custom values
echo("Record Consent Lawful Reason: " . $consent->getKeyValue("Lawful_Reason"));
}
else
{
//Get each value in the map
echo($keyName . " : ");
print_r($value);
echo("\n");
}
}
}
}
}
}
else if($responseHandler instanceof FileBodyWrapper)
{
//Get object from response
$fileBodyWrapper = $responseHandler;
//Get StreamWrapper instance from the returned FileBodyWrapper instance
$streamWrapper = $fileBodyWrapper->getFile();
//Create a file instance with the absolute_file_path
$fp = fopen($destinationFolder."/".$streamWrapper->getName(), "w");
//Get stream from the response
$stream = $streamWrapper->getStream();
fputs($fp, strval($stream));
fclose($fp);
}
//Check if the request returned an exception
else if($responseHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $responseHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Update a Record
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Update Record
* This method is used to update a single record of a module with ID and print the response.
* @param moduleAPIName - The API Name of the record's module.
* @param recordId - The ID of the record to be updated.
* @throws Exception
*/
public static function updateRecord(string $moduleAPIName, string $recordId)
{
//API Name of the module to update record
//$moduleAPIName = "Leads";
//$recordId = "34770615177002";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of BodyWrapper Class that will contain the request body
$request = new BodyWrapper();
//List of Record instances
$records = array();
$recordClass = 'com\zoho\crm\api\record\Record';
//Get instance of Record Class
$record1 = new $recordClass();
/*
* Call addFieldValue method that takes two arguments
* 1 -> Call Field "." and choose the module from the displayed list and press "." and choose the field name from the displayed list.
* 2 -> Value
*/
$field = new Field("");
// $record1->addFieldValue(Leads::City(), "City");
// $record1->addFieldValue(Leads::LastName(), "Last Name");
// $record1->addFieldValue(Leads::FirstName(), "First Name");
// $record1->addFieldValue(Leads::Company(), "KKRNP");
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
// $record1->addKeyValue("Custom_field", "Value");
// $record1->addKeyValue("Custom_field_2", "value");
// $record1->addKeyValue("Date_1", new \DateTime('2020-03-08'));
// $record1->addKeyValue("Date_Time_2", date_create("2021-06-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get())));
$fileDetails = array();
// $fileDetail1 = new FileDetails();
// $fileDetail1->setAttachmentId("34770616072005");
// $fileDetail1->setDelete("null");
// array_push($fileDetails, $fileDetail1);
$fileDetail2 = new FileDetails();
$fileDetail2->setFileId("ae9c7cefa418aec1d6a5cc2d9ab35c32244f4e660f3702f05463e2fd0a2d8c1c");
array_push($fileDetails, $fileDetail2);
$fileDetail3 = new FileDetails();
$fileDetail3->setFileId("ae9c7cefa418aec1d6a5cc2d9ab35c326a3f4c7562925ac9afc0f7433dd2098c");
array_push($fileDetails, $fileDetail3);
$record1->addKeyValue("File_Upload", $fileDetails);
//Add Record instance to the list
array_push($records, $record1);
//Set the list to Records in BodyWrapper instance
$request->setData($records);
$trigger = array("approval", "workflow", "blueprint");
$request->setTrigger($trigger);
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call updateRecord method that takes BodyWrapper instance, ModuleAPIName and recordId as parameter.
$response = $recordOperations->updateRecord($recordId, $moduleAPIName, $request, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$actionHandler = $response->getObject();
if($actionHandler instanceof ActionWrapper)
{
//Get the received ResponseWrapper instance
$actionWrapper = $actionHandler;
//Get the list of obtained ActionResponse instances
$actionResponses = $actionWrapper->getData();
foreach($actionResponses as $actionResponse)
{
//Check if the request is successful
if($actionResponse instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $actionResponse;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($successResponse->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : ");
print_r($value);
echo("\n");
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($actionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $actionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($actionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $actionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
}
Delete a Record
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Delete Record
* This method is used to delete a single record of a module with ID and print the response.
* @param moduleAPIName - The API Name of the record's module.
* @param recordId - The ID of the record to be deleted.
* @throws Exception
*/
public static function deleteRecord(string $moduleAPIName, string $recordId)
{
//API Name of the module to delete record
//$moduleAPIName = "Leads";
//$recordId = "34770615177002";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
$paramInstance->add(DeleteRecordParam::wfTrigger(), false);
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call deleteRecord method that takes paramInstance, ModuleAPIName and recordId as parameter.
$response = $recordOperations->deleteRecord($recordId, $moduleAPIName, $paramInstance, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$actionHandler = $response->getObject();
if($actionHandler instanceof ActionWrapper)
{
//Get the received ActionWrapper instance
$actionWrapper = $actionHandler;
//Get the list of obtained ActionResponse instances
$actionResponses = $actionWrapper->getData();
foreach($actionResponses as $actionResponse)
{
//Check if the request is successful
if($actionResponse instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $actionResponse;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($successResponse->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($actionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $actionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($actionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $actionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Get Records Using External ID
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Get Record Using External Id
* This method is used to get a single record using external id and print the response.
* @param moduleAPIName - The API Name of the record's module.
* @param externalFieldValue -
* @param destinationFolder - The absolute path of the destination folder to store the attachment
* @throws Exception
*/
public static function getRecordUsingExternalId(string $moduleAPIName, string $externalFieldValue, string $destinationFolder)
{
//example
//$moduleAPIName = "Leads";
//$externalFieldValue = "34770615177002";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
// $paramInstance->add(GetRecordParam::approved(), "false");
// $paramInstance->add(GetRecordParam::converted(), "false");
// $fieldNames = array("Deal_Name", "Company");
// foreach($fieldNames as $fieldName)
// {
// $paramInstance->add(GetRecordParam::fields(), $fieldName);
// }
// $startdatetime = date_create("2020-06-27T15:10:00");
// $paramInstance->add(GetRecordParam::startDateTime(), $startdatetime);
// $enddatetime = date_create("2020-06-29T15:10:00");
// $paramInstance->add(GetRecordParam::endDateTime(), $enddatetime);
// $paramInstance->add(GetRecordParam::territoryId(), "34770613051357");
// $paramInstance->add(GetRecordParam::includeChild(), true);
$headerInstance = new HeaderMap();
// $ifmodifiedsince = date_create("2020-06-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
// $headerInstance->add(GetRecordHeader::IfModifiedSince(), $ifmodifiedsince);
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call getRecord method that takes paramInstance, moduleAPIName and recordID as parameter
$response = $recordOperations->getRecordUsingExternalId($externalFieldValue, $moduleAPIName, $paramInstance, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status code " . $response->getStatusCode() . "\n");
if(in_array($response->getStatusCode(), array(204, 304)))
{
echo($response->getStatusCode() == 204? "No Content\n" : "Not Modified\n");
return;
}
if($response->isExpected())
{
//Get object from response
$responseHandler = $response->getObject();
if($responseHandler instanceof ResponseWrapper)
{
//Get the received ResponseWrapper instance
$responseWrapper = $responseHandler;
//Get the list of obtained Record instances
$records = $responseWrapper->getData();
if($records != null)
{
$recordClass = 'com\zoho\crm\api\record\Record';
foreach($records as $record)
{
//Get the ID of each Record
echo("Record ID: " . $record->getId() . "\n");
//Get the createdBy User instance of each Record
$createdBy = $record->getCreatedBy();
//Check if createdBy is not null
if($createdBy != null)
{
//Get the ID of the createdBy User
echo("Record Created By User-ID: " . $createdBy->getId() . "\n");
//Get the name of the createdBy User
echo("Record Created By User-Name: " . $createdBy->getName() . "\n");
//Get the Email of the createdBy User
echo("Record Created By User-Email: " . $createdBy->getEmail() . "\n");
}
//Get the CreatedTime of each Record
echo("Record CreatedTime: ");
print_r($record->getCreatedTime());
echo("\n");
//Get the modifiedBy User instance of each Record
$modifiedBy = $record->getModifiedBy();
//Check if modifiedBy is not null
if($modifiedBy != null)
{
//Get the ID of the modifiedBy User
echo("Record Modified By User-ID: " . $modifiedBy->getId() . "\n");
//Get the name of the modifiedBy User
echo("Record Modified By User-Name: " . $modifiedBy->getName() . "\n");
//Get the Email of the modifiedBy User
echo("Record Modified By User-Email: " . $modifiedBy->getEmail() . "\n");
}
//Get the ModifiedTime of each Record
echo("Record ModifiedTime: ");
print_r($record->getModifiedTime());
print_r("\n");
//Get the list of Tag instance each Record
$tags = $record->getTag();
//Check if tags is not null
if($tags != null)
{
foreach($tags as $tag)
{
//Get the Name of each Tag
echo("Record Tag Name: " . $tag->getName() . "\n");
//Get the Id of each Tag
echo("Record Tag ID: " . $tag->getId() . "\n");
}
}
//To get particular field value
echo("Record Field Value: " . $record->getKeyValue("Last_Name") . "\n");// FieldApiName
echo("Record KeyValues : \n" );
//Get the KeyValue map
foreach($record->getKeyValues() as $keyName => $value)
{
if($value != null)
{
if((is_array($value) && sizeof($value) > 0) && isset($value[0]))
{
if($value[0] instanceof FileDetails)
{
$fileDetails = $value;
foreach($fileDetails as $fileDetail)
{
//Get the Extn of each FileDetails
echo("Record FileDetails Extn: " . $fileDetail->getExtn() . "\n");
//Get the IsPreviewAvailable of each FileDetails
echo("Record FileDetails IsPreviewAvailable: " . $fileDetail->getIsPreviewAvailable() . "\n");
//Get the DownloadUrl of each FileDetails
echo("Record FileDetails DownloadUrl: " . $fileDetail->getDownloadUrl() . "\n");
//Get the DeleteUrl of each FileDetails
echo("Record FileDetails DeleteUrl: " . $fileDetail->getDeleteUrl() . "\n");
//Get the EntityId of each FileDetails
echo("Record FileDetails EntityId: " . $fileDetail->getEntityId() . "\n");
//Get the Mode of each FileDetails
echo("Record FileDetails Mode: " . $fileDetail->getMode() . "\n");
//Get the OriginalSizeByte of each FileDetails
echo("Record FileDetails OriginalSizeByte: " . $fileDetail->getOriginalSizeByte() . "\n");
//Get the PreviewUrl of each FileDetails
echo("Record FileDetails PreviewUrl: " . $fileDetail->getPreviewUrl() . "\n");
//Get the FileName of each FileDetails
echo("Record FileDetails FileName: " . $fileDetail->getFileName() . "\n");
//Get the FileId of each FileDetails
echo("Record FileDetails FileId: " . $fileDetail->getFileId() . "\n");
//Get the AttachmentId of each FileDetails
echo("Record FileDetails AttachmentId: " . $fileDetail->getAttachmentId() . "\n");
//Get the FileSize of each FileDetails
echo("Record FileDetails FileSize: " . $fileDetail->getFileSize() . "\n");
//Get the CreatorId of each FileDetails
echo("Record FileDetails CreatorId: " . $fileDetail->getCreatorId() . "\n");
//Get the LinkDocs of each FileDetails
echo("Record FileDetails LinkDocs: " . $fileDetail->getLinkDocs() . "\n");
}
}
else if($value[0] instanceof Choice)
{
$choice = $value;
foreach($choice as $choiceValue)
{
echo("Record " . $keyName . " : " . $choiceValue->getValue() . "\n");
}
}
else if($value[0] instanceof InventoryLineItems)
{
$productDetails = $value;
foreach($productDetails as $productDetail)
{
$lineItemProduct = $productDetail->getProduct();
if($lineItemProduct != null)
{
echo("Record ProductDetails LineItemProduct ProductCode: " . $lineItemProduct->getProductCode() . "\n");
echo("Record ProductDetails LineItemProduct Currency: " . $lineItemProduct->getCurrency() . "\n");
echo("Record ProductDetails LineItemProduct Name: " . $lineItemProduct->getName() . "\n");
echo("Record ProductDetails LineItemProduct Id: " . $lineItemProduct->getId() . "\n");
}
echo("Record ProductDetails Quantity: " . $productDetail->getQuantity() . "\n");
echo("Record ProductDetails Discount: " . $productDetail->getDiscount() . "\n");
echo("Record ProductDetails TotalAfterDiscount: " . $productDetail->getTotalAfterDiscount() . "\n");
echo("Record ProductDetails NetTotal: " . $productDetail->getNetTotal() . "\n");
if($productDetail->getBook() != null)
{
echo("Record ProductDetails Book: " . $productDetail->getBook() . "\n");
}
echo("Record ProductDetails Tax: " . $productDetail->getTax() . "\n");
echo("Record ProductDetails ListPrice: " . $productDetail->getListPrice() . "\n");
echo("Record ProductDetails UnitPrice: " . $productDetail->getUnitPrice() . "\n");
echo("Record ProductDetails QuantityInStock: " . $productDetail->getQuantityInStock() . "\n");
echo("Record ProductDetails Total: " . $productDetail->getTotal() . "\n");
echo("Record ProductDetails ID: " . $productDetail->getId() . "\n");
echo("Record ProductDetails ProductDescription: " . $productDetail->getProductDescription() . "\n");
$lineTaxes = $productDetail->getLineTax();
foreach($lineTaxes as $lineTax)
{
echo("Record ProductDetails LineTax Percentage: " . $lineTax->getPercentage() . "\n");
echo("Record ProductDetails LineTax Name: " . $lineTax->getName() . "\n");
echo("Record ProductDetails LineTax Id: " . $lineTax->getId() . "\n");
echo("Record ProductDetails LineTax Value: " . $lineTax->getValue() . "\n");
}
}
}
else if($value[0] instanceof Tag)
{
$tagList = $value;
foreach($tagList as $tag)
{
//Get the Name of each Tag
echo("Record Tag Name: " . $tag->getName() . "\n");
//Get the Id of each Tag
echo("Record Tag ID: " . $tag->getId() . "\n");
}
}
else if($value[0] instanceof PricingDetails)
{
$pricingDetails = $value;
foreach($pricingDetails as $pricingDetail)
{
echo("Record PricingDetails ToRange: " . $pricingDetail->getToRange(). "\n");
echo("Record PricingDetails Discount: " . $pricingDetail->getDiscount(). "\n");
echo("Record PricingDetails ID: " . $pricingDetail->getId() . "\n");
echo("Record PricingDetails FromRange: " . $pricingDetail->getFromRange(). "\n");
}
}
else if($value[0] instanceof Participants)
{
$participants = $value;
foreach($participants as $participant)
{
echo("RelatedRecord Participants Name: " . $participant->getName() . "\n");
echo("RelatedRecord Participants Invited: " . $participant->getInvited() . "\n");
echo("RelatedRecord Participants ID: " . $participant->getId() . "\n");
echo("RelatedRecord Participants Type: " . $participant->getType() . "\n");
echo("RelatedRecord Participants Participant: " . $participant->getParticipant() . "\n");
echo("RelatedRecord Participants Status: " . $participant->getStatus() . "\n");
}
}
else if($value[0] instanceof $recordClass)
{
$recordList = $value;
foreach($recordList as $record1)
{
//Get the details map
foreach($record1->getKeyValues() as $key => $value1)
{
//Get each value in the map
echo($key . " : " );
print_r($value1);
echo("\n");
}
}
}
else if($value[0] instanceof LineTax)
{
$lineTaxes = $value;
foreach($lineTaxes as $lineTax)
{
echo("Record ProductDetails LineTax Percentage: " . $lineTax->getPercentage(). "\n");
echo("Record ProductDetails LineTax Name: " . $lineTax->getName() . "\n");
echo("Record ProductDetails LineTax Id: " . $lineTax->getId() . "\n");
echo("Record ProductDetails LineTax Value: " . $lineTax->getValue(). "\n");
}
}
else if($value[0] instanceof Comment)
{
$comments = $value;
foreach($comments as $comment)
{
echo("Record Comment CommentedBy: " . $comment->getCommentedBy() . "\n");
echo("Record Comment CommentedTime: ");
print_r($comment->getCommentedTime());
echo("\n");
echo("Record Comment CommentContent: " . $comment->getCommentContent(). "\n");
echo("Record Comment Id: " . $comment->getId() . "\n");
}
}
else if($value[0] instanceof Attachment)
{
$attachments = $value;
foreach ($attachments as $attachment)
{
//Get the owner User instance of each attachment
$owner = $attachment->getOwner();
//Check if owner is not null
if($owner != null)
{
//Get the Name of the Owner
echo("Record Attachment Owner User-Name: " . $owner->getName() . "\n");
//Get the ID of the Owner
echo("Record Attachment Owner User-ID: " . $owner->getId() . "\n");
//Get the Email of the Owner
echo("Record Attachment Owner User-Email: " . $owner->getEmail() . "\n");
}
//Get the modified time of each attachment
echo("Record Attachment Modified Time: ");
print_r($attachment->getModifiedTime());
echo("\n");
//Get the name of the File
echo("Record Attachment File Name: " . $attachment->getFileName() . "\n");
//Get the created time of each attachment
echo("Record Attachment Created Time: " );
print_r($attachment->getCreatedTime());
echo("\n");
//Get the Attachment file size
echo("Record Attachment File Size: " . $attachment->getSize() . "\n");
//Get the parentId Record instance of each attachment
$parentId = $attachment->getParentId();
//Check if parentId is not null
if($parentId != null)
{
//Get the parent record Name of each attachment
echo("Record Attachment parent record Name: " . $parentId->getKeyValue("name") . "\n");
//Get the parent record ID of each attachment
echo("Record Attachment parent record ID: " . $parentId->getId() . "\n");
}
//Get the attachment is Editable
echo("Record Attachment is Editable: " . $attachment->getEditable() . "\n");
//Get the file ID of each attachment
echo("Record Attachment File ID: " . $attachment->getFileId() . "\n");
//Get the type of each attachment
echo("Record Attachment File Type: " . $attachment->getType() . "\n");
//Get the seModule of each attachment
echo("Record Attachment seModule: " . $attachment->getSeModule() . "\n");
//Get the modifiedBy User instance of each attachment
$modifiedBy = $attachment->getModifiedBy();
//Check if modifiedBy is not null
if($modifiedBy != null)
{
//Get the Name of the modifiedBy User
echo("Record Attachment Modified By User-Name: " . $modifiedBy->getName() . "\n");
//Get the ID of the modifiedBy User
echo("Record Attachment Modified By User-ID: " . $modifiedBy->getId() . "\n");
//Get the Email of the modifiedBy User
echo("Record Attachment Modified By User-Email: " . $modifiedBy->getEmail() . "\n");
}
//Get the state of each attachment
echo("Record Attachment State: " . $attachment->getState() . "\n");
//Get the ID of each attachment
echo("Record Attachment ID: " . $attachment->getId() . "\n");
//Get the createdBy User instance of each attachment
$createdBy = $attachment->getCreatedBy();
//Check if createdBy is not null
if($createdBy != null)
{
//Get the name of the createdBy User
echo("Record Attachment Created By User-Name: " . $createdBy->getName() . "\n");
//Get the ID of the createdBy User
echo("Record Attachment Created By User-ID: " . $createdBy->getId() . "\n");
//Get the Email of the createdBy User
echo("Record Attachment Created By User-Email: " . $createdBy->getEmail() . "\n");
}
//Get the linkUrl of each attachment
echo("Record Attachment LinkUrl: " . $attachment->getLinkUrl() . "\n");
}
}
else
{
echo($keyName . " : ");
print_r($value);
echo("\n");
}
}
else if($value instanceof Layout)
{
$layout = $value;
if($layout != null)
{
echo("Record " . $keyName. " ID: " . $layout->getId() . "\n");
echo("Record " . $keyName . " Name: " . $layout->getName() . "\n");
}
}
else if($value instanceof User)
{
$user = $value;
if($user != null)
{
echo("Record " . $keyName . " User-ID: " . $user->getId() . "\n");
echo("Record " . $keyName . " User-Name: " . $user->getName() . "\n");
echo("Record " . $keyName . " User-Email: " . $user->getEmail() . "\n");
}
}
else if($value instanceof $recordClass)
{
$recordValue = $value;
echo("Record " . $keyName . " ID: " . $recordValue->getId() . "\n");
echo("Record " . $keyName . " Name: " . $recordValue->getKeyValue("name") . "\n");
}
else if($value instanceof Choice)
{
$choiceValue = $value;
echo("Record " . $keyName . " : " . $choiceValue->getValue() . "\n");
}
else if($value instanceof RemindAt)
{
echo($keyName . ": " . $value->getAlarm() . "\n");
}
else if($value instanceof RecurringActivity)
{
echo($keyName . " : RRULE" . ": " . $value->getRrule() . "\n");
}
else if($value instanceof Consent)
{
$consent = $value;
echo("Record Consent ID: " . $consent->getId());
//Get the Owner User instance of each attachment
$owner = $consent->getOwner();
//Check if owner is not null
if($owner != null)
{
//Get the name of the owner User
echo("Record Consent Owner Name: " . $owner->getName());
//Get the ID of the owner User
echo("Record Consent Owner ID: " . $owner->getId());
//Get the Email of the owner User
echo("Record Consent Owner Email: " . $owner->getEmail());
}
$consentCreatedBy = $consent->getCreatedBy();
//Check if createdBy is not null
if($consentCreatedBy != null)
{
//Get the name of the CreatedBy User
echo("Record Consent CreatedBy Name: " . $consentCreatedBy->getName());
//Get the ID of the CreatedBy User
echo("Record Consent CreatedBy ID: " . $consentCreatedBy->getId());
//Get the Email of the CreatedBy User
echo("Record Consent CreatedBy Email: " . $consentCreatedBy->getEmail());
}
$consentModifiedBy = $consent->getModifiedBy();
//Check if createdBy is not null
if($consentModifiedBy != null)
{
//Get the name of the ModifiedBy User
echo("Record Consent ModifiedBy Name: " . $consentModifiedBy->getName());
//Get the ID of the ModifiedBy User
echo("Record Consent ModifiedBy ID: " . $consentModifiedBy->getId());
//Get the Email of the ModifiedBy User
echo("Record Consent ModifiedBy Email: " . $consentModifiedBy->getEmail());
}
echo("Record Consent CreatedTime: " . $consent->getCreatedTime());
echo("Record Consent ModifiedTime: " . $consent->getModifiedTime());
echo("Record Consent ContactThroughEmail: " . $consent->getContactThroughEmail());
echo("Record Consent ContactThroughSocial: " . $consent->getContactThroughSocial());
echo("Record Consent ContactThroughSurvey: " . $consent->getContactThroughSurvey());
echo("Record Consent ContactThroughPhone: " . $consent->getContactThroughPhone());
echo("Record Consent MailSentTime: " . $consent->getMailSentTime());
echo("Record Consent ConsentDate: " . $consent->getConsentDate());
echo("Record Consent ConsentRemarks: " . $consent->getConsentRemarks());
echo("Record Consent ConsentThrough: " . $consent->getConsentThrough());
echo("Record Consent DataProcessingBasis: " . $consent->getDataProcessingBasis());
//To get custom values
echo("Record Consent Lawful Reason: " . $consent->getKeyValue("Lawful_Reason"));
}
else
{
//Get each value in the map
echo($keyName . " : ");
print_r($value);
echo("\n");
}
}
}
}
}
}
else if($responseHandler instanceof FileBodyWrapper)
{
//Get object from response
$fileBodyWrapper = $responseHandler;
//Get StreamWrapper instance from the returned FileBodyWrapper instance
$streamWrapper = $fileBodyWrapper->getFile();
//Create a file instance with the absolute_file_path
$fp = fopen($destinationFolder."/".$streamWrapper->getName(), "w");
//Get stream from the response
$stream = $streamWrapper->getStream();
fputs($fp, strval($stream));
fclose($fp);
}
//Check if the request returned an exception
else if($responseHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $responseHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Update Records Using External ID
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Update Record
* This method is used to update a single record of a module with ID and print the response.
* @param moduleAPIName - The API Name of the record's module.
* @param externalFieldValue - The ID of the record to be obtained.
* @throws Exception
*/
public static function updateRecordUsingExternalId(string $moduleAPIName, string $externalFieldValue)
{
//API Name of the module to update record
//$moduleAPIName = "Leads";
//$externalFieldValue = "34770615177002";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of BodyWrapper Class that will contain the request body
$request = new BodyWrapper();
//List of Record instances
$records = array();
$recordClass = 'com\zoho\crm\api\record\Record';
//Get instance of Record Class
$record1 = new $recordClass();
/*
* Call addFieldValue method that takes two arguments
* 1 -> Call Field "." and choose the module from the displayed list and press "." and choose the field name from the displayed list.
* 2 -> Value
*/
$field = new Field("");
// $record1->addFieldValue(Leads::City(), "City");
// $record1->addFieldValue(Leads::LastName(), "Last Name");
// $record1->addFieldValue(Leads::FirstName(), "First Name");
// $record1->addFieldValue(Leads::Company(), "KKRNP");
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
// $record1->addKeyValue("Custom_field", "Value");
// $record1->addKeyValue("Custom_field_2", "value");
// $record1->addKeyValue("Date_1", new \DateTime('2020-03-08'));
// $record1->addKeyValue("Date_Time_2", date_create("2021-06-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get())));
$fileDetails = array();
// $fileDetail1 = new FileDetails();
// $fileDetail1->setAttachmentId("34770616072005");
// $fileDetail1->setDelete("null");
// array_push($fileDetails, $fileDetail1);
$fileDetail2 = new FileDetails();
$fileDetail2->setFileId("ae9c7cefa418aec1d6a5cc2d9ab35c32244f4e660f3702f05463e2fd0a2d8c1c");
array_push($fileDetails, $fileDetail2);
$fileDetail3 = new FileDetails();
$fileDetail3->setFileId("ae9c7cefa418aec1d6a5cc2d9ab35c326a3f4c7562925ac9afc0f7433dd2098c");
array_push($fileDetails, $fileDetail3);
$record1->addKeyValue("File_Upload", $fileDetails);
//Add Record instance to the list
array_push($records, $record1);
//Set the list to Records in BodyWrapper instance
$request->setData($records);
$trigger = array("approval", "workflow", "blueprint");
$request->setTrigger($trigger);
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call updateRecord method that takes BodyWrapper instance, ModuleAPIName and recordId as parameter.
$response = $recordOperations->updateRecordUsingExternalId($externalFieldValue, $moduleAPIName, $request, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$actionHandler = $response->getObject();
if($actionHandler instanceof ActionWrapper)
{
//Get the received ResponseWrapper instance
$actionWrapper = $actionHandler;
//Get the list of obtained ActionResponse instances
$actionResponses = $actionWrapper->getData();
foreach($actionResponses as $actionResponse)
{
//Check if the request is successful
if($actionResponse instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $actionResponse;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($successResponse->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : ");
print_r($value);
echo("\n");
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($actionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $actionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($actionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $actionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Delete Records Using External ID
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Delete Record
* This method is used to delete a single record of a module with ID and print the response.
* @param moduleAPIName - The API Name of the record's module.
* @param externalFieldValue - The ID of the record to be obtained.
* @throws Exception
*/
public static function deleteRecordUsingExternalId(string $moduleAPIName, string $externalFieldValue)
{
//API Name of the module to delete record
//$moduleAPIName = "Leads";
//$externalFieldValue = "34770615177002";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
$paramInstance->add(DeleteRecordParam::wfTrigger(), false);
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call deleteRecord method that takes paramInstance, ModuleAPIName and recordId as parameter.
$response = $recordOperations->deleteRecord($externalFieldValue, $moduleAPIName, $paramInstance, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$actionHandler = $response->getObject();
if($actionHandler instanceof ActionWrapper)
{
//Get the received ActionWrapper instance
$actionWrapper = $actionHandler;
//Get the list of obtained ActionResponse instances
$actionResponses = $actionWrapper->getData();
foreach($actionResponses as $actionResponse)
{
//Check if the request is successful
if($actionResponse instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $actionResponse;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($successResponse->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($actionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $actionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($actionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $actionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Get All Records of a Module
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Get Records
* This method is used to get all the records of a module and print the response.
* @param moduleAPIName - The API Name of the module to obtain records.
* @throws Exception
*/
public static function getRecords(string $moduleAPIName)
{
//example
//$moduleAPIName = "Leads";
//Get instance of RecordOperations Class that takes moduleAPIName as parameter
$recordOperations = new RecordOperations();
$paramInstance = new ParameterMap();
// $paramInstance->add(GetRecordsParam::approved(), "true");
// $paramInstance->add(GetRecordsParam::converted(), "1234");
// $paramInstance->add(GetRecordsParam::cvid(), "34770610089005");
$ids = array("TestExternal12", "TestExternal1");
foreach($ids as $id)
{
$paramInstance->add(GetRecordsParam::ids(), $id);
}
// $paramInstance->add(GetRecordsParam::uid(), "34770615181008");
// $fieldNames = array("Last_Name", "City");
// foreach($fieldNames as $fieldName)
// {
// $paramInstance->add(GetRecordsParam::fields(), "id");
// }
// $paramInstance->add(GetRecordsParam::sortBy(), "Email");
// $paramInstance->add(GetRecordsParam::sortOrder(), "desc");
// $paramInstance->add(GetRecordsParam::page(), 1);
// $paramInstance->add(GetRecordsParam::perPage(), 3);
$startdatetime = date_create("2020-06-27T15:10:00+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
// $paramInstance->add(GetRecordsParam::startDateTime(), $startdatetime);
// $enddatetime = date_create("2020-06-29T15:10:00+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
// $paramInstance->add(GetRecordsParam::endDateTime(), $enddatetime);
// $paramInstance->add(GetRecordsParam::territoryId(), "34770613051357");
// $paramInstance->add(GetRecordsParam::includeChild(), true);
$headerInstance = new HeaderMap();
// $datetime = date_create("2021-02-26T15:28:34+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
// $headerInstance->add(GetRecordsHeader::IfModifiedSince(), $datetime);
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call getRecords method
$response = $recordOperations->getRecords($moduleAPIName,$paramInstance, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status code " . $response->getStatusCode() . "\n");
if(in_array($response->getStatusCode(), array(204, 304)))
{
echo($response->getStatusCode() == 204? "No Content\n" : "Not Modified\n");
return;
}
if($response->isExpected())
{
//Get the object from response
$responseHandler = $response->getObject();
if($responseHandler instanceof ResponseWrapper)
{
//Get the received ResponseWrapper instance
$responseWrapper = $responseHandler;
//Get the obtained Record instances
$records = $responseWrapper->getData();
$recordClass = 'com\zoho\crm\api\record\Record';
foreach($records as $record)
{
//Get the ID of each Record
echo("Record ID: " . $record->getId() . "\n");
//Get the createdBy User instance of each Record
$createdBy = $record->getCreatedBy();
//Check if createdBy is not null
if($createdBy != null)
{
//Get the ID of the createdBy User
echo("Record Created By User-ID: " . $createdBy->getId() . "\n");
//Get the name of the createdBy User
echo("Record Created By User-Name: " . $createdBy->getName() . "\n");
//Get the Email of the createdBy User
echo("Record Created By User-Email: " . $createdBy->getEmail() . "\n");
}
//Get the CreatedTime of each Record
echo("Record CreatedTime: ");
print_r($record->getCreatedTime());
echo("\n");
//Get the modifiedBy User instance of each Record
$modifiedBy = $record->getModifiedBy();
//Check if modifiedBy is not null
if($modifiedBy != null)
{
//Get the ID of the modifiedBy User
echo("Record Modified By User-ID: " . $modifiedBy->getId() . "\n");
//Get the name of the modifiedBy User
echo("Record Modified By User-Name: " . $modifiedBy->getName() . "\n");
//Get the Email of the modifiedBy User
echo("Record Modified By User-Email: " . $modifiedBy->getEmail() . "\n");
}
//Get the ModifiedTime of each Record
echo("Record ModifiedTime: ");
print_r($record->getModifiedTime());
echo("\n");
//Get the list of Tag instance each Record
$tags = $record->getTag();
//Check if tags is not null
if($tags != null)
{
foreach($tags as $tag)
{
//Get the Name of each Tag
echo("Record Tag Name: " . $tag->getName() . "\n");
//Get the Id of each Tag
echo("Record Tag ID: " . $tag->getId() . "\n");
}
}
//To get particular field value
echo("Record Field Value: " . $record->getKeyValue("Last_Name") . "\n");// FieldApiName
echo("Record KeyValues : \n" );
//Get the KeyValue map
foreach($record->getKeyValues() as $keyName => $value)
{
if($value != null)
{
if((is_array($value) && sizeof($value) > 0) && isset($value[0]))
{
if($value[0] instanceof FileDetails)
{
$fileDetails = $value;
foreach($fileDetails as $fileDetail)
{
$fileDetails = $value;
foreach($fileDetails as $fileDetail)
{
//Get the Extn of each FileDetails
echo("Record FileDetails Extn: " . $fileDetail->getExtn() . "\n");
//Get the IsPreviewAvailable of each FileDetails
echo("Record FileDetails IsPreviewAvailable: " . $fileDetail->getIsPreviewAvailable() . "\n");
//Get the DownloadUrl of each FileDetails
echo("Record FileDetails DownloadUrl: " . $fileDetail->getDownloadUrl() . "\n");
//Get the DeleteUrl of each FileDetails
echo("Record FileDetails DeleteUrl: " . $fileDetail->getDeleteUrl() . "\n");
//Get the EntityId of each FileDetails
echo("Record FileDetails EntityId: " . $fileDetail->getEntityId() . "\n");
//Get the Mode of each FileDetails
echo("Record FileDetails Mode: " . $fileDetail->getMode() . "\n");
//Get the OriginalSizeByte of each FileDetails
echo("Record FileDetails OriginalSizeByte: " . $fileDetail->getOriginalSizeByte() . "\n");
//Get the PreviewUrl of each FileDetails
echo("Record FileDetails PreviewUrl: " . $fileDetail->getPreviewUrl() . "\n");
//Get the FileName of each FileDetails
echo("Record FileDetails FileName: " . $fileDetail->getFileName() . "\n");
//Get the FileId of each FileDetails
echo("Record FileDetails FileId: " . $fileDetail->getFileId() . "\n");
//Get the AttachmentId of each FileDetails
echo("Record FileDetails AttachmentId: " . $fileDetail->getAttachmentId() . "\n");
//Get the FileSize of each FileDetails
echo("Record FileDetails FileSize: " . $fileDetail->getFileSize() . "\n");
//Get the CreatorId of each FileDetails
echo("Record FileDetails CreatorId: " . $fileDetail->getCreatorId() . "\n");
//Get the LinkDocs of each FileDetails
echo("Record FileDetails LinkDocs: " . $fileDetail->getLinkDocs() . "\n");
}
}
}
else if($value[0] instanceof Choice)
{
$choice = $value;
foreach($choice as $choiceValue)
{
echo("Record " . $keyName . " : " . $choiceValue->getValue() . "\n");
}
}
else if($value[0] instanceof InventoryLineItems)
{
$productDetails = $value;
foreach($productDetails as $productDetail)
{
$lineItemProduct = $productDetail->getProduct();
if($lineItemProduct != null)
{
echo("Record ProductDetails LineItemProduct ProductCode: " . $lineItemProduct->getProductCode() . "\n");
echo("Record ProductDetails LineItemProduct Currency: " . $lineItemProduct->getCurrency() . "\n");
echo("Record ProductDetails LineItemProduct Name: " . $lineItemProduct->getName() . "\n");
echo("Record ProductDetails LineItemProduct Id: " . $lineItemProduct->getId() . "\n");
}
echo("Record ProductDetails Quantity: " . $productDetail->getQuantity() . "\n");
echo("Record ProductDetails Discount: " . $productDetail->getDiscount() . "\n");
echo("Record ProductDetails TotalAfterDiscount: " . $productDetail->getTotalAfterDiscount() . "\n");
echo("Record ProductDetails NetTotal: " . $productDetail->getNetTotal() . "\n");
if($productDetail->getBook() != null)
{
echo("Record ProductDetails Book: " . $productDetail->getBook() . "\n");
}
echo("Record ProductDetails Tax: " . $productDetail->getTax() . "\n");
echo("Record ProductDetails ListPrice: " . $productDetail->getListPrice() . "\n");
echo("Record ProductDetails UnitPrice: " . $productDetail->getUnitPrice() . "\n");
echo("Record ProductDetails QuantityInStock: " . $productDetail->getQuantityInStock() . "\n");
echo("Record ProductDetails Total: " . $productDetail->getTotal() . "\n");
echo("Record ProductDetails ID: " . $productDetail->getId() . "\n");
echo("Record ProductDetails ProductDescription: " . $productDetail->getProductDescription() . "\n");
$lineTaxes = $productDetail->getLineTax();
foreach($lineTaxes as $lineTax)
{
echo("Record ProductDetails LineTax Percentage: " . $lineTax->getPercentage() . "\n");
echo("Record ProductDetails LineTax Name: " . $lineTax->getName() . "\n");
echo("Record ProductDetails LineTax Id: " . $lineTax->getId() . "\n");
echo("Record ProductDetails LineTax Value: " . $lineTax->getValue() . "\n");
}
}
}
else if($value[0] instanceof Tag)
{
$tagList = $value;
foreach($tagList as $tag)
{
//Get the Name of each Tag
echo("Record Tag Name: " . $tag->getName() . "\n");
//Get the Id of each Tag
echo("Record Tag ID: " . $tag->getId() . "\n");
}
}
else if($value[0] instanceof PricingDetails)
{
$pricingDetails = $value;
foreach($pricingDetails as $pricingDetail)
{
echo("Record PricingDetails ToRange: " . $pricingDetail->getToRange(). "\n");
echo("Record PricingDetails Discount: " . $pricingDetail->getDiscount(). "\n");
echo("Record PricingDetails ID: " . $pricingDetail->getId() . "\n");
echo("Record PricingDetails FromRange: " . $pricingDetail->getFromRange(). "\n");
}
}
else if($value[0] instanceof Participants)
{
$participants = $value;
foreach($participants as $participant)
{
echo("RelatedRecord Participants Name: " . $participant->getName() . "\n");
echo("RelatedRecord Participants Invited: " . $participant->getInvited() . "\n");
echo("RelatedRecord Participants ID: " . $participant->getId() . "\n");
echo("RelatedRecord Participants Type: " . $participant->getType() . "\n");
echo("RelatedRecord Participants Participant: " . $participant->getParticipant() . "\n");
echo("RelatedRecord Participants Status: " . $participant->getStatus() . "\n");
}
}
else if($value[0] instanceof $recordClass)
{
$recordList = $value;
foreach($recordList as $record1)
{
//Get the details map
foreach($record1->getKeyValues() as $key => $value1)
{
//Get each value in the map
echo($key . " : " );
print_r($value1);
echo("\n");
}
}
}
else if($value[0] instanceof LineTax)
{
$lineTaxes = $value;
foreach($lineTaxes as $lineTax)
{
echo("Record ProductDetails LineTax Percentage: " . $lineTax->getPercentage(). "\n");
echo("Record ProductDetails LineTax Name: " . $lineTax->getName() . "\n");
echo("Record ProductDetails LineTax Id: " . $lineTax->getId() . "\n");
echo("Record ProductDetails LineTax Value: " . $lineTax->getValue(). "\n");
}
}
else if($value[0] instanceof Comment)
{
$comments = $value;
foreach($comments as $comment)
{
echo("Record Comment CommentedBy: " . $comment->getCommentedBy() . "\n");
echo("Record Comment CommentedTime: ");
print_r($comment->getCommentedTime());
echo("\n");
echo("Record Comment CommentContent: " . $comment->getCommentContent(). "\n");
echo("Record Comment Id: " . $comment->getId() . "\n");
}
}
else if($value[0] instanceof Attachment)
{
$attachments = $value;
foreach ($attachments as $attachment)
{
//Get the owner User instance of each attachment
$owner = $attachment->getOwner();
//Check if owner is not null
if($owner != null)
{
//Get the Name of the Owner
echo("Record Attachment Owner User-Name: " . $owner->getName() . "\n");
//Get the ID of the Owner
echo("Record Attachment Owner User-ID: " . $owner->getId() . "\n");
//Get the Email of the Owner
echo("Record Attachment Owner User-Email: " . $owner->getEmail() . "\n");
}
//Get the modified time of each attachment
echo("Record Attachment Modified Time: ");
print_r($attachment->getModifiedTime());
echo("\n");
//Get the name of the File
echo("Record Attachment File Name: " . $attachment->getFileName() . "\n");
//Get the created time of each attachment
echo("Record Attachment Created Time: " );
print_r($attachment->getCreatedTime());
echo("\n");
//Get the Attachment file size
echo("Record Attachment File Size: " . $attachment->getSize() . "\n");
//Get the parentId Record instance of each attachment
$parentId = $attachment->getParentId();
//Check if parentId is not null
if($parentId != null)
{
//Get the parent record Name of each attachment
echo("Record Attachment parent record Name: " . $parentId->getKeyValue("name") . "\n");
//Get the parent record ID of each attachment
echo("Record Attachment parent record ID: " . $parentId->getId() . "\n");
}
//Get the attachment is Editable
echo("Record Attachment is Editable: " . $attachment->getEditable() . "\n");
//Get the file ID of each attachment
echo("Record Attachment File ID: " . $attachment->getFileId() . "\n");
//Get the type of each attachment
echo("Record Attachment File Type: " . $attachment->getType() . "\n");
//Get the seModule of each attachment
echo("Record Attachment seModule: " . $attachment->getSeModule() . "\n");
//Get the modifiedBy User instance of each attachment
$modifiedBy = $attachment->getModifiedBy();
//Check if modifiedBy is not null
if($modifiedBy != null)
{
//Get the Name of the modifiedBy User
echo("Record Attachment Modified By User-Name: " . $modifiedBy->getName() . "\n");
//Get the ID of the modifiedBy User
echo("Record Attachment Modified By User-ID: " . $modifiedBy->getId() . "\n");
//Get the Email of the modifiedBy User
echo("Record Attachment Modified By User-Email: " . $modifiedBy->getEmail() . "\n");
}
//Get the state of each attachment
echo("Record Attachment State: " . $attachment->getState() . "\n");
//Get the ID of each attachment
echo("Record Attachment ID: " . $attachment->getId() . "\n");
//Get the createdBy User instance of each attachment
$createdBy = $attachment->getCreatedBy();
//Check if createdBy is not null
if($createdBy != null)
{
//Get the name of the createdBy User
echo("Record Attachment Created By User-Name: " . $createdBy->getName() . "\n");
//Get the ID of the createdBy User
echo("Record Attachment Created By User-ID: " . $createdBy->getId() . "\n");
//Get the Email of the createdBy User
echo("Record Attachment Created By User-Email: " . $createdBy->getEmail() . "\n");
}
//Get the linkUrl of each attachment
echo("Record Attachment LinkUrl: " . $attachment->getLinkUrl() . "\n");
}
}
else
{
echo($keyName . " : ");
print_r($value);
echo("\n");
}
}
}
else if($value instanceof Layout)
{
$layout = $value;
if($layout != null)
{
echo("Record " . $keyName. " ID: " . $layout->getId() . "\n");
echo("Record " . $keyName . " Name: " . $layout->getName() . "\n");
}
}
else if($value instanceof User)
{
$user = $value;
if($user != null)
{
echo("Record " . $keyName . " User-ID: " . $user->getId() . "\n");
echo("Record " . $keyName . " User-Name: " . $user->getName() . "\n");
echo("Record " . $keyName . " User-Email: " . $user->getEmail() . "\n");
}
}
else if($value instanceof $recordClass)
{
$recordValue = $value;
echo("Record " . $keyName . " ID: " . $recordValue->getId() . "\n");
echo("Record " . $keyName . " Name: " . $recordValue->getKeyValue("name") . "\n");
}
else if($value instanceof Choice)
{
$choiceValue = $value;
echo("Record " . $keyName . " : " . $choiceValue->getValue() . "\n");
}
else if($value instanceof RemindAt)
{
echo($keyName . ": " . $value->getAlarm() . "\n");
}
else if($value instanceof RecurringActivity)
{
echo($keyName . " : RRULE" . ": " . $value->getRrule() . "\n");
}
else if($value instanceof Consent)
{
$consent = $value;
echo("Record Consent ID: " . $consent->getId());
//Get the Owner User instance of each attachment
$owner = $consent->getOwner();
//Check if owner is not null
if($owner != null)
{
//Get the name of the owner User
echo("Record Consent Owner Name: " . $owner->getName());
//Get the ID of the owner User
echo("Record Consent Owner ID: " . $owner->getId());
//Get the Email of the owner User
echo("Record Consent Owner Email: " . $owner->getEmail());
}
$consentCreatedBy = $consent->getCreatedBy();
//Check if createdBy is not null
if($consentCreatedBy != null)
{
//Get the name of the CreatedBy User
echo("Record Consent CreatedBy Name: " . $consentCreatedBy->getName());
//Get the ID of the CreatedBy User
echo("Record Consent CreatedBy ID: " . $consentCreatedBy->getId());
//Get the Email of the CreatedBy User
echo("Record Consent CreatedBy Email: " . $consentCreatedBy->getEmail());
}
$consentModifiedBy = $consent->getModifiedBy();
//Check if createdBy is not null
if($consentModifiedBy != null)
{
//Get the name of the ModifiedBy User
echo("Record Consent ModifiedBy Name: " . $consentModifiedBy->getName());
//Get the ID of the ModifiedBy User
echo("Record Consent ModifiedBy ID: " . $consentModifiedBy->getId());
//Get the Email of the ModifiedBy User
echo("Record Consent ModifiedBy Email: " . $consentModifiedBy->getEmail());
}
echo("Record Consent CreatedTime: " . $consent->getCreatedTime());
echo("Record Consent ModifiedTime: " . $consent->getModifiedTime());
echo("Record Consent ContactThroughEmail: " . $consent->getContactThroughEmail());
echo("Record Consent ContactThroughSocial: " . $consent->getContactThroughSocial());
echo("Record Consent ContactThroughSurvey: " . $consent->getContactThroughSurvey());
echo("Record Consent ContactThroughPhone: " . $consent->getContactThroughPhone());
echo("Record Consent MailSentTime: " . $consent->getMailSentTime());
echo("Record Consent ConsentDate: " . $consent->getConsentDate());
echo("Record Consent ConsentRemarks: " . $consent->getConsentRemarks());
echo("Record Consent ConsentThrough: " . $consent->getConsentThrough());
echo("Record Consent DataProcessingBasis: " . $consent->getDataProcessingBasis());
//To get custom values
echo("Record Consent Lawful Reason: " . $consent->getKeyValue("Lawful_Reason"));
}
else
{
//Get each value in the map
echo($keyName . " : ");
print_r($value);
echo("\n");
}
}
}
//Get the Object obtained Info instance
$info = $responseWrapper->getInfo();
//Check if info is not null
if($info != null)
{
if($info->getPerPage() != null)
{
//Get the PerPage of the Info
echo("Record Info PerPage: " . $info->getPerPage() . "\n");
}
if($info->getCount() != null)
{
//Get the Count of the Info
echo("Record Info Count: " . $info->getCount() . "\n");
}
if($info->getPage() != null)
{
//Get the Page of the Info
echo("Record Info Page: " . $info->getPage() . "\n");
}
if($info->getMoreRecords() != null)
{
//Get the MoreRecords of the Info
echo("Record Info MoreRecords: " . $info->getMoreRecords() . "\n");
}
}
}
//Check if the request returned an exception
else if($responseHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $responseHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
if($exception->getDetails() != null)
{
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Create Records
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Create Records
* This method is used to create records of a module and print the response.
* @param moduleAPIName - The API Name of the module to create records in.
* @throws Exception
*/
public static function createRecords(string $moduleAPIName)
{
//API Name of the module to create records
//$moduleAPIName = "Leads";
//Get instance of RecordOperations Class that takes moduleAPIName as parameter
$recordOperations = new RecordOperations();
//Get instance of BodyWrapper Class that will contain the request body
$bodyWrapper = new BodyWrapper();
//List of Record instances
$records = array();
$recordClass = 'com\zoho\crm\api\record\Record';
//Get instance of Record Class
$record1 = new $recordClass();
/*
* Call addFieldValue method that takes two arguments
* 1 -> Call Field "." and choose the module from the displayed list and press "." and choose the field name from the displayed list.
* 2 -> Value
*/
$field = new Field("");
// $record1->addFieldValue(Leads::City(), "City");
$record1->addFieldValue(Leads::LastName(), "FROm PHP");
$record1->addFieldValue(Leads::FirstName(), "First Name");
$record1->addFieldValue(Leads::Company(), "KKRNP");
$record1->addKeyValue("External", "TestExternal123");
$record1->addFieldValue(Vendors::VendorName(), "Vendor Name");
$record1->addFieldValue(Deals::Stage(), new Choice("Clo"));
$record1->addFieldValue(Deals::DealName(), "deal_name");
$record1->addFieldValue(Deals::Description(), "deals description");
$record1->addFieldValue(Deals::ClosingDate(), new \DateTime("2021-06-02"));
$record1->addFieldValue(Deals::Amount(), 50.7);
$record1->addFieldValue(Campaigns::CampaignName(), "Campaign_Name");
$record1->addFieldValue(Solutions::SolutionTitle(), "Solution_Title");
$record1->addFieldValue(Accounts::AccountName(), "Account_Name");
$record1->addFieldValue(Cases::CaseOrigin(), new Choice("AutomatedSDK"));
$record1->addFieldValue(Cases::Status(), new Choice("AutomatedSDK"));
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
// Subform sample:
$subform = new $recordClass();
$subform->addKeyValue("dateTime_1", (new DateTime("now")));
$subform->addKeyValue("number_1", 1212332);
$subformData = array();
array_push($subformData,$subform);
$record1->addKeyValue("Subform_1", $subformData);
// end subform
$record1->addKeyValue("Custom_field", "Value");
$record1->addKeyValue("Date_1", new \DateTime('2021-03-08'));
$record1->addKeyValue("Date_Time_2", date_create("2020-06-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get())));
$record1->addKeyValue("Subject", "From PHP");
$taxName = array(new Choice("Vat"), new Choice("Sales Tax"));
$record1->addKeyValue("Tax", $taxName);
$record1->addKeyValue("Product_Name", "AutomatedSDK");
$fileDetails = array();
$fileDetail1 = new FileDetails();
$fileDetail1->setFileId("ae9c7cefa418aec1d6a5cc2d9ab35c32a6d84fd0653c0fe3eb5d30f3c0dee629");
array_push($fileDetails, $fileDetail1);
$fileDetail2 = new FileDetails();
$fileDetail2->setFileId("ae9c7cefa418aec1d6a5cc2d9ab35c32cf8c21acc735a439b1e84e92ec8454d7");
array_push($fileDetails, $fileDetail2);
$fileDetail3 = new FileDetails();
$fileDetail3->setFileId("ae9c7cefa418aec1d6a5cc2d9ab35c3207c8e1a4448a63b609f1ba7bd4aee6eb");
array_push($fileDetails, $fileDetail3);
$record1->addKeyValue("File_Upload", $fileDetails);
/** Following methods are being used only by Inventory modules */
$vendorName = new $recordClass();
$record1->addFieldValue(Vendors::id(), "34770617247001");
$record1->addFieldValue(Purchase_Orders::VendorName(), $vendorName);
$dealName = new $recordClass();
$dealName->addFieldValue(Deals::id(), "34770610207275");
$record1->addFieldValue(Sales_Orders::DealName(), $dealName);
$contactName = new $recordClass();
$contactName->addFieldValue(Contacts::id(), "34770614977055");
$record1->addFieldValue(Purchase_Orders::ContactName(), $contactName);
$accountName = new $recordClass();
$accountName->addKeyValue("name", "automatedAccount");
$record1->addFieldValue(Quotes::AccountName(), $accountName);
$record1->addKeyValue("Discount", 10.5);
$inventoryLineItemList = array();
$inventoryLineItem = new InventoryLineItems();
$lineItemProduct = new LineItemProduct();
$lineItemProduct->setId("34770615356009");
$inventoryLineItem->setProduct($lineItemProduct);
$inventoryLineItem->setQuantity(1.5);
$inventoryLineItem->setProductDescription("productDescription");
$inventoryLineItem->setListPrice(10.0);
$inventoryLineItem->setDiscount("5.0");
$inventoryLineItem->setDiscount("5.25%");
$productLineTaxes = array();
$productLineTax = new LineTax();
$productLineTax->setName("Sales Tax");
$productLineTax->setPercentage(20.0);
array_push($productLineTaxes, $productLineTax);
$inventoryLineItem->setLineTax($productLineTaxes);
array_push($inventoryLineItemList, $inventoryLineItem);
$record1->addKeyValue("Product_Details", $inventoryLineItemList);
$lineTaxes = array();
$lineTax = new LineTax();
$lineTax->setName("Sales Tax");
$lineTax->setPercentage(20.0);
array_push($lineTaxes,$lineTax);
$record1->addKeyValue('$line_tax', $lineTaxes);
/** End Inventory **/
/** Following methods are being used only by Activity modules */
// Tasks,Calls,Events
$record1->addFieldValue(Tasks::Description(), "Test Task");
$record1->addKeyValue("Currency",new Choice("INR"));
$remindAt = new RemindAt();
$remindAt->setAlarm("FREQ=NONE;ACTION=EMAILANDPOPUP;TRIGGER=DATE-TIME:2020-07-03T12:30:00.05:30");
$record1->addFieldValue(Tasks::RemindAt(), $remindAt);
$whoId = new $recordClass();
$whoId->setId("34770614977055");
$record1->addFieldValue(Tasks::WhoId(), $whoId);
$record1->addFieldValue(Tasks::Status(),new Choice("Waiting for input"));
$record1->addFieldValue(Tasks::DueDate(), new \DateTime('2021-03-08'));
$record1->addFieldValue(Tasks::Priority(),new Choice("High"));
$record1->addKeyValue('$se_module', "Accounts");
$whatId = new $recordClass();
$whatId->setId("3477061010352015");
$record1->addFieldValue(Tasks::WhatId(), $whatId);
/** Recurring Activity can be provided in any activity module*/
$recurringActivity = new RecurringActivity();
$recurringActivity->setRrule("FREQ=DAILY;INTERVAL=10;UNTIL=2020-08-14;DTSTART=2020-07-03");
$record1->addFieldValue(Events::RecurringActivity(), $recurringActivity);
// Events
$record1->addFieldValue(Events::Description(), "Test Events");
$startdatetime = date_create("2020-06-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
$record1->addFieldValue(Events::StartDateTime(), $startdatetime);
$participants = array();
$participant1 = new Participants();
$participant1->setParticipant("abc@gmail.com");
$participant1->setType("email");
$participant1->setId("34770615902017");
array_push($participants, $participant1);
$participant2 = new Participants();
$participant2->addKeyValue("participant", "34770615844006");
$participant2->addKeyValue("type", "lead");
array_push($participants, $participant2);
$record1->addFieldValue(Events::Participants(), $participants);
$record1->addKeyValue('$send_notification', true);
$record1->addFieldValue(Events::EventTitle(), "From PHP");
$enddatetime = date_create("2020-07-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
$record1->addFieldValue(Events::EndDateTime(), $enddatetime);
$remindAt = date_create("2020-06-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
$record1->addFieldValue(Events::RemindAt(), $remindAt);
$record1->addFieldValue(Events::CheckInStatus(), "PLANNED");
$remindAt = new RemindAt();
$remindAt->setAlarm("FREQ=NONE;ACTION=EMAILANDPOPUP;TRIGGER=DATE-TIME:2020-07-23T12:30:00+05:30");
$record1->addFieldValue(Tasks::RemindAt(), $remindAt);
$record1->addKeyValue('$se_module', "Leads");
$whatId = new $recordClass();
$whatId->setId("3477061010352011");
$record1->addFieldValue(Events::WhatId(), $whatId);
$record1->addFieldValue(Tasks::WhatId(), $whatId);
$record1->addFieldValue(Calls::CallType(), new Choice("Outbound"));
$record1->addFieldValue(Calls::CallStartTime(), date_create("2020-07-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get())));
/** End Activity **/
/** Following methods are being used only by Price_Books modules */
$pricingDetails = array();
$pricingDetail1 = new PricingDetails();
$pricingDetail1->setFromRange(1.0);
$pricingDetail1->setToRange(5.0);
$pricingDetail1->setDiscount(2.0);
array_push($pricingDetails, $pricingDetail1);
$pricingDetail2 = new PricingDetails();
$pricingDetail2->addKeyValue("from_range", 6.0);
$pricingDetail2->addKeyValue("to_range", 11.0);
$pricingDetail2->addKeyValue("discount", 3.0);
array_push($pricingDetails, $pricingDetail2);
$record1->addFieldValue(Price_Books::PricingDetails(), $pricingDetails);
$record1->addKeyValue("Email", "abc4@zoho.com");
$record1->addFieldValue(Price_Books::Description(), "TEST");
$record1->addFieldValue(Price_Books::PriceBookName(), "book_name");
$record1->addFieldValue(Price_Books::PricingModel(), new Choice("Flat"));
$tagList = array();
$tag = new Tag();
$tag->setName("Testtask");
array_push($tagList, $tag);
//Set the list to Tags in Record instance
$record1->setTag($tagList);
//Add Record instance to the list
array_push($records, $record1);
//Set the list to Records in BodyWrapper instance
$bodyWrapper->setData($records);
$trigger = array("approval", "workflow", "blueprint");
$bodyWrapper->setTrigger($trigger);
//bodyWrapper.setLarId("34770610087515");
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call createRecords method that takes BodyWrapper instance as parameter.
$response = $recordOperations->createRecords($moduleAPIName, $bodyWrapper, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$actionHandler = $response->getObject();
if($actionHandler instanceof ActionWrapper)
{
//Get the received ActionWrapper instance
$actionWrapper = $actionHandler;
//Get the list of obtained ActionResponse instances
$actionResponses = $actionWrapper->getData();
foreach($actionResponses as $actionResponse)
{
//Check if the request is successful
if($actionResponse instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $actionResponse;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($successResponse->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : ");
print_r($value);
echo("\n");
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($actionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $actionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($actionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $actionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Update Records
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Update Records
* This method is used to update multiple records of a module by their IDs and print the response.
* @param moduleAPIName - The API Name of the module to update records.
* @throws Exception
*/
public static function updateRecords(string $moduleAPIName)
{
//API Name of the module to create records
//$moduleAPIName = "Leads";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of BodyWrapper Class that will contain the request body
$request = new BodyWrapper();
//List of Record instances
$records = array();
$recordClass = 'com\zoho\crm\api\record\Record';
//Get instance of Record Class
$record1 = new $recordClass();
$record1->setId("3477061010531018");
/*
* Call addFieldValue method that takes two arguments
* 1 -> Call Field "." and choose the module from the displayed list and press "." and choose the field name from the displayed list.
* 2 -> Value
*/
$field = new Field("");
$record1->addFieldValue(Leads::City(), "City");
$record1->addFieldValue(Leads::LastName(), "Last Name");
$record1->addFieldValue(Leads::FirstName(), "First Name");
$record1->addFieldValue(Leads::Company(), "KKRNP");
$record1->addKeyValue("External", "TestExternal123");
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
$record1->addKeyValue("Custom_field", "Value");
$record1->addKeyValue("Custom_field_2", "value");
//Add Record instance to the list
array_push($records, $record1);
//Get instance of Record Class
$record2 = new $recordClass();
$record2->setId("3477061010532001");
/*
* Call addFieldValue method that takes two arguments
* 1 -> Call Field "." and choose the module from the displayed list and press "." and choose the field name from the displayed list.
* 2 -> Value
*/
$record2->addFieldValue(Leads::City(), "City");
$record2->addFieldValue(Leads::LastName(), "Last Name");
$record2->addFieldValue(Leads::FirstName(), "First Name");
$record2->addFieldValue(Leads::Company(), "KKRNP");
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
$record2->addKeyValue("Custom_field", "Value");
$record2->addKeyValue("Custom_field_2", "value");
//Add Record instance to the list
// array_push($records, $record2);
//Set the list to Records in BodyWrapper instance
$request->setData($records);
$trigger = array("approval", "workflow", "blueprint");
$request->setTrigger($trigger);
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call createRecords method that takes BodyWrapper instance and moduleAPIName as parameter.
$response = $recordOperations->updateRecords($moduleAPIName, $request, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$actionHandler = $response->getObject();
if($actionHandler instanceof ActionWrapper)
{
//Get the received ResponseWrapper instance
$actionWrapper = $actionHandler;
//Get the list of obtained ActionResponse instances
$actionResponses = $actionWrapper->getData();
foreach($actionResponses as $actionResponse)
{
//Check if the request is successful
if($actionResponse instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $actionResponse;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($successResponse->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : ");
print_r($value);
echo("\n");
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($actionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $actionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($actionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $actionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Delete Records
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Delete Records
* This method is used to delete records of a module and print the response.
* @param moduleAPIName - The API Name of the module to delete records from.
* @param recordIds - The list of record IDs to be deleted.
* @throws Exception
*/
public static function deleteRecords(string $moduleAPIName, array $recordIds)
{
//API Name of the module to update record
//$moduleAPIName = "Leads";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
foreach($recordIds as $id)
{
$paramInstance->add(DeleteRecordsParam::ids(), $id);
}
// $paramInstance->add(DeleteRecordsParam::wfTrigger(), "true");
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call deleteRecord method that takes ModuleAPIName and recordId as parameter.
$response = $recordOperations->deleteRecords($moduleAPIName, $paramInstance, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$actionHandler = $response->getObject();
if($actionHandler instanceof ActionWrapper)
{
//Get the received ActionWrapper instance
$actionWrapper = $actionHandler;
//Get the list of obtained ActionResponse instances
$actionResponses = $actionWrapper->getData();
foreach($actionResponses as $actionResponse)
{
//Check if the request is successful
if($actionResponse instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $actionResponse;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($successResponse->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($actionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $actionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($actionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $actionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Upsert Records
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Upsert Records
* This method is used to Upsert records of a module and print the response.
* @param moduleAPIName - The API Name of the module to upsert records.
* @throws Exception
*/
public static function upsertRecords(string $moduleAPIName)
{
//API Name of the module to create records
//$moduleAPIName = "Leads";
//Get instance of RecordOperations Class that takes moduleAPIName as parameter
$recordOperations = new RecordOperations();
//Get instance of BodyWrapper Class that will contain the request body
$request = new BodyWrapper();
//List of Record instances
$records = array();
$recordClass = 'com\zoho\crm\api\record\Record';
//Get instance of Record Class
$record1 = new $recordClass();
/*
* Call addFieldValue method that takes two arguments
* 1 -> Call Field "." and choose the module from the displayed list and press "." and choose the field name from the displayed list.
* 2 -> Value
*/
$field = new Field("");
$record1->addFieldValue(Leads::City(), "City");
// $record1->addFieldValue(Leads::LastName(), "Last Name");
$record1->addFieldValue(Leads::FirstName(), "First Name");
$record1->addFieldValue(Leads::Company(), "Company1");
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
$record1->addKeyValue("Custom_field", "Value");
$record1->addKeyValue("Custom_field_2", "value");
//Add Record instance to the list
array_push($records, $record1);
//Get instance of Record Class
$record2 = new $recordClass();
/*
* Call addFieldValue method that takes two arguments
* 1 -> Call Field "." and choose the module from the displayed list and press "." and choose the field name from the displayed list.
* 2 -> Value
*/
$record2->addFieldValue(Leads::City(), "City");
// $record2->addFieldValue(Leads::LastName(), "Last Name");
$record2->addFieldValue(Leads::FirstName(), "First Name");
$record2->addFieldValue(Leads::Company(), "Company12");
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
$record2->addKeyValue("Custom_field", "Value");
$record2->addKeyValue("Custom_field_2", "value");
$record2->addKeyValue("External", "TestExternal12");
//Add Record instance to the list
array_push($records, $record2);
$duplicateCheckFields = array("City", "Last_Name", "First_Name");
$request->setDuplicateCheckFields($duplicateCheckFields);
//Set the list to Records in BodyWrapper instance
$request->setData($records);
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call upsertRecords method that takes BodyWrapper instance as parameter.
$response = $recordOperations->upsertRecords($moduleAPIName, $request, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$actionHandler = $response->getObject();
if($actionHandler instanceof ActionWrapper)
{
$actionWrapper = $actionHandler;
//Get the list of obtained ActionResponse instances
$actionResponses = $actionWrapper->getData();
foreach($actionResponses as $actionResponse)
{
//Check if the request is successful
if($actionResponse instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $actionResponse;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($successResponse->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : ");
print_r($value);
echo("\n");
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($actionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $actionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($actionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $actionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Get Deleted Records
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Get Deleted Records
* This method is used to get the deleted records of a module and print the response.
* @param moduleAPIName - The API Name of the module to obtain the deleted records.
* @throws Exception
*/
public static function getDeletedRecords(string $moduleAPIName)
{
//example, $moduleAPIName = "Leads";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
$paramInstance->add(GetDeletedRecordsParam::type(), "all");//all, recycle, permanent
// $paramInstance->add(GetDeletedRecordsParam::page(), 1);
// $paramInstance->add(GetDeletedRecordsParam::perPage(), 2);
//Get instance of HeaderMap Class
$headerInstance = new HeaderMap();
$ifModifiedSince = date_create("2020-06-02T11:03:06+05:30")->setTimezone(new \DateTimeZone(date_default_timezone_get()));
$headerInstance->add(GetDeletedRecordsHeader::IfModifiedSince(), $ifModifiedSince);
//Call getDeletedRecords method that takes paramInstance, headerInstance and moduleAPIName as parameter
$response = $recordOperations->getDeletedRecords($moduleAPIName,$paramInstance, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status code " . $response->getStatusCode() . "\n");
if(in_array($response->getStatusCode(), array(204, 304)))
{
echo($response->getStatusCode() == 204? "No Content\n" : "Not Modified\n");
return;
}
if($response->isExpected())
{
//Get the object from response
$deletedRecordsHandler = $response->getObject();
if($deletedRecordsHandler instanceof DeletedRecordsWrapper)
{
//Get the received DeletedRecordsWrapper instance
$deletedRecordsWrapper = $deletedRecordsHandler;
//Get the list of obtained DeletedRecord instances
$deletedRecords = $deletedRecordsWrapper->getData();
foreach($deletedRecords as $deletedRecord)
{
//Get the deletedBy User instance of each DeletedRecord
$deletedBy = $deletedRecord->getDeletedBy();
//Check if deletedBy is not null
if($deletedBy != null)
{
//Get the name of the deletedBy User
echo("DeletedRecord Deleted By User-Name: " . $deletedBy->getName() . "\n");
//Get the ID of the deletedBy User
echo("DeletedRecord Deleted By User-ID: " . $deletedBy->getId() . "\n");
}
//Get the ID of each DeletedRecord
echo("DeletedRecord ID: " . $deletedRecord->getId() . "\n");
//Get the DisplayName of each DeletedRecord
echo("DeletedRecord DisplayName: " . $deletedRecord->getDisplayName() . "\n");
//Get the Type of each DeletedRecord
echo("DeletedRecord Type: " . $deletedRecord->getType() . "\n");
//Get the createdBy User instance of each DeletedRecord
$createdBy = $deletedRecord->getCreatedBy();
//Check if createdBy is not null
if($createdBy != null)
{
//Get the name of the createdBy User
echo("DeletedRecord Created By User-Name: " . $createdBy->getName() . "\n");
//Get the ID of the createdBy User
echo("DeletedRecord Created By User-ID: " . $createdBy->getId() . "\n");
}
//Get the DeletedTime of each DeletedRecord
echo("DeletedRecord DeletedTime: ");
print_r($deletedRecord->getDeletedTime());
echo("\n");
}
//Get the Object obtained Info instance
$info = $deletedRecordsWrapper->getInfo();
//Check if info is not null
if($info != null)
{
if($info->getPerPage() != null)
{
//Get the PerPage of the Info
echo("Deleted Record Info PerPage: " . $info->getPerPage() . "\n");
}
if($info->getCount() != null)
{
//Get the Count of the Info
echo("Deleted Record Info Count: " . $info->getCount() . "\n");
}
if($info->getPage() != null)
{
//Get the Page of the Info
echo("Deleted Record Info Page: " . $info->getPage() . "\n");
}
if($info->getMoreRecords() != null)
{
//Get the MoreRecords of the Info
echo("Deleted Record Info MoreRecords: " . $info->getMoreRecords() . "\n");
}
}
}
//Check if the request returned an exception
else if($deletedRecordsHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $deletedRecordsHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Search Records
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Search Records
* This method is used to search records of a module and print the response.
* @param moduleAPIName - The API Name of the module to obtain records.
* @throws Exception
*/
public static function searchRecords(string $moduleAPIName)
{
//example, moduleAPIName = "Leads";
//Get instance of RecordOperations Class that takes moduleAPIName as parameter
$recordOperations = new RecordOperations();
$paramInstance = new ParameterMap();
// $paramInstance->add(SearchRecordsParam::criteria(), "((Last_Name:starts_with:Last Name) or (Company:starts_with:fasf\\(123\\) K))");
$paramInstance->add(SearchRecordsParam::criteria(), "(External:in:TestExternal12)");
$paramInstance->add(SearchRecordsParam::email(), "abc@gmail.com");
$paramInstance->add(SearchRecordsParam::phone(), "234567890");
$paramInstance->add(SearchRecordsParam::word(), "First Name Last Name");
$paramInstance->add(SearchRecordsParam::converted(), "both");
$paramInstance->add(SearchRecordsParam::approved(), "both");
$paramInstance->add(SearchRecordsParam::page(), 1);
$paramInstance->add(SearchRecordsParam::perPage(), 2);
$paramInstance->add(SearchRecordsParam::fields(), "External,Email");
$headerInstance = new HeaderMap();
$headerInstance->add(GetRecordHeader::XEXTERNAL(), "Leads.External");
//Call getRecords method
$response = $recordOperations->searchRecords($moduleAPIName, $paramInstance, $headerInstance);
if($response != null)
{
//Get the status code from response
echo("Status code " . $response->getStatusCode() . "\n");
if(in_array($response->getStatusCode(), array(204, 304)))
{
echo($response->getStatusCode() == 204? "No Content\n" : "Not Modified\n");
return;
}
if($response->isExpected())
{
//Get the object from response
$responseHandler = $response->getObject();
if($responseHandler instanceof ResponseWrapper)
{
$responseWrapper = $responseHandler;
//Get the obtained Record instance
$records = $responseWrapper->getData();
$recordClass = 'com\zoho\crm\api\record\Record';
foreach($records as $record)
{
//Get the ID of each Record
echo("Record ID: " . $record->getId() . "\n");
//Get the createdBy User instance of each Record
$createdBy = $record->getCreatedBy();
//Check if createdBy is not null
if($createdBy != null)
{
//Get the ID of the createdBy User
echo("Record Created By User-ID: " . $createdBy->getId() . "\n");
//Get the name of the createdBy User
echo("Record Created By User-Name: " . $createdBy->getName() . "\n");
//Get the Email of the createdBy User
echo("Record Created By User-Email: " . $createdBy->getEmail() . "\n");
}
//Get the CreatedTime of each Record
echo("Record CreatedTime: ");
print_r($record->getCreatedTime());
echo("\n");
//Get the modifiedBy User instance of each Record
$modifiedBy = $record->getModifiedBy();
//Check if modifiedBy is not null
if($modifiedBy != null)
{
//Get the ID of the modifiedBy User
echo("Record Modified By User-ID: " . $modifiedBy->getId() . "\n");
//Get the name of the modifiedBy User
echo("Record Modified By User-Name: " . $modifiedBy->getName() . "\n");
//Get the Email of the modifiedBy User
echo("Record Modified By User-Email: " . $modifiedBy->getEmail() . "\n");
}
//Get the ModifiedTime of each Record
echo("Record ModifiedTime: ");
print_r($record->getModifiedTime());
echo("\n");
//Get the list of Tag instance each Record
$tags = $record->getTag();
//Check if tags is not null
if($tags != null)
{
foreach($tags as $tag)
{
//Get the Name of each Tag
echo("Record Tag Name: " . $tag->getName() . "\n");
//Get the Id of each Tag
echo("Record Tag ID: " . $tag->getId() . "\n");
}
}
//To get particular field value
echo("Record Field Value: " . $record->getKeyValue("Last_Name") . "\n");// FieldApiName
echo("Record KeyValues : \n" );
//Get the KeyValue map
foreach($record->getKeyValues() as $keyName => $value)
{
if($value != null)
{
if((is_array($value) && sizeof($value) > 0) && isset($value[0]))
{
if($value[0] instanceof FileDetails)
{
$fileDetails = $value;
foreach($fileDetails as $fileDetail)
{
//Get the Extn of each FileDetails
echo("Record FileDetails Extn: " . $fileDetail->getExtn() . "\n");
//Get the IsPreviewAvailable of each FileDetails
echo("Record FileDetails IsPreviewAvailable: " . $fileDetail->getIsPreviewAvailable() . "\n");
//Get the DownloadUrl of each FileDetails
echo("Record FileDetails DownloadUrl: " . $fileDetail->getDownloadUrl() . "\n");
//Get the DeleteUrl of each FileDetails
echo("Record FileDetails DeleteUrl: " . $fileDetail->getDeleteUrl() . "\n");
//Get the EntityId of each FileDetails
echo("Record FileDetails EntityId: " . $fileDetail->getEntityId() . "\n");
//Get the Mode of each FileDetails
echo("Record FileDetails Mode: " . $fileDetail->getMode() . "\n");
//Get the OriginalSizeByte of each FileDetails
echo("Record FileDetails OriginalSizeByte: " . $fileDetail->getOriginalSizeByte() . "\n");
//Get the PreviewUrl of each FileDetails
echo("Record FileDetails PreviewUrl: " . $fileDetail->getPreviewUrl() . "\n");
//Get the FileName of each FileDetails
echo("Record FileDetails FileName: " . $fileDetail->getFileName() . "\n");
//Get the FileId of each FileDetails
echo("Record FileDetails FileId: " . $fileDetail->getFileId() . "\n");
//Get the AttachmentId of each FileDetails
echo("Record FileDetails AttachmentId: " . $fileDetail->getAttachmentId() . "\n");
//Get the FileSize of each FileDetails
echo("Record FileDetails FileSize: " . $fileDetail->getFileSize() . "\n");
//Get the CreatorId of each FileDetails
echo("Record FileDetails CreatorId: " . $fileDetail->getCreatorId() . "\n");
//Get the LinkDocs of each FileDetails
echo("Record FileDetails LinkDocs: " . $fileDetail->getLinkDocs() . "\n");
}
}
else if($value[0] instanceof Choice)
{
$choice = $value;
foreach($choice as $choiceValue)
{
echo("Record " . $keyName . " : " . $choiceValue->getValue() . "\n");
}
}
else if($value[0] instanceof InventoryLineItems)
{
$productDetails = $value;
foreach($productDetails as $productDetail)
{
$lineItemProduct = $productDetail->getProduct();
if($lineItemProduct != null)
{
echo("Record ProductDetails LineItemProduct ProductCode: " . $lineItemProduct->getProductCode() . "\n");
echo("Record ProductDetails LineItemProduct Currency: " . $lineItemProduct->getCurrency() . "\n");
echo("Record ProductDetails LineItemProduct Name: " . $lineItemProduct->getName() . "\n");
echo("Record ProductDetails LineItemProduct Id: " . $lineItemProduct->getId() . "\n");
}
echo("Record ProductDetails Quantity: " . $productDetail->getQuantity() . "\n");
echo("Record ProductDetails Discount: " . $productDetail->getDiscount() . "\n");
echo("Record ProductDetails TotalAfterDiscount: " . $productDetail->getTotalAfterDiscount() . "\n");
echo("Record ProductDetails NetTotal: " . $productDetail->getNetTotal() . "\n");
if($productDetail->getBook() != null)
{
echo("Record ProductDetails Book: " . $productDetail->getBook() . "\n");
}
echo("Record ProductDetails Tax: " . $productDetail->getTax() . "\n");
echo("Record ProductDetails ListPrice: " . $productDetail->getListPrice() . "\n");
echo("Record ProductDetails UnitPrice: " . $productDetail->getUnitPrice() . "\n");
echo("Record ProductDetails QuantityInStock: " . $productDetail->getQuantityInStock() . "\n");
echo("Record ProductDetails Total: " . $productDetail->getTotal() . "\n");
echo("Record ProductDetails ID: " . $productDetail->getId() . "\n");
echo("Record ProductDetails ProductDescription: " . $productDetail->getProductDescription() . "\n");
$lineTaxes = $productDetail->getLineTax();
foreach($lineTaxes as $lineTax)
{
echo("Record ProductDetails LineTax Percentage: " . $lineTax->getPercentage() . "\n");
echo("Record ProductDetails LineTax Name: " . $lineTax->getName() . "\n");
echo("Record ProductDetails LineTax Id: " . $lineTax->getId() . "\n");
echo("Record ProductDetails LineTax Value: " . $lineTax->getValue() . "\n");
}
}
}
else if($value[0] instanceof Tag)
{
$tagList = $value;
foreach($tagList as $tag)
{
//Get the Name of each Tag
echo("Record Tag Name: " . $tag->getName() . "\n");
//Get the Id of each Tag
echo("Record Tag ID: " . $tag->getId() . "\n");
}
}
else if($value[0] instanceof PricingDetails)
{
$pricingDetails = $value;
foreach($pricingDetails as $pricingDetail)
{
echo("Record PricingDetails ToRange: " . $pricingDetail->getToRange(). "\n");
echo("Record PricingDetails Discount: " . $pricingDetail->getDiscount(). "\n");
echo("Record PricingDetails ID: " . $pricingDetail->getId() . "\n");
echo("Record PricingDetails FromRange: " . $pricingDetail->getFromRange(). "\n");
}
}
else if($value[0] instanceof Participants)
{
$participants = $value;
foreach($participants as $participant)
{
echo("RelatedRecord Participants Name: " . $participant->getName() . "\n");
echo("RelatedRecord Participants Invited: " . $participant->getInvited() . "\n");
echo("RelatedRecord Participants ID: " . $participant->getId() . "\n");
echo("RelatedRecord Participants Type: " . $participant->getType() . "\n");
echo("RelatedRecord Participants Participant: " . $participant->getParticipant() . "\n");
echo("RelatedRecord Participants Status: " . $participant->getStatus() . "\n");
}
}
else if($value instanceof User)
{
$user = $value;
if($user != null)
{
echo("Record " . $keyName . " User-ID: " . $user->getId() . "\n");
echo("Record " . $keyName . " User-Name: " . $user->getName() . "\n");
echo("Record " . $keyName . " User-Email: " . $user->getEmail() . "\n");
}
}
else if($value[0] instanceof $recordClass)
{
$recordList = $value;
foreach($recordList as $record1)
{
//Get the details map
foreach($record1->getKeyValues() as $key => $value1)
{
//Get each value in the map
echo($key . " : " );
print_r($value1);
echo("\n");
}
}
}
else if($value[0] instanceof LineTax)
{
$lineTaxes = $value;
foreach($lineTaxes as $lineTax)
{
echo("Record ProductDetails LineTax Percentage: " . $lineTax->getPercentage(). "\n");
echo("Record ProductDetails LineTax Name: " . $lineTax->getName() . "\n");
echo("Record ProductDetails LineTax Id: " . $lineTax->getId() . "\n");
echo("Record ProductDetails LineTax Value: " . $lineTax->getValue(). "\n");
}
}
else if($value[0] instanceof Comment)
{
$comments = $value;
foreach($comments as $comment)
{
echo("Record Comment CommentedBy: " . $comment->getCommentedBy() . "\n");
echo("Record Comment CommentedTime: ");
print_r($comment->getCommentedTime());
echo("\n");
echo("Record Comment CommentContent: " . $comment->getCommentContent(). "\n");
echo("Record Comment Id: " . $comment->getId() . "\n");
}
}
else
{
echo($keyName . " : ");
print_r($value);
echo("\n");
}
}
else if($value instanceof Layout)
{
$layout = $value;
if($layout != null)
{
echo("Record " . $keyName. " ID: " . $layout->getId() . "\n");
echo("Record " . $keyName . " Name: " . $layout->getName() . "\n");
}
}
else if($value instanceof User)
{
$user = $value;
if($user != null)
{
echo("Record " . $keyName . " User-ID: " . $user->getId() . "\n");
echo("Record " . $keyName . " User-Name: " . $user->getName() . "\n");
echo("Record " . $keyName . " User-Email: " . $user->getEmail() . "\n");
}
}
else if($value instanceof $recordClass)
{
$recordValue = $value;
echo("Record " . $keyName . " ID: " . $recordValue->getId() . "\n");
echo("Record " . $keyName . " Name: " . $recordValue->getKeyValue("name") . "\n");
}
else if($value instanceof Choice)
{
$choiceValue = $value;
echo("Record " . $keyName . " : " . $choiceValue->getValue() . "\n");
}
else if($value instanceof RemindAt)
{
echo($keyName . ": " . $value->getAlarm() . "\n");
}
else if($value instanceof RecurringActivity)
{
echo($keyName . " : RRULE" . ": " . $value->getRrule() . "\n");
}
else
{
//Get each value in the map
echo($keyName . " : ");
print_r($value);
echo("\n");
}
}
}
}
//Get the Object obtained Info instance
$info = $responseWrapper->getInfo();
//Check if info is not null
if($info != null)
{
if($info->getPerPage() != null)
{
//Get the PerPage of the Info
echo("Record Info PerPage: " . $info->getPerPage() . "\n");
}
if($info->getCount() != null)
{
//Get the Count of the Info
echo("Record Info Count: " . $info->getCount() . "\n");
}
if($info->getPage() != null)
{
//Get the Page of the Info
echo("Record Info Page: " . $info->getPage() . "\n");
}
if($info->getMoreRecords() != null)
{
//Get the MoreRecords of the Info
echo("Record Info MoreRecords: " . $info->getMoreRecords() . "\n");
}
}
}
//Check if the request returned an exception
else if($responseHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $responseHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
if($exception->getDetails() != null)
{
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
else
{
print_r($response);
}
}
}
}
Convert a Lead
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* Convert Lead
* This method is used to Convert a Lead record and print the response.
* @param leadId - The ID of the Lead to be converted.
* @throws Exception
*/
public static function convertLead(string $recordId)
{
//API Name of the module to update record
//$moduleAPIName = "Leads";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ConvertBodyWrapper Class that will contain the request body
$request = new ConvertBodyWrapper();
//List of LeadConverter instances
$data = array();
//Get instance of LeadConverter Class
$record1 = new LeadConverter();
$record1->setOverwrite(true);
$record1->setNotifyLeadOwner(true);
$record1->setNotifyNewEntityOwner(true);
$record1->setAccounts("34770615848125");
$record1->setContacts("34770610358009");
$record1->setAssignTo("34770610173021");
$recordClass = 'com\zoho\crm\api\record\Record';
$deals = new $recordClass();
/*
* Call addFieldValue method that takes two arguments
* 1 -> Call Field "." and choose the module from the displayed list and press "." and choose the field name from the displayed list.
* 2 -> Value
*/
$field = new Field("");
$deals->addFieldValue(Deals::DealName(), "deal_name");
$deals->addFieldValue(Deals::Description(), "deals description");
$deals->addFieldValue(Deals::ClosingDate(), new \DateTime("2021-06-02"));
$deals->addFieldValue(Deals::Stage(), new Choice("Closed Won"));
$deals->addFieldValue(Deals::Amount(), 50.7);
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
$deals->addKeyValue("Custom_field", "Value");
$deals->addKeyValue("Custom_field_2", "value");
$record1->setDeals($deals);
$carryOverTags = new CarryOverTags();
$carryOverTags->setAccounts(["Test"]);
$carryOverTags->setContacts(["Test"]);
$carryOverTags->setDeals(["Test"]);
$record1->setCarryOverTags($carryOverTags);
//Add Record instance to the list
array_push($data, $record1);
//Set the list to Records in BodyWrapper instance
$request->setData($data);
//Call updateRecord method that takes BodyWrapper instance, ModuleAPIName and recordId as parameter.
$response = $recordOperations->convertLead($recordId,$request );
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$convertActionHandler = $response->getObject();
if($convertActionHandler instanceof ConvertActionWrapper)
{
//Get the received ConvertActionWrapper instance
$convertActionWrapper = $convertActionHandler;
//Get the list of obtained ConvertActionResponse instances
$convertActionResponses = $convertActionWrapper->getData();
foreach($convertActionResponses as $convertActionResponse)
{
//Check if the request is successful
if($convertActionResponse instanceof SuccessfulConvert)
{
//Get the received SuccessfulConvert instance
$successfulConvert = $convertActionResponse;
//Get the Accounts ID of Record
echo("LeadConvert Accounts ID: " . $successfulConvert->getAccounts() . "\n");
//Get the Contacts ID of Record
echo("LeadConvert Contacts ID: " . $successfulConvert->getContacts() . "\n");
//Get the Deals ID of Record
echo("LeadConvert Deals ID: " . $successfulConvert->getDeals() . "\n");
}
//Check if the request returned an exception
else if($convertActionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $convertActionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
if($exception->getDetails() != null)
{
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($convertActionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $convertActionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
if($exception->getDetails() != null)
{
echo("Details: " );
//Get the details map
foreach($exception->getDetails() as $key => $value)
{
//Get each value in the map
echo($key . " : " . $value . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Get a Record's Photo
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* This method is used to download a photo associated with a module.
* @param moduleAPIName - The API Name of the record's module.
* @param recordId - The ID of the record to be obtained.
* @param destinationFolder - The absolute path of the destination folder to store the photo.
* @throws Exception
*/
public static function getPhoto(string $moduleAPIName, string $recordId, string $destinationFolder)
{
//example
//$moduleAPIName = "Leads";
//$recordId = "34770615177002";
//$destinationFolder = "/Users/user_name/Desktop";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Call downloadAttachment method that takes moduleAPIName and recordId as parameters
$response = $recordOperations->getPhoto($recordId,$moduleAPIName );
if($response != null)
{
//Get the status code from response
echo("Status code " . $response->getStatusCode() . "\n");
if(in_array($response->getStatusCode(), array(204, 304)))
{
echo($response->getStatusCode() == 204? "No Content\n" : "Not Modified\n");
return;
}
if($response->isExpected())
{
//Get object from response
$downloadHandler = $response->getObject();
if($downloadHandler instanceof FileBodyWrapper)
{
//Get object from response
$fileBodyWrapper = $downloadHandler;
//Get StreamWrapper instance from the returned FileBodyWrapper instance
$streamWrapper = $fileBodyWrapper->getFile();
//Create a file instance with the absolute_file_path
$fp = fopen($destinationFolder . "/" . $streamWrapper->getName(), "w");
//Get stream from the response
$stream = $streamWrapper->getStream();
fputs($fp, strval($stream));
fclose($fp);
}
//Check if the request returned an exception
else if($downloadHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $downloadHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
if($exception->getDetails() != null)
{
echo("Details: \n");
//Get the details map
foreach ($exception->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Upload a Photo to a Record
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* This method is used to attach a photo to a record. You must include the photo in the request with content type as multipart/form data.
* @param moduleAPIName - The API Name of the record's module.
* @param recordId - The ID of the record to be obtained.
* @param absoluteFilePath - The absolute file path of the file to be uploads
* @throws Exception
*/
public static function uploadPhoto(string $moduleAPIName, string $recordId, string $absoluteFilePath)
{
//example
//$moduleAPIName = "Leads";
//$recordId = "34770615177002";
//$absoluteFilePath = "/Users/use_name/Desktop/image.png"
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of FileBodyWrapper class that will contain the request file
$fileBodyWrapper = new FileBodyWrapper();
//Get instance of StreamWrapper class that takes absolute path of the file to be attached as parameter
$streamWrapper = new StreamWrapper(null, null, $absoluteFilePath);
//Set file to the FileBodyWrapper instance
$fileBodyWrapper->setFile($streamWrapper);
//Call uploadPhoto method that takes FileBodyWrapper instance, moduleAPIName and recordId as parameter
$response = $recordOperations->uploadPhoto($recordId, $moduleAPIName,$fileBodyWrapper);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$fileHandler = $response->getObject();
//Check if the request is successful
if($fileHandler instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $fileHandler;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
if($successResponse->getDetails() != null)
{
//Get the details map
foreach ($successResponse->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($fileHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $fileHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
if($exception->getDetails() != null)
{
//Get the details map
foreach ($exception->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Delete the Photo of a Record
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* This method is used to delete a photo from a record in a module.
* @param moduleAPIName - The API Name of the record's module.
* @param recordId - The ID of the record to be obtained.
* @throws Exception
*/
public static function deletePhoto(string $moduleAPIName, string $recordId)
{
//example
//$moduleAPIName = "Leads";
//$recordId = "34770615177002";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Call getAttachments method that takes moduleAPIName and recordId as parameter
$response = $recordOperations->deletePhoto($recordId,$moduleAPIName);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$fileHandler = $response->getObject();
//Check if the request is successful
if($fileHandler instanceof SuccessResponse)
{
//Get the received SuccessResponse instance
$successResponse = $fileHandler;
//Get the Status
echo("Status: " . $successResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $successResponse->getCode()->getValue() . "\n");
echo("Details: " );
if($successResponse->getDetails() != null)
{
//Get the details map
foreach ($successResponse->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $successResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($fileHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $fileHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
if($exception->getDetails() != null)
{
//Get the details map
foreach ($exception->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Mass Update Records
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* This method is used to update the values of specific fields for multiple records and print the response.
* @param moduleAPIName - The API Name of the module to obtain records.
* @throws Exception
*/
public static function massUpdateRecords(string $moduleAPIName)
{
//API Name of the module to massUpdateRecords
//$moduleAPIName = "Leads";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of MassUpdateBodyWrapper Class that will contain the request body
$request = new MassUpdateBodyWrapper();
//List of Record instances
$records = array();
$recordClass = 'com\zoho\crm\api\record\Record';
//Get instance of Record Class
$record1 = new $recordClass();
/*
* Call addKeyValue method that takes two arguments
* 1 -> A string that is the Field's API Name
* 2 -> Value
*/
$record1->addKeyValue("City", "Value");
//Add Record instance to the list
array_push($records, $record1);
//Set the list to Records in BodyWrapper instance
$request->setData($records);
$request->setCvid("34770610087501");
// $ids = array("34770616603276");
// $request->setIds($ids);
// $territory = new Territory();
// $territory->setId("34770613051357");
// $territory->setIncludeChild(true);
// $request->setTerritory($territory);
$request->setOverWrite(true);
//Call massUpdateRecords method that takes BodyWrapper instance, ModuleAPIName as parameter.
$response = $recordOperations->massUpdateRecords($moduleAPIName, $request);
if($response != null)
{
//Get the status code from response
echo("Status Code: " . $response->getStatusCode() . "\n");
if($response->isExpected())
{
//Get object from response
$massUpdateActionHandler = $response->getObject();
if($massUpdateActionHandler instanceof MassUpdateActionWrapper)
{
//Get the received MassUpdateActionWrapper instance
$massUpdateActionWrapper = $massUpdateActionHandler;
//Get the list of obtained MassUpdateActionResponse instances
$massUpdateActionResponses = $massUpdateActionWrapper->getData();
foreach($massUpdateActionResponses as $massUpdateActionResponse)
{
//Check if the request is successful
if($massUpdateActionResponse instanceof MassUpdateSuccessResponse)
{
//Get the received MassUpdateSuccessResponse instance
$massUpdateSuccessResponse = $massUpdateActionResponse;
//Get the Status
echo("Status: " . $massUpdateSuccessResponse->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $massUpdateSuccessResponse->getCode()->getValue() . "\n");
if($massUpdateSuccessResponse->getDetails() != null)
{
echo("Details: " );
//Get the details map
foreach ($massUpdateSuccessResponse->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": ");
print_r($keyValue);
echo("\n");
}
}
//Get the Message
echo("Message: " . $massUpdateSuccessResponse->getMessage()->getValue() . "\n");
}
//Check if the request returned an exception
else if($massUpdateActionResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $massUpdateActionResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
if($exception->getDetails() != null)
{
//Get the details map
foreach ($exception->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($massUpdateActionHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $massUpdateActionHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
if($exception->getDetails() != null)
{
echo("Details: " );
//Get the details map
foreach ($exception->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
Get the Status of Mass Update
<?php
namespace com\zoho\crm\sample\record;
use com\zoho\crm\api\HeaderMap;
use com\zoho\crm\api\ParameterMap;
use com\zoho\crm\api\layouts\Layout;
use com\zoho\crm\api\record\APIException;
use com\zoho\crm\api\record\ActionWrapper;
use com\zoho\crm\api\record\BodyWrapper;
use com\zoho\crm\api\record\ConvertActionWrapper;
use com\zoho\crm\api\record\ConvertBodyWrapper;
use com\zoho\crm\api\record\DeletedRecordsWrapper;
use com\zoho\crm\api\record\FileBodyWrapper;
use com\zoho\crm\api\record\FileDetails;
use com\zoho\crm\api\record\InventoryLineItems;
use com\zoho\crm\api\record\LeadConverter;
use com\zoho\crm\api\record\LineItemProduct;
use com\zoho\crm\api\record\LineTax;
use com\zoho\crm\api\record\MassUpdate;
use com\zoho\crm\api\record\MassUpdateActionWrapper;
use com\zoho\crm\api\record\MassUpdateBodyWrapper;
use com\zoho\crm\api\record\MassUpdateResponseWrapper;
use com\zoho\crm\api\record\MassUpdateSuccessResponse;
use com\zoho\crm\api\record\Participants;
use com\zoho\crm\api\record\PricingDetails;
use com\zoho\crm\api\record\RecordOperations;
use com\zoho\crm\api\record\RecurringActivity;
use com\zoho\crm\api\record\RemindAt;
use com\zoho\crm\api\record\ResponseWrapper;
use com\zoho\crm\api\record\SuccessResponse;
use com\zoho\crm\api\record\SuccessfulConvert;
use com\zoho\crm\api\tags\Tag;
use com\zoho\crm\api\record\DeleteRecordParam;
use com\zoho\crm\api\record\DeleteRecordsParam;
use com\zoho\crm\api\record\GetDeletedRecordsHeader;
use com\zoho\crm\api\record\GetDeletedRecordsParam;
use com\zoho\crm\api\record\GetMassUpdateStatusParam;
use com\zoho\crm\api\record\GetRecordHeader;
use com\zoho\crm\api\record\GetRecordParam;
use com\zoho\crm\api\record\GetRecordsHeader;
use com\zoho\crm\api\record\GetRecordsParam;
use com\zoho\crm\api\record\SearchRecordsParam;
use com\zoho\crm\api\record\{Cases, Field, Solutions, Accounts, Campaigns, Calls, Leads, Tasks, Deals, Sales_Orders, Contacts, Quotes, Events, Price_Books, Purchase_Orders, Vendors};
use com\zoho\crm\api\util\Choice;
use com\zoho\crm\api\util\StreamWrapper;
use com\zoho\crm\api\record\Territory;
use com\zoho\crm\api\record\Comment;
use com\zoho\crm\api\record\Consent;
use com\zoho\crm\api\attachments\Attachment;
class Record
{
/**
* This method is used to get the status of the mass update job scheduled previously and print the response.
* @param moduleAPIName- The API Name of the module to obtain records.
* @param jobId - The ID of the job from the response of Mass Update Records.
* @throws Exception
*/
public static function getMassUpdateStatus(string $moduleAPIName, string $jobId)
{
//example
//$moduleAPIName = "Leads";
//$recordId = "34770615177002";
//Get instance of RecordOperations Class
$recordOperations = new RecordOperations();
//Get instance of ParameterMap Class
$paramInstance = new ParameterMap();
$paramInstance->add(GetMassUpdateStatusParam::jobId(), $jobId);
//Call getRecord method that takes paramInstance, moduleAPIName as parameter
$response = $recordOperations->getMassUpdateStatus($moduleAPIName,$paramInstance);
if($response != null)
{
//Get the status code from response
echo("Status code " . $response->getStatusCode() . "\n");
if(in_array($response->getStatusCode(), array(204, 304)))
{
echo($response->getStatusCode() == 204? "No Content\n" : "Not Modified\n");
return;
}
if($response->isExpected())
{
//Get object from response
$massUpdateResponseHandler = $response->getObject();
if($massUpdateResponseHandler instanceof MassUpdateResponseWrapper)
{
//Get the received MassUpdateResponseWrapper instance
$massUpdateResponseWrapper = $massUpdateResponseHandler;
//Get the list of obtained MassUpdateResponse instances
$massUpdateResponses = $massUpdateResponseWrapper->getData();
foreach($massUpdateResponses as $massUpdateResponse)
{
//Check if the request is successful
if($massUpdateResponse instanceof MassUpdate)
{
//Get the received MassUpdate instance
$massUpdate = $massUpdateResponse;
//Get the Status of each MassUpdate
echo("MassUpdate Status: " . $massUpdate->getStatus()->getValue() . "\n");
//Get the FailedCount of each MassUpdate
echo("MassUpdate FailedCount: " . $massUpdate->getFailedCount() . "\n");
//Get the UpdatedCount of each MassUpdate
echo("MassUpdate UpdatedCount: " . $massUpdate->getUpdatedCount() . "\n");
//Get the NotUpdatedCount of each MassUpdate
echo("MassUpdate NotUpdatedCount: " . $massUpdate->getNotUpdatedCount() . "\n");
//Get the TotalCount of each MassUpdate
echo("MassUpdate TotalCount: " . $massUpdate->getTotalCount() . "\n");
}
//Check if the request returned an exception
else if($massUpdateResponse instanceof APIException)
{
//Get the received APIException instance
$exception = $massUpdateResponse;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
if($exception->getDetails() != null)
{
echo("Details: " );
//Get the details map
foreach ($exception->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
}
//Check if the request returned an exception
else if($massUpdateResponseHandler instanceof APIException)
{
//Get the received APIException instance
$exception = $massUpdateResponseHandler;
//Get the Status
echo("Status: " . $exception->getStatus()->getValue() . "\n");
//Get the Code
echo("Code: " . $exception->getCode()->getValue() . "\n");
echo("Details: " );
if($exception->getDetails() != null)
{
echo("Details: " );
//Get the details map
foreach ($exception->getDetails() as $keyName => $keyValue)
{
//Get each value in the map
echo($keyName . ": " . $keyValue . "\n");
}
}
//Get the Message
echo("Message: " . $exception->getMessage()->getValue() . "\n");
}
}
else
{
print_r($response);
}
}
}
}
}