Loading
API E-Signature

API E-Signature

Vous pouvez utiliser les API de signature électronique indépendamment pour appeler les fonctionnalités Salesforce Contracts sans utiliser l'interface utilisateur. Ces API sont hautement personnalisables. Vous pouvez envoyer un ou plusieurs documents générés pour signature électronique. Vos documents générés peuvent être associés à des objets standard ou personnalisés.

Pour plus d'informations sur les autorisations requises, consultez Ensembles d'autorisations DocuSign.

Pour connaître les limites du gouverneur Apex, consultez Execution Governors and Limits.

Pour plus d'informations sur les API de signature électronique, consultez Ressources de signature électronique.

Méthode Description
getRecipients

Utilisez cette méthode pour afficher la liste des destinataires de documents.

Pour ajouter une logique personnalisée via une classe personnalisée :

  • Créez une classe Apex globale qui implémente ind_docgen_api.OpenInterface.

  • Ajoutez votre logique à la méthode invokeMethod().

  • Ajoutez la classe à votre organisation.

  • Appelez l'API en utilisant le paramètre customClass dans l'URL. Exemple :

    /connect/e-sign/recipients?sourceObjectId=<sourceObjectId>&recipientSelector=<recipientCustomClassName>

Pour personnaliser le renvoi des destinataires, implémentez l'interface ind_docgen_api.OpenInterface dans une classe Apex globale. Voici un exemple d'implémentation qui récupère tous les contacts avec la salutation « Mr. » :

public class GetEsignRecipients implements ind_docgen_api.OpenInterface {

    private static final String ERROR_UNSUPPORTED = 'Unsupported method. Only method [getRecipients] is supported.';
    private static final String ERROR_NO_RECIPIENTS = 'Recipient data not found';

    public Boolean invokeMethod(String methodName, Map<String, Object> inputMap, Map<String, Object> outMap) {
        system.debug(inputMap);
        Boolean success;

        if (methodName == 'getRecipients') {
            success = getRecipients(inputMap, outMap);
        }  else {
            throw new CustomGetRecipientsException(ERROR_UNSUPPORTED);
        }

        System.debug('invokeMethod:outMap -> ' + outMap);
        System.debug('invokeMethod:success -> ' + success);
        return success;
    }

    private Boolean getRecipients(Map<String, Object> input, Map<String, Object> output) {
        Boolean success = false;

        Id sourceObjectId = (Id) input.get('sourceObjectId');
        
        List<Map<String, Object>> recipients = new List<Map<String, Object>>();
        
        Map<String, Object> recipient = new Map<String, Object>();
        recipient.put('name', 'John Peter');
        recipient.put('email', 'johnxxxx@gmail.com');
        recipient.put('id', '1');
        
        Map<String, Object> additionalFields = new Map<String, Object>();
        additionalFields.put('routingOrder', '1');
        additionalFields.put('routingNumber', '1');
        additionalFields.put('signerRole', '1');
        additionalFields.put('recipientType','Signer'); // Case Sensitive
        additionalFields.put('recipientLocale','English (U.S.)');
        //We need to send recipientLocale as same as What we see in the Salesforce UI While Manually Adding Recipient Locale 
        recipient.put('additionalFields', additionalFields);
        recipients.add(recipient);    
             
        output.put('recipients', recipients);
        
        success = true;
        System.debug('getRecipients:output -> ' + output);
        System.debug('getRecipients:success -> ' + success);
        
        return success;

    }
    
    class CustomGetRecipientsException extends Exception {

    }
}

recipientSelector et sourceObjectId sont des paramètres facultatifs. Le paramètre sourceObjectId est transmis en entrée à la classe Apex et consommé selon les besoins.

Pour configurer la classe personnalisée en utilisant des métadonnées, ajoutez un enregistrement à l'objet Configuration de la signature électronique avec les valeurs suivantes :

  • Fournisseur : Docusign

  • Type de groupe : Type de groupe

  • Type de configuration : Classe personnalisée Destinataires

  • Configurer la valeur : Le nom de votre classe personnalisée. >.

getDocuments

Utilisez cette méthode pour afficher la liste des documents envoyés pour signature électronique.

Si le paramètre IsAssociatedWithClm est :

  • true : l'API récupère les documents contractuels.

  • false : l'API récupère les documents uniquement dans Notes et Pièces jointes.

Pour ajouter une logique personnalisée via une classe personnalisée :

  • Créez une classe Apex globale qui implémente ind_docgen_api.OpenInterface.

  • Ajoutez votre logique à la méthode invokeMethod().

  • Ajoutez la classe à votre organisation.

  • Appelez l'API en utilisant le paramètre customClass dans l'URL. Exemple :

    /connect/e-sign/documents?sourceObjectId=<sourceObjectId>&documentSelector=<customClassName>

