public with sharing class TestDocumentWorkflow { public void testDocumentWorkflow(){ //create package with document workflow ESignLiveSDK sdk = new ESignLiveSDK(); ESignLiveAPIObjects.Package_x pkg = new ESignLiveAPIObjects.Package_x(); pkg.name = 'Test Document Workflow - ' + Datetime.now().format(); String packageId = sdk.createPackage(pkg); System.debug('package id: ' + packageId); String document1Id = 'document1'; StaticResource sr1 = [SELECT Id, Body FROM StaticResource WHERE Name = 'testdoc1' LIMIT 1]; Map doc1 = new Map(); doc1.put(document1Id, sr1.Body); ESignLiveAPIObjects.Document document1 = new ESignLiveAPIObjects.Document(); document1.name = document1Id; document1.id = document1Id; document1.index = 1; sdk.createDocuments(packageId, document1, doc1); String document2Id = 'document2'; StaticResource sr2 = [SELECT Id, Body FROM StaticResource WHERE Name = 'testdoc2' LIMIT 1]; Map doc2 = new Map(); doc2.put(document2Id, sr2.Body); ESignLiveAPIObjects.Document document2 = new ESignLiveAPIObjects.Document(); document2.name = document2Id; document2.id = document2Id; document2.index = 2; sdk.createDocuments(packageId, document2, doc2); //update docuemnt workflow in existing package pkg = sdk.getPackage(packageId); document1 = getDocument(pkg,'document1'); document1.index = 2; document2 = getDocument(pkg,'document2'); document2.index = 1; updateDocuments(packageId, pkg.documents); //check update pkg = sdk.getPackage(packageId); List docs = pkg.documents; for(ESignLiveAPIObjects.Document doc: docs){ System.debug('document id: ' + doc.id + ', index: ' + doc.index); } } public void updateDocuments(String packageId, List documents){ String resourceUrl = '/packages/'+packageId+'/documents'; String requestPayload = JSON.serialize(documents); HttpResponse response = doPut(resourceUrl, requestPayload); // Check response if(response.getStatusCode() != 200) { throw new ESignLiveRESTAPIHelper.ESignLiveRestAPIHelperException('Error update Documents' + response.getStatusCode() + ' - ' + response.getStatus() + ' - ' + response.getBody()); } } public ESignLiveAPIObjects.Document getDocument(ESignLiveAPIObjects.Package_x pkg, String documentName){ List documents = pkg.documents; if(documents == null || documents.size() == 0){ throw new ESignLiveRESTAPIHelper.ESignLiveRestAPIHelperException('No documents in package ' + pkg.id); } for(ESignLiveAPIObjects.Document curDoc: documents){ if(curDoc.name.equals(documentName)){ return curDoc; } } throw new ESignLiveRESTAPIHelper.ESignLiveRestAPIHelperException('Cannot find document with name ' + documentName); } private HttpResponse doPut(String resourceUrl, String requestBody) { e_SignLive_Connection_Settings__c connectionSettings = e_SignLive_Connection_Settings__c.getInstance('Main'); String outboundRequestBody = ESignLiveJSONHelper.prepareOutboundJSON(requestBody); System.debug('=> Put Request Body after cleanup: ' + outboundRequestBody); // Build Request HttpRequest request = new HttpRequest(); request.setEndpoint(connectionSettings.Endpoint__c + resourceUrl); request.setBody(outboundRequestBody); request.setMethod('PUT'); request.setHeader('Authorization', 'Basic ' + connectionSettings.API_Key__c); request.setHeader('Content-type', 'application/json'); request.setHeader('Accept', 'application/json'); // Send Request HttpResponse response = (new Http()).send(request); return response; } }