Documentation Index
Fetch the complete documentation index at: https://developer.box.com/llms.txt
Use this file to discover all available pages before exploring further.
The DocGenToolkit class provides a comprehensive interface for Box Document Generation operations within the Salesforce managed package. This class handles document generation requests, template management, and batch processing for creating documents from templates.
Class signature
Global with sharing class DocGenToolkit
Constructor
Default constructor for creating a new instance of the DocGenToolkit.
DocGenToolkit toolkit = new DocGenToolkit();
Document generation methods
submitDocGenBatch
Submits a document generation batch request to Box.
| Parameter | Type | Description |
|---|
docGenRequest | DocGenRequest | The request object containing all necessary parameters for doc generation. |
Returns:
DocGenResponse - The response containing batch information and status.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
DocGenRequest request = new DocGenRequest();
request.file.Id = '123456789';
request.destination_Folder.Id = '987654321';
request.output_type = 'pdf';
DocGenResponse response = toolkit.submitDocGenBatch(request);
System.debug('Batch ID: ' + response.id);
GenerateDocGenForRecords with template code
Generates documents for multiple records using a template by ID and template code.
| Parameter | Type | Description |
|---|
recordIds | List<String> | List of Salesforce record IDs to generate docs for. |
templateId | String | The ID of the DocGen_Template__c record. |
templateCode | String | The code identifier for the template. |
Returns:
List<DocGenResponse> - List of responses for each document generation request.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
List<String> recordIds = new List<String>{'001XXXXXXXXXXXXXXX', '001YYYYYYYYYYYYYYY'};
String templateId = 'a0XXXXXXXXXXXXXXX';
String templateCode = 'INVOICE_TEMPLATE';
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId, templateCode);
for (DocGenResponse response : responses) {
System.debug('Generated document: ' + response.id);
}
GenerateDocGenForRecords
Generates documents for multiple records using a template by ID only.
| Parameter | Type | Description |
|---|
recordIds | List<String> | List of Salesforce record IDs to generate docs for. |
templateId | String | The ID of the DocGen_Template__c record. |
Returns:
List<DocGenResponse> - List of responses for each document generation request.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
List<String> recordIds = new List<String>{'001XXXXXXXXXXXXXXX'};
String templateId = 'a0XXXXXXXXXXXXXXX';
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId);
System.debug('Generated ' + responses.size() + ' documents');
GenerateDocGenForRecords with folder override
Generates documents for multiple records with an optional folder override.
| Parameter | Type | Description |
|---|
recordIds | List<String> | List of Salesforce record IDs to generate docs for. |
templateId | String | The ID of the DocGen_Template__c record. Can be null if templateCode is provided. |
templateCode | String | The code identifier for the template. Can be null if templateId is provided. |
folderIdOverride | String | Optional folder ID to override the default destination folder. |
Returns:
List<DocGenResponse> - List of responses for each document generation request.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
List<String> recordIds = new List<String>{'001XXXXXXXXXXXXXXX', '001YYYYYYYYYYYYYYY'};
String templateId = 'a0XXXXXXXXXXXXXXX';
String folderOverride = '123456789';
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId, null, folderOverride);
for (DocGenResponse response : responses) {
System.debug('Document generated in folder: ' + response.id);
}
Utility methods
generateFileName
Generates a file name by replacing template variables with actual data values.
| Parameter | Type | Description |
|---|
fileName | String | The template file name containing variables in {{field.subfield}} format. |
data | Map<String, Object> | Map containing the data to substitute into the file name. |
Returns:
String - The generated file name with variables replaced.
Template variable format:
- Use
{{Object.Field}} syntax to reference Salesforce object fields.
- Supports nested object references like
{{Account.Name}}.
Example:
String templateFileName = 'Invoice_{{Account.Name}}_{{Opportunity.StageName}}.pdf';
Map<String, Object> data = new Map<String, Object>{
'Account' => new Map<String, Object>{'Name' => 'Acme Corp'},
'Opportunity' => new Map<String, Object>{'StageName' => 'Closed Won'}
};
String generatedFileName = DocGenToolkit.generateFileName(templateFileName, data);
// Result: 'Invoice_Acme Corp_Closed Won.pdf'
Batch management methods
getDocGenBatch
Retrieves information about a document generation batch by its ID.
| Parameter | Type | Description |
|---|
batchId | String | The ID of the batch to retrieve info for. |
Returns:
DocGenResponse - The response containing batch status and details.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
String batchId = 'batch_123456789';
DocGenResponse batchInfo = toolkit.getDocGenBatch(batchId);
System.debug('Batch status: ' + batchInfo.status);
System.debug('Total documents: ' + batchInfo.total_count);
getDocGenBatchByURL
Retrieves document generation batch information by URL endpoint.
| Parameter | Type | Description |
|---|
endpoint | String | The URL endpoint to retrieve batch information from. |
Returns:
DocGenResponse - The response containing batch information.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
String endpoint = 'https://api.box.com/2.0/document_generation_batches/batch_123456789';
DocGenResponse batchInfo = toolkit.getDocGenBatchByURL(endpoint);
System.debug('Batch status: ' + batchInfo.status);
Template management methods
createTemplate from file ID
Creates a template from a Box file by its ID.
| Parameter | Type | Description |
|---|
fileId | String | The Box file ID to mark as a template. |
Returns:
DocGenTemplateResponse - The response containing template information.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
String fileId = '123456789';
DocGenTemplateResponse templateResponse = toolkit.createTemplate(fileId);
System.debug('Template created with ID: ' + templateResponse.id);
createTemplate from request object
Creates a template from a Box file using a custom template request.
| Parameter | Type | Description |
|---|
templateRequest | DocGenTemplateRequest | The request object containing template configuration. |
Returns:
DocGenTemplateResponse - The response containing template information.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
DocGenTemplateRequest request = new DocGenTemplateRequest('123456789');
request.name = 'Invoice Template';
request.description = 'Template for generating invoices';
DocGenTemplateResponse response = toolkit.createTemplate(request);
System.debug('Template created: ' + response.id);
deleteTemplate
Deletes a template from Box by its file ID.
| Parameter | Type | Description |
|---|
fileId | String | The Box file ID of the template to delete. |
Returns:
DocGenTemplateResponse - The response confirming the deletion.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
String fileId = '123456789';
DocGenTemplateResponse response = toolkit.deleteTemplate(fileId);
System.debug('Template deleted successfully');
getJobsForTemplate
Retrieves all jobs associated with a template record.
| Parameter | Type | Description |
|---|
templateRecordId | Id | The Salesforce ID of the DocGen_Template__c record. |
Returns:
DocGenResponse - The response containing job information for the template.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
Id templateRecordId = 'a0XXXXXXXXXXXXXXX';
DocGenResponse jobsResponse = toolkit.getJobsForTemplate(templateRecordId);
System.debug('Found ' + jobsResponse.total_count + ' jobs for template');
Tag management methods
Retrieves available tags for a template by its ID.
| Parameter | Type | Description |
|---|
templateId | String | The Box template ID to get tags for. |
Returns:
DocGenTagsResponse - The response containing available tags.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
String templateId = 'template_123456789';
DocGenTagsResponse tagsResponse = toolkit.getTags(templateId);
System.debug('Available tags: ' + tagsResponse.tags);
Retrieves available tags for a template by URL endpoint.
| Parameter | Type | Description |
|---|
endpoint | String | The URL endpoint to retrieve tags from. |
Returns:
DocGenTagsResponse - The response containing available tags.
Example:
DocGenToolkit toolkit = new DocGenToolkit();
String endpoint = 'https://api.box.com/2.0/document_generation_templates/template_123456789/tags';
DocGenTagsResponse tagsResponse = toolkit.getTagsByURL(endpoint);
System.debug('Available tags: ' + tagsResponse.tags);
Common usage patterns
Basic document generation
// Initialize the toolkit
DocGenToolkit toolkit = new DocGenToolkit();
// Generate documents for multiple records
List<String> recordIds = new List<String>{'001XXXXXXXXXXXXXXX', '001YYYYYYYYYYYYYYY'};
String templateId = 'a0XXXXXXXXXXXXXXX';
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId);
// Process the responses
for (DocGenResponse response : responses) {
if (response.status == 'success') {
System.debug('Document generated successfully: ' + response.id);
} else {
System.debug('Document generation failed: ' + response.error);
}
}
Template creation and management
DocGenToolkit toolkit = new DocGenToolkit();
// Create a template
String fileId = '123456789';
DocGenTemplateResponse templateResponse = toolkit.createTemplate(fileId);
// Get jobs for the template
Id templateRecordId = 'a0XXXXXXXXXXXXXXX';
DocGenResponse jobsResponse = toolkit.getJobsForTemplate(templateRecordId);
// Delete the template when no longer needed
DocGenTemplateResponse deleteResponse = toolkit.deleteTemplate(fileId);
Batch monitoring
DocGenToolkit toolkit = new DocGenToolkit();
// Submit a batch
DocGenRequest request = new DocGenRequest();
// ... configure request ...
DocGenResponse response = toolkit.submitDocGenBatch(request);
// Monitor the batch
String batchId = response.id;
DocGenResponse batchInfo = toolkit.getDocGenBatch(batchId);
// Check status
if (batchInfo.status == 'completed') {
System.debug('Batch completed successfully');
} else if (batchInfo.status == 'failed') {
System.debug('Batch failed: ' + batchInfo.error);
}
Error handling
When using the DocGenToolkit, handle potential errors as shown below:
try {
DocGenToolkit toolkit = new DocGenToolkit();
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId);
for (DocGenResponse response : responses) {
if (response.error != null) {
System.debug('Error: ' + response.error);
}
}
} catch (Exception e) {
System.debug('Exception occurred: ' + e.getMessage());
}
DocGenRequest - Request object for document generation.
DocGenResponse - Response object containing batch information.
DocGenTemplateRequest - Request object for template creation.
DocGenTemplateResponse - Response object for template operations.
DocGenTagsResponse - Response object for tag operations.
DocGen_Template__c - Custom object for storing template metadata.