Merge and Store V2

Purpose

Using this API, you will be able to store the merged document inside Zoho Workdrive.

In Merge and Store V1 API, the response will be returned along with the RID only after the merge is completed. In Deluge Script, the maximum timeout will be 40 secs. In some cases, the merge operation will exceed 40 secs which fails the DRE workflow.

To overcome this problem, we have introduced Merge and Store V2 API . In which, the response will be returned immediately along with a virtual RID and merge operation will be scheduled in the backend to store the merged document in the virtual RID. User can use this virtual RID and proceed with their workflow. Until the scheduled merge operation is completed, the virtual RID will be provided with the temporary content.

To track the merge status, you can either make use of the ‘merge_report_data_url’ or ‘merge_report_url’ generated in the response.

HTTP Request URL

https://{zohoapis_domain}/writer/api/v2/documents/{{document_id}}/merge/store

Path Parameters

ParameterData TypeDescription
Mandatory Parameters
document_idStringSpecify a unique id for the writer document.

Body Parameters

ParameterData TypeDescription
Mandatory Parameters
output_settings

'doc_name': "<new document name>",

'folder_id': "<folder_id>" ,    

'output_format':"<pdf/docx/pdfform>",

'password': "<*****>",    

'overwrite_existing_file': "<true/false>",

'merge_to':"<separatedoc/singledoc>

}

 

Pass the values for 'doc_name' and 'folder_id' via this parameter as JSON.

 

doc_name -> Specify the name for the merged document.

 

folder_id -> Specify the id of the folder in which you would like to store the merged document.

 

output_format (optional) -> Supported formats are pdf, pdfform and docx

Specify a format in which you would like to store the merged document.

 

If this key is not passed, the merged documents will get stored in Writer format (zdoc) by default.

 

password (optional) -> Specify a password if you would like to protect the merged document. This param is applicable only for pdf and docx documents.

 

overwrite_existing_file (optional) -> Use this param, if you wish to replace an existing file stored in Zoho WorkDrive with the merged document.

 

merge_to (optional) -> Specify in which type you would like to merge the document.

 

separatedoc - If you would like to merge each record as a separate document.

 

singledoc- If you would like to merge all the records as a single document.

 

Note: By default, we will consider separatedoc merge type.

You can provide the data in any one of the below formats
merge_dataJSONObjectPass a String value through 'data' key as JSON Array.
merge_data_csv_contentFileProvide the required csv content in your API request body.
merge_data_json_contentFileProvide the required json content in your API request body.
merge_data_csv_urlurlProvide the required csv url in your API request body.
merge_data_json_url urlProvide the required json url in your API request body.
Optional Parameters
sign_service_nameString

This param needs to be configured when you would like to upload the merged document with signer fields to a third party sign service.

 

Possible values: adobesign and docusign

 

Note: This param can be used only when the 'output_format' key value inside 'output_settings' param is configured as pdf.

test_modeBoolean (true/false)

Using this param, you can test the Merge APIs without consuming any credit points. The output file will contain a watermark as it is used only for testing purpose.

 

Test mode limit: 50 merges/day for an org.

Note:

  • To use this API, an OAuth token should be generated with the following scopes: ZohoWriter.documentEditor.ALLZohoWriter.merge.ALL and WorkDrive.Files.ALL
  • We have also provided an option to configure the values for all the above parameters while creating the document itself.
  • If you have saved the merge settings earlier by configuring the parameter values, then we will get those values (by default) if you miss to pass the parameters while sending the API request.

Sample Request

Copiedcurl --location --request POST "https://www.zohoapis.com/writer/api/v2/documents/ponazfea04477109f4681a831e7177d96bc40/merge/store" \
  --header "Authorization: Zoho-oauthtoken xxx.yyy.zzz" \
  --form "output_settings={\"doc_name\":\"New Document\",\"folder_id\":\"azfa093747109f4681\"}" \
  --form "merge_data={\"data\":[{\"name\":\"Amelia\",\"email\":\"amelia@zylker.com\"},{\"name\":\"John\",\"email\":\"john@zylker.com\"}]}"
Copieddocument_id = "fbsa6360a78f53f564dfa9b4a1e79febed569";
fieldInfo =  invokeurl
[
url: "https://www.zohoapis.com/writer/api/v2/documents/fbsa6360a78f53f564dfa9b4a1e79febed569/fields"
type: GET
connection:"<connection_name>"
];
fieldsList =  fieldInfo.get("fields");
datamap = map();
for each field in fieldsList
{
 info field;
}
datamap.put("Name", "Ms.Amelia");
datamap.put("Tamil", "S");
datamap.put("English", "A");
datamap.put("Maths", "A");
datamap.put("Remark", "Good");
outputsettings = Map();
outputsettings.put("doc_name","Student Grade");
outputsettings.put("folder_id","bsa6360a78f53f***");    //Workdrive Folder ID  //optional
outputsettings.put("output_format","pdf");     //<docx/pdfform/pdf>  //optional
outputsettings.put("password","*****");     //optional
outputsettings.put("overwrite_existing_file","true");     //<true/false>  //optional
param = map();
param.put("merge_data",{"data":datamap});
param.put("output_settings",outputsettings);
response = invokeurl
[
url: "https://www.zohoapis.com/writer/api/v2/documents/fbsa6360a78f53f564dfa9b4a1e79febed569/merge/store"
type: POST
parameters: param
connection:"<connection_name>"
];

Sample Response

Copied{
    "merge_report_data_url": "<url>",
    "merge_report_url": "<url>",
    "records": [
        {
            "data": [{“given input merge_data”}],
            "download_link": "<attachment download url>",
            "document_id": "<merged doc id>",
            "document_url": "<merged doc open url>",
            "status": "inprogress"
        }
    ],
    "status": "inprogress"
}

When you invoke the 'merge_report_data_url', you will receive the below response;

// If 'merge_to' = "separatedoc"
{
    "records": [
        {
            "download_link": “{url}“,
            "data": {
                            "name": “Amelia”,
                            “email”: “amelia@zylker.com”
                        },
            "document_id": "ponazfea04477109f4681a831e7177d96bc40",
            "document_url": "http://writer.zoho.com/writer/open/ponazfea04477109f4681a831e7177d96bc40",
            "status": "inprogress"
        },
        {
            "download_link": “{url}“,
            "data": {
                            "name": “John”,
                             “email”: “john@zylker.com”
                        },
            "document_id": "ponazfea04477109f4681a831e7177d96bc40",
            "document_url": "http://writer.zoho.com/writer/open/ponazfea04477109f4681a831e7177d96bc40",
            "status": "inprogress"
        }
      ],
    "status": "inprogress"
}

// If 'merge_to' = "singledoc"
{
    "records": [
        {
            "download_link": “{url}“,
            "data": [
                     {
                            “name": “Amelia”,
                            “email”: “amelia@zylker.com”
                     },
                     {
                            “name": “John”,
                            “email”: “john@zylker.com”
                    }
              ],
            "document_id": "ponazfea04477109f4681a831e7177d96bc40",
            "document_url": "http://writer.zoho.com/writer/open/ponazfea04477109f4681a831e7177d96bc40",
            "status": "inprogress"
        }
    ],
    "status": "inprogress"
}