API : Envoyer un contrat en un seul appel

Pour créer un contrat et l’envoyer directement en signature, on peut utiliser la méthode sendCommandPacket.

Une façon rapide d’appeler cette méthode est d’utiliser l’API REST sous la forme d’un HTTP POST

Prérequis pour l’utilisation de l’API

Pour utiliser l’API vous devez avoir votre token API, votre contrat en pdf et votre fichier sellsign.

Ce fichier formaté en JSON, contient votre contract_definition_id et les informations de votre signataire comme le number du destinataire du contrat, et ses informations générales ainsi que le nom du pdf correspondant au contrat.
Vous trouverez ci-dessous un exemple du fichier sellsign.

{
    "customer": {
        "number": "mycustomer65778", // l'identifiant de votre client, le destinataire du contrat 
        "mode": 3, // le mode de signature: 3 à distance (envoie d'un email pour la demande de saisie OTP)
        "contractor_id": -1,
        "vendor": "vendor_adress_email@calindasoftware.com",
        "fields": [{
                "key": "firstname",
                "value": "{{firstname}}"
            },
            {
                "key": "lastname",
                "value": "Dupont"
            },
            {
                "key": "civility",
                "value": "MONSIEUR" // MONSIEUR ou MADAME
            },
            {
                "key": "email",
                "value": "test4814@calindasoftware.com" // pour tester, vous pouvez mettre votre adresse email ici
            },
            {
                "key": "cellPhone",
                "value": "0606060606" // pour tester, vous pouvez mettre votre numéro de téléphone ici
            }
        ]
    },
    "contractors": [],
    "contract": {
        "contract_definition_id": 2, // !!!ATTENTION!!! cet identifiant dépend de votre déploiement et vous est fourni avec votre document descriptif de votre API.
                                      // Il permet d'identifier le type de contrat qui est utilisé et d'y accrocher des comportements (par exemple les callbacks sur cloture d'un contrat)
        "pdf_file_path": "my_contract.pdf", // le nom du fichier pdf tel qu'il est donné dans le paquet http      
        "contract_id": -1,
        "message_title": "Votre contrat Z pour signature",
        "message_body": "Vous êtes signataire du contrat Z ci-joint pour la {{companyName}}. Merci de bien vouloir le signer électroniquement en cliquant sur le lien ci-dessous.<br>Cordialement,"		
    },
    "contract_properties": [
    {
        "key": "internal_contract_id", // une clé pour votre identifiant interne du contrat, la valeur pourra vous être donné lors du retour du fichier signé
        "value": "ma valeur", // la valeur de la clé
        "to_fill_by_user": 0
    }
    ],
    "files": [],
    "options": [],

    "to_sign": 1 // Pour déclencher l'émission de l'email 
}

Utilisation de l’API en PHP

L’utilisation de la librairie php cURL ne suffit pas à interagir avec l’API car elle ne permet pas de spécifier les différents mime types pour chaque fichier.

L’ajout d’une librairie externe est donc nécessaire, nous vous recommandons Guzzle, un client qui permet d’envoyer simplement des requêtes HTTP. Cliquez ici pour accéder à la documentation de la librairie Guzzle.

Il faut dans le header de votre requête HTTP ajouter votre token API, il faut ensuite ajouter les fichiers, il vous sera demandé name et filename qui sont identiques, il correspond au nom du fichier à importer. Attention toutefois pour le fichier pdf à bien respecter le nom indiqué dans le fichier sellsign.

Enfin vous devez ajouter le contenu du fichier en utilisant la fonction fopen.

$response = $client->request('POST', 'https://cloud.sellandsign.com/calinda/hub/selling/do?m=sendCommandPacket', [
    'headers' => [
        'j_token' => $token
        ],

    'multipart' => [
        [
            'name'     => 'adhoc_light.sellsign',
            'contents' => fopen('C:\\xampp\htdocs\BridgeExample\\ressource/adhoc_light.sellsign', 'r'),
            'filename' => 'adhoc_light.sellsign',
            'headers'  => [
                'Content-type' => 'application/json'
            ]
        ],
        [
            'name'     => 'my_contract.pdf',
            'contents' => fopen('C:\\xampp\htdocs\BridgeExample\\ressource/my_contract.pdf', 'r'),
            'filename' => 'my_contract.pdf',
            'headers'  => [
                'Content-type' => 'application/pdf'
            ]
        ]
    ]
]);

Exemple de code PHP

Utilisation de l’API en Java

Il faut dans le header de votre requête HTTP ajouter votre token API, il faut ensuite ajouter les fichiers, il vous sera demandé nom du fichier , il correspond au nom du fichier à importer. Attention toutefois pour le fichier pdf à bien respecter le nom indiqué dans le fichier sellsign.

 HttpPost post = new HttpPost("https://cloud.sellandsign.com/calinda/hub/selling/do?m=sendCommandPacket"); // url du service
post.setHeader("j_token", "0025514|ccssccscqdcdxesdvdsd/6Gcj/23CEB16hmg=" ); // le token d'authentification

MultipartEntity mpe = new MultipartEntity();
    
// ajout du fichier .sellsign
String json_filename = "adhoc_light.sellsign";
InputStreamBody isb = new InputStreamBody( loadResource( json_filename ), "application/json", json_filename );
mpe.addPart( json_filename, isb);
    
// ajout du fichier .pdf
String pdf_filename = "my_contract.pdf"; // ce nom de fichier se retrouve dans le contenu json généré au dessus (voir le fichier adhoc_list.sellsign fournit en exemple)
isb = new InputStreamBody( loadResource( pdf_filename ), "application/pdf", pdf_filename );
mpe.addPart( pdf_filename, isb);

post.setEntity(mpe);
    
// Emission de la requête
HttpResponse response = client.execute(post);

Exemple de code Java

Utilisation de l’API en C#

Il faut dans la constante J_token ajouter votre token API, il faut ensuite ajouter les fichiers, il vous sera demandé le nom du fichier , il correspond au nom du fichier à importer. Attention toutefois pour le fichier pdf à bien respecter le nom indiqué dans le fichier sellsign.

API : Envoyer un contrat en un seul appel
4.2 (83.33%) 6 votes