Skip to main content

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

DocGenToolkit()

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.
ParameterTypeDescription
docGenRequestDocGenRequestThe 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.
ParameterTypeDescription
recordIdsList<String>List of Salesforce record IDs to generate docs for.
templateIdStringThe ID of the DocGen_Template__c record.
templateCodeStringThe 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.
ParameterTypeDescription
recordIdsList<String>List of Salesforce record IDs to generate docs for.
templateIdStringThe 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.
ParameterTypeDescription
recordIdsList<String>List of Salesforce record IDs to generate docs for.
templateIdStringThe ID of the DocGen_Template__c record. Can be null if templateCode is provided.
templateCodeStringThe code identifier for the template. Can be null if templateId is provided.
folderIdOverrideStringOptional 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.
ParameterTypeDescription
fileNameStringThe template file name containing variables in {{field.subfield}} format.
dataMap<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.
ParameterTypeDescription
batchIdStringThe 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.
ParameterTypeDescription
endpointStringThe 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.
ParameterTypeDescription
fileIdStringThe 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.
ParameterTypeDescription
templateRequestDocGenTemplateRequestThe 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.
ParameterTypeDescription
fileIdStringThe 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.
ParameterTypeDescription
templateRecordIdIdThe 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

getTags

Retrieves available tags for a template by its ID.
ParameterTypeDescription
templateIdStringThe 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);

getTagsByURL

Retrieves available tags for a template by URL endpoint.
ParameterTypeDescription
endpointStringThe 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.