C# SDK Samples - Attachment Operations
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Com.Zoho.Crm.API;
using Com.Zoho.Crm.API.Attachments;
using Com.Zoho.Crm.API.Users;
using Com.Zoho.Crm.API.Util;
using Newtonsoft.Json;
using static Com.Zoho.Crm.API.Attachments.AttachmentsOperations;
using Info = Com.Zoho.Crm.API.Record.Info;
namespace Com.Zoho.Crm.Sample.Attachments
{
public class Attachment
{
///
/// This method is used to upload an attachment to a single record of a module with ID and print the response.
///
/// The API Name of the record's module
/// The ID of the record to upload attachment
/// The absolute file path of the file to be attached
public static void UploadAttachments (string moduleAPIName, long recordId, string absoluteFilePath)
{
//example
//string moduleAPIName = "Leads";
//long recordId = 3477061000005177002;
//string absoluteFilePath = "/Users/use_name/Desktop/image.png";
//Get instance of AttachmentsOperations Class that takes moduleAPIName and recordId as parameter
AttachmentsOperations attachmentsOperations = new AttachmentsOperations(moduleAPIName, recordId);
//Get instance of FileBodyWrapper class that will contain the request file
API.Attachments.FileBodyWrapper fileBodyWrapper = new API.Attachments.FileBodyWrapper();
//Get instance of StreamWrapper class that takes absolute path of the file to be attached as parameter
StreamWrapper streamWrapper = new StreamWrapper (absoluteFilePath);
//Set file to the FileBodyWrapper instance
fileBodyWrapper.File = streamWrapper;
//Call UploadAttachment method that takes FileBodyWrapper instance as parameter
APIResponse<API.Attachments.ActionHandler> response = attachmentsOperations.UploadAttachment (fileBodyWrapper);
if (response != null)
{
//Get the status code from response
Console.WriteLine ("Status Code: " + response.StatusCode);
//Check if expected response is received
if (response.IsExpected)
{
//Get object from response
API.Attachments.ActionHandler actionHandler = response.Object;
if (actionHandler is API.Attachments.ActionWrapper)
{
//Get the received ActionWrapper instance
API.Attachments.ActionWrapper actionWrapper = (API.Attachments.ActionWrapper) actionHandler;
//Get the list of obtained action responses
List actionResponses = actionWrapper.Data;
foreach (API.Attachments.ActionResponse actionResponse in actionResponses)
{
//Check if the request is successful
if (actionResponse is API.Attachments.SuccessResponse)
{
//Get the received SuccessResponse instance
API.Attachments.SuccessResponse successResponse = (API.Attachments.SuccessResponse) actionResponse;
//Get the Status
Console.WriteLine ("Status: " + successResponse.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + successResponse.Code.Value);
Console.WriteLine ("Details: ");
if (successResponse.Details != null)
{
//Get the details map
foreach (KeyValuePair entry in successResponse.Details)
{
//Get each value in the map
Console.WriteLine (entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
}
//Get the Message
Console.WriteLine ("Message: " + successResponse.Message.Value);
}
//Check if the request returned an exception
else if (actionResponse is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) actionResponse;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
if (exception.Details != null)
{
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine (entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
}
//Check if the request returned an exception
else if (actionHandler is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) actionHandler;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
if (exception.Details != null)
{
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine (entry.Key + ": " + JsonConvert.SerializeObject(entry.Value));
}
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
else
{ //If response is not as expected
//Get model object from response
Model responseObject = response.Model;
//Get the response object's class
Type type = responseObject.GetType();
//Get all declared fields of the response class
Console.WriteLine("Type is: {0}", type.Name);
PropertyInfo[] props = type.GetProperties();
Console.WriteLine("Properties (N = {0}):", props.Length);
foreach (var prop in props)
{
if (prop.GetIndexParameters().Length == 0)
{
Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject));
}
else
{
Console.WriteLine("{0} ({1}) : ", prop.Name, prop.PropertyType.Name);
}
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Com.Zoho.Crm.API;
using Com.Zoho.Crm.API.Attachments;
using Com.Zoho.Crm.API.Users;
using Com.Zoho.Crm.API.Util;
using Newtonsoft.Json;
using static Com.Zoho.Crm.API.Attachments.AttachmentsOperations;
using Info = Com.Zoho.Crm.API.Record.Info;
namespace Com.Zoho.Crm.Sample.Attachments
{
public class Attachment
{
///
/// This method is used to Delete attachments to a single record of a module with ID and print the response.
///
/// The API Name of the record's module
/// The ID of the record to delete attachment
/// The List of attachment IDs to be deleted
public static void DeleteAttachments (string moduleAPIName, long recordId, List attachmentIds)
{
//example
//string moduleAPIName = "Leads";
//long recordId = 3477061000005177002;
//List attachmentIds = new List() { 3477061000005979001, 3477061000005968003, 3477061000005961010 };
//Get instance of AttachmentsOperations Class that takes moduleAPIName and recordId as parameter
AttachmentsOperations attachmentsOperations = new AttachmentsOperations(moduleAPIName, recordId);
//Get instance of ParameterMap Class
ParameterMap paramInstance = new ParameterMap();
foreach (long attachmentId in attachmentIds)
{
paramInstance.Add(DeleteAttachmentsParam.IDS, attachmentId);
}
//Call DeleteAttachments method that takes paramInstance as parameter
APIResponse<API.Attachments.ActionHandler> response = attachmentsOperations.DeleteAttachments (paramInstance);
if (response != null)
{
//Get the status code from response
Console.WriteLine ("Status Code: " + response.StatusCode);
//Check if expected response is received
if (response.IsExpected)
{
//Get object from response
API.Attachments.ActionHandler actionHandler = response.Object;
if (actionHandler is API.Attachments.ActionWrapper)
{
//Get the received ActionWrapper instance
API.Attachments.ActionWrapper actionWrapper = (API.Attachments.ActionWrapper) actionHandler;
//Get the list of obtained Attachment Record instances
List actionResponses = actionWrapper.Data;
foreach (API.Attachments.ActionResponse actionResponse in actionResponses)
{
//Check if the request is successful
if (actionResponse is API.Attachments.SuccessResponse)
{
//Get the received SuccessResponse instance
API.Attachments.SuccessResponse successResponse = (API.Attachments.SuccessResponse) actionResponse;
//Get the Status
Console.WriteLine ("Status: " + successResponse.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + successResponse.Code.Value);
Console.WriteLine ("Details: ");
if (successResponse.Details != null)
{
//Get the details map
foreach (KeyValuePair entry in successResponse.Details)
{
//Get each value in the map
Console.WriteLine (entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
}
//Get the Message
Console.WriteLine ("Message: " + successResponse.Message.Value);
}
//Check if the request returned an exception
else if (actionResponse is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) actionResponse;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine (entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
}
//Check if the request returned an exception
else if (actionHandler is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) actionHandler;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine (entry.Key + ": " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
else
{ //If response is not as expected
//Get model object from response
Model responseObject = response.Model;
//Get the response object's class
Type type = responseObject.GetType();
//Get all declared fields of the response class
Console.WriteLine("Type is: {0}", type.Name);
PropertyInfo[] props = type.GetProperties();
Console.WriteLine("Properties (N = {0}):", props.Length);
foreach (var prop in props)
{
if (prop.GetIndexParameters().Length == 0)
{
Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject));
}
else
{
Console.WriteLine("{0} ({1}) : ", prop.Name, prop.PropertyType.Name);
}
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Com.Zoho.Crm.API;
using Com.Zoho.Crm.API.Attachments;
using Com.Zoho.Crm.API.Users;
using Com.Zoho.Crm.API.Util;
using Newtonsoft.Json;
using static Com.Zoho.Crm.API.Attachments.AttachmentsOperations;
using Info = Com.Zoho.Crm.API.Record.Info;
namespace Com.Zoho.Crm.Sample.Attachments
{
public class Attachment
{
///
/// This method is used to download an attachment of a single record of a module with ID and attachment ID and write the file in the specified destination.
///
/// The API Name of the record's module
/// The ID of the record to download attachment
/// The ID of the attachment to be downloaded
/// The absolute path of the destination folder to store the attachment
public static void DownloadAttachment (string moduleAPIName, long recordId, long attachmentId, string destinationFolder)
{
//example
//string moduleAPIName = "Leads";
//long recordId = 3477061000005177002;
//long attachmentId = 3477061000005177023;
//string destinationFolder = "/Users/user_name/Desktop";
//Get instance of AttachmentsOperations Class that takes moduleAPIName and recordId as parameter
AttachmentsOperations attachmentsOperations = new AttachmentsOperations(moduleAPIName, recordId);
//Call DownloadAttachment method that takes attachmentId as parameters
APIResponse<API.Attachments.ResponseHandler> response = attachmentsOperations.DownloadAttachment (attachmentId);
if (response != null)
{
//Get the status code from response
Console.WriteLine ("Status Code : " + response.StatusCode);
if (response.StatusCode == 204)
{
Console.WriteLine ("No Content");
return;
}
//Check if expected response is received
if (response.IsExpected)
{
//Get object from response
API.Attachments.ResponseHandler responseHandler = response.Object;
if (responseHandler is API.Attachments.FileBodyWrapper)
{
//Get the received FileBodyWrapper instance
API.Attachments.FileBodyWrapper fileBodyWrapper = (API.Attachments.FileBodyWrapper) responseHandler;
//Get StreamWrapper instance from the returned FileBodyWrapper instance
StreamWrapper streamWrapper = fileBodyWrapper.File;
//Get Stream from the response
Stream file = streamWrapper.Stream;
string fullFilePath = Path.Combine(destinationFolder, streamWrapper.Name);
using (FileStream outputFileStream = new FileStream(fullFilePath, FileMode.Create))
{
file.CopyTo(outputFileStream);
}
}
//Check if the request returned an exception
else if (responseHandler is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) responseHandler;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine(entry.Key + ": " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
else
{ //If response is not as expected
//Get model object from response
Model responseObject = response.Model;
//Get the response object's class
Type type = responseObject.GetType();
//Get all declared fields of the response class
Console.WriteLine("Type is: {0}", type.Name);
PropertyInfo[] props = type.GetProperties();
Console.WriteLine("Properties (N = {0}):", props.Length);
foreach (var prop in props)
{
if (prop.GetIndexParameters().Length == 0)
{
Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject));
}
else
{
Console.WriteLine("{0} ({1}) : ", prop.Name, prop.PropertyType.Name);
}
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Com.Zoho.Crm.API;
using Com.Zoho.Crm.API.Attachments;
using Com.Zoho.Crm.API.Users;
using Com.Zoho.Crm.API.Util;
using Newtonsoft.Json;
using static Com.Zoho.Crm.API.Attachments.AttachmentsOperations;
using Info = Com.Zoho.Crm.API.Record.Info;
namespace Com.Zoho.Crm.Sample.Attachments
{
public class Attachment
{
///
/// This method is used to delete an attachment to a single record of a module with ID and print the response.
///
/// The API Name of the record's module
/// The ID of the record to delete attachment
/// The ID of the attachment to be deleted
public static void DeleteAttachment (string moduleAPIName, long recordId, long attachmentId)
{
//example
//string moduleAPIName = "Leads";
//long recordId = 3477061000005177002;
//long attachmentId = "3477061000005177002";
//Get instance of AttachmentsOperations Class that takes moduleAPIName and recordId as parameter
AttachmentsOperations attachmentsOperations = new AttachmentsOperations(moduleAPIName, recordId);
//Call deleteAttachment method that takes attachmentId as parameter
APIResponse<API.Attachments.ActionHandler> response = attachmentsOperations.DeleteAttachment (attachmentId);
if (response != null)
{
//Get the status code from response
Console.WriteLine ("Status Code: " + response.StatusCode);
//Check if expected response is received
if (response.IsExpected)
{
//Get object from response
API.Attachments.ActionHandler actionHandler = response.Object;
if (actionHandler is API.Attachments.ActionWrapper)
{
//Get the received ActionWrapper instance
API.Attachments.ActionWrapper actionWrapper = (API.Attachments.ActionWrapper) actionHandler;
//Get the list of obtained Action Response instances
List<API.Attachments.ActionResponse> actionResponses = actionWrapper.Data;
foreach (API.Attachments.ActionResponse actionResponse in actionResponses)
{
//Check if the request is successful
if (actionResponse is API.Attachments.SuccessResponse)
{
//Get the received SuccessResponse instance
API.Attachments.SuccessResponse successResponse = (API.Attachments.SuccessResponse) actionResponse;
//Get the Status
Console.WriteLine ("Status: " + successResponse.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + successResponse.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in successResponse.Details)
{
//Get each value in the map
Console.WriteLine (entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + successResponse.Message.Value);
}
//Check if the request returned an exception
else if (actionResponse is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) actionResponse;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
}
//Check if the request returned an exception
else if (actionHandler is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) actionHandler;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
else
{ //If response is not as expected
//Get model object from response
Model responseObject = response.Model;
//Get the response object's class
Type type = responseObject.GetType();
//Get all declared fields of the response class
Console.WriteLine("Type is: {0}", type.Name);
PropertyInfo[] props = type.GetProperties();
Console.WriteLine("Properties (N = {0}):", props.Length);
foreach (var prop in props)
{
if (prop.GetIndexParameters().Length == 0)
{
Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject));
}
else
{
Console.WriteLine("{0} ({1}) : ", prop.Name, prop.PropertyType.Name);
}
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Com.Zoho.Crm.API;
using Com.Zoho.Crm.API.Attachments;
using Com.Zoho.Crm.API.Users;
using Com.Zoho.Crm.API.Util;
using Newtonsoft.Json;
using static Com.Zoho.Crm.API.Attachments.AttachmentsOperations;
using Info = Com.Zoho.Crm.API.Record.Info;
namespace Com.Zoho.Crm.Sample.Attachments
{
public class Attachment
{
///
/// This method is used to upload link attachment to a single record of a module with ID and print the response.
///
/// The API Name of the record's module
/// The ID of the record to upload Link attachment
/// The attachmentURL of the doc or image link to be attached
public static void UploadLinkAttachments (string moduleAPIName, long recordId, string attachmentURL)
{
//example
//string moduleAPIName = "Leads";
//long recordId = 3477061000005177002;
//string attachmentURL = "https://5.imimg.com/data5/KJ/UP/MY-8655440/zoho-crm-500x500.png";
//Get instance of AttachmentsOperations Class that takes moduleAPIName and recordId as parameter
AttachmentsOperations attachmentsOperations = new AttachmentsOperations(moduleAPIName, recordId);
//Get instance of ParameterMap Class
ParameterMap paramInstance = new ParameterMap();
paramInstance.Add(UploadLinkAttachmentParam.ATTACHMENTURL, attachmentURL);
//Call UploadLinkAttachment method that takes paramInstance as parameter
APIResponse<API.Attachments.ActionHandler> response = attachmentsOperations.UploadLinkAttachment (paramInstance);
if (response != null)
{
//Get the status code from response
Console.WriteLine ("Status Code: " + response.StatusCode);
//Check if expected response is received
if (response.IsExpected)
{
//Get object from response
API.Attachments.ActionHandler actionHandler = response.Object;
if (actionHandler is API.Attachments.ActionWrapper)
{
//Get the received ActionWrapper instance
API.Attachments.ActionWrapper actionWrapper = (API.Attachments.ActionWrapper) actionHandler;
//Get the list of obtained Action Response instances
List<API.Attachments.ActionResponse> actionResponses = actionWrapper.Data;
foreach (API.Attachments.ActionResponse actionResponse in actionResponses)
{
//Check if the request is successful
if (actionResponse is API.Attachments.SuccessResponse)
{
//Get the received SuccessResponse instance
API.Attachments.SuccessResponse successResponse = (API.Attachments.SuccessResponse) actionResponse;
//Get the Status
Console.WriteLine ("Status: " + successResponse.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + successResponse.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in successResponse.Details)
{
//Get each value in the map
Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + successResponse.Message.Value);
}
//Check if the request returned an exception
else if (actionResponse is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) actionResponse;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
}
//Check if the request returned an exception
else if (actionHandler is API.Attachments.APIException)
{
//Get the received APIException instance
API.Attachments.APIException exception = (API.Attachments.APIException) actionHandler;
//Get the Status
Console.WriteLine ("Status: " + exception.Status.Value);
//Get the Code
Console.WriteLine ("Code: " + exception.Code.Value);
Console.WriteLine ("Details: ");
//Get the details map
foreach (KeyValuePair entry in exception.Details)
{
//Get each value in the map
Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value));
}
//Get the Message
Console.WriteLine ("Message: " + exception.Message.Value);
}
}
else
{ //If response is not as expected
//Get model object from response
Model responseObject = response.Model;
//Get the response object's class
Type type = responseObject.GetType();
//Get all declared fields of the response class
Console.WriteLine("Type is: {0}", type.Name);
PropertyInfo[] props = type.GetProperties();
Console.WriteLine("Properties (N = {0}):", props.Length);
foreach (var prop in props)
{
if (prop.GetIndexParameters().Length == 0)
{
Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject));
}
else
{
Console.WriteLine("{0} ({1}) : ", prop.Name, prop.PropertyType.Name);
}
}
}
}
}
}
}