Merge and Deliver via Webhook
Purpose
This API is used to deliver the merge documents via Webhook for custom handling by consumers.
HTTP Request URL
https://{zohoapis_domain}/writer/api/v1/documents/{{document_id}}/merge/webhook
Path Parameters
Parameter | Data Type | Description |
Mandatory Parameters | ||
document_id | String | Specify a unique id for the writer document. |
Body Parameters
Parameter | Data Type | Description |
Mandatory Parameters | ||
output_format | String | Supported formats are pdf, pdfform and docx. Specify a format in which you would like to download the merged document. |
webhook | { "invoke_url" : <url>, "invoke_period": "oneveryrecord/oncomplete" } | Pass the values for invoke_url and invoke_period via this parameter as JSON. Provide the webhook url in which the merged documents needs to be posted in invoke_url and when the merged documents needs to be posted in invoke_period. |
merge_to | String | Supported merge types are separatedoc and singledoc. 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. |
You can provide the data in any one of the below formats | ||
merge_data | JSONObject | Pass a String value through 'data' key as JSON Array. |
merge_data_csv_content | File | Provide the required csv content in your API request body. |
merge_data_json_content | File | Provide the required json content in your API request body. |
merge_data_csv_url | url | Provide the required csv url in your API request body. |
merge_data_json_url | url | Provide the required json url in your API request body. |
record_id | String | Instead of using merge_data, you can pass the record_id and we will fetch the data internally. Note: This is applicable only for Zoho CRM, Creator, Recruit and Bigin templates. Maximum length allowed: 25 |
Optional Parameters | ||
password | String | Specify a password if you would like to protect the merged document. |
test_mode | Boolean (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. |
webhook
Parameter | Type | Possible Values | Default Value |
invoke_url | string | URL | URL |
invoke_period | string | oncomplete and oneveryrecord. oncomplete - If you would like to post the merged documents after merging all the records. oneveryrecord - If you would like to post the merged document of each record once done. | oncomplete |
Note: This API is subject to throttle limits. For details on the applicable rate limits, please refer to this help link.
Sample Response
Copied
Callback Response:
Option 1: oneveryrecord
If the 'invoke_period' key inside the 'webhook' parameter is set to "oneveryrecord", we will process each record individually, generate a merged PDF for each, and trigger the webhook callback immediately with the respective PDF.
Note: For this flow, only the "separatedoc" option is supported for the 'merge_to' parameter, as each record is processed and sent separately. The "singledoc" option is not applicable in this case.
Copied
Option 2: oncomplete
If the 'invoke_period' key under the 'webhook' parameter is set to "oncomplete", we will initiate PDF generation for all records in parallel and trigger the webhook callback only after the PDF generation for all records is complete.
Note: This flow supports the following 'merge_to' options:
- separatedoc – A separate PDF is generated for each record and all files are sent in a single webhook callback. Each file can be identified using the 'attachment_name' field in the response data.
Important: For a large number of input records (more than 10), the response body size can become large. In such cases, we split the output into batches of 10 records and invoke the webhook callback multiple times in a loop until all records are processed. - singledoc – All merged PDFs are combined into a single PDF file, which is then sent via a single webhook callback.
Copied