Pour personnaliser le renvoi des documents pour eSignature, implémentez l'interface ind_docgen_api.OpenInterface dans une classe Apex globale. Voici un exemple d'implémentation qui récupère des documents à partir d'enregistrements ContentVersion liés au sourceObjectId donné :

public class GetEsignDocuments implements ind_docgen_api.OpenInterface {
    private static final String ERROR_UNSUPPORTED = 'Unsupported method. Only method [getDocuments] is supported.';

    public Boolean invokeMethod(String methodName, Map<String, Object> request, Map<String, Object> outMap) {
        Boolean success = true;
        if (methodName == 'getDocuments') {
            success = executeAction(request, outMap);
        } else {
             throw new CustomGetDocumentsException(ERROR_UNSUPPORTED);
         }
        return success;
    }

    private Boolean executeAction(Map<String, Object> inputMap, Map<String, Object> outMap) {
        Boolean success = false;
        System.debug('getDocuments:inputMap -> ' + inputMap);
        Id contractId = (Id)inputMap.get('sourceObjectId');
        
        // Fetch contract master document
        ContentDocument contentDocument = getMasterContractDocument(contractId);
        
        List<Map<String, Object>> documents = new List<Map<String, Object>>();
        Map<String, Object> document = new Map<String, Object>();
        document.put('fileExtension', contentDocument.FileExtension);
        document.put('name',contentDocument.Title);
        String contentVersionId = Id.valueOf(contentDocument.LatestPublishedVersionId);
        document.put('sourceId', contentVersionId);
        document.put('sourceType','Content');
        
        Map<String, String> additionalFields = new Map<String, String>();
        additionalFields.put('documentId', '1');
        document.put('additionalFields', additionalFields);
        documents.add(document);
        outMap.put('documents', documents);

        success = true;
        System.debug('getDocuments:outMap -> ' + outMap);
        System.debug('getDocuments:success -> ' + success);
        return success;
    }
    
    private ContentDocument getMasterContractDocument(Id contractId) {
        // Fetch latest contract document version
        ContractDocumentVersion latestCdv = [SELECT Id FROM ContractDocumentVersion WHERE contractId=:contractId ORDER BY VersionNumber DESC LIMIT 1];
        
        // Fetch latest contendocumentId associated with latest contract document version
        ContractDocVerContentDoc contractDoc = [SELECT ContentDocumentId FROM ContractDocVerContentDoc WHERE ContractDocumentVersionId=:latestCdv.Id LIMIT 1];
        
        // Load content document details
        ContentDocument contentDocument = [SELECT FileExtension, FileType, Id, LatestPublishedVersionId, Title FROM ContentDocument WHERE Id=:contractDoc.ContentDocumentId LIMIT 1];
        return contentDocument;    
    }

    class CustomGetDocumentsException extends Exception {

    }
}

documentSelector est un paramètre facultatif.

Pour configurer la classe personnalisée en utilisant des métadonnées, ajoutez un enregistrement à l'objet Configuration de la signature électronique avec les valeurs suivantes :

  • Fournisseur : Docusign

  • Type de groupe : Type de groupe

  • Type de configuration : Classe Documents personnalisés

  • Configurer la valeur : Le nom de votre classe personnalisée.

Il n'est pas nécessaire de transmettre le nom de la classe personnalisée dans l'URL d'API.

getNotificationSettings

Utilisez cette méthode pour afficher les paramètres de notification de rappel et d'expiration. Le sourceObjectId est un paramètre obligatoire qui renvoie les paramètres de notification respectifs d'un objet.

L'API lit les paramètres de notification dans les paramètres de configuration suivants :

  • Si seules les autorisations DocGen sont activées, l'API lit les paramètres de notification dans le paramètre Configuration de l'enveloppe de signature électronique.

  • Si les autorisations DocGen et CLM (Salesforce Contracts) sont activées, et que le type d'objet est contract, l'API lit les paramètres de notification dans les paramètres de Configuration du type de contrat.

  • Si les autorisations DocGen et CLM (Salesforce Contracts) sont activées, et que le type d'objet n'est pas contractuel, l'API lit les paramètres de notification dans les paramètres de configuration de l'enveloppe de signature électronique.

sendEnvelope Utilisez cette méthode pour activer une nouvelle transaction DocuSign.
voidEnvelope Utilisez cette méthode pour expirer ou annuler les enveloppes associées à un objet.
updateEnvelope Utilisez cette méthode pour envoyer une requête ad hoc à DocuSign afin de mettre à jour le statut de l'enveloppe.
 
Chargement
Salesforce Help | Article