Sample code for 30+ languages & platforms
Java

Yousign - Setup email notifications

See more Yousign Examples

Demonstrates how to setup email notifications based on events. An event is triggered when a user (or our API) make an action or when a status has changed.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Http;
import com.chilkatsoft.chilkat2.HttpResponse;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example assumes the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Http http = new Http();

        // Implements the following CURL command:

        // curl --location --request POST 'https://staging-api.yousign.com/procedures' \
        // --header 'Authorization: Bearer YOUR_API_KEY' \
        // --header 'Content-Type: application/json' \
        // --data-raw '{
        //     "name": "My first procedure with emails",
        //     "description": "Powerful! Here is the description of my first procedure with emails",
        //     "members": [
        //         {
        //             "firstname": "John",
        //             "lastname": "Doe",
        //             "email": "john.doe@yousign.fr",
        //             "phone": "+33612345678",
        //             "fileObjects": [
        //                 {
        //                     "file": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //                     "page": 2,
        //                     "position": "230,499,464,589",
        //                     "mention": "Read and approved",
        //                     "mention2": "Signed by John Doe"
        //                 }
        //             ]
        //         }
        //     ],
        //     "config": {
        //         "email": {
        //             "member.started": [
        //                 {
        //                     "subject": "Hey! You are invited to sign!",
        //                     "message": "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>",
        //                     "to": ["@member"]
        //                 }
        //             ],
        //             "procedure.started": [
        //                 {
        //                     "subject": "John, created a procedure your API have.",
        //                     "message": "The content of this email is totally awesome.",
        //                     "to": ["@creator", "@members", "billing@yousign.fr"]
        //                 }
        //             ]
        //         }
        //     }
        // }'

        // Use the following online tool to generate HTTP code from a CURL command
        // Convert a cURL Command to HTTP Source Code

        // Use this online tool to generate code from sample JSON:
        // Generate Code to Create JSON

        // The following JSON is sent in the request body.

        // {
        //   "name": "My first procedure with emails",
        //   "description": "Powerful! Here is the description of my first procedure with emails",
        //   "members": [
        //     {
        //       "firstname": "John",
        //       "lastname": "Doe",
        //       "email": "john.doe@yousign.fr",
        //       "phone": "+33612345678",
        //       "fileObjects": [
        //         {
        //           "file": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //           "page": 2,
        //           "position": "230,499,464,589",
        //           "mention": "Read and approved",
        //           "mention2": "Signed by John Doe"
        //         }
        //       ]
        //     }
        //   ],
        //   "config": {
        //     "email": {
        //       "member.started": [
        //         {
        //           "subject": "Hey! You are invited to sign!",
        //           "message": "Hello <tag data-tag-type=",
        //           " data-tag-name=": <tag,
        //           "button": [
        //             "@member"
        //           ]
        //         }
        //       ],
        //       "procedure.started": [
        //         {
        //           "subject": "John, created a procedure your API have.",
        //           "message": "The content of this email is totally awesome.",
        //           "to": [
        //             "@creator",
        //             "@members",
        //             "billing@yousign.fr"
        //           ]
        //         }
        //       ]
        //     }
        //   }
        // }

        JsonObject json = new JsonObject();
        json.updateString("name", "My first procedure with emails");
        json.updateString("description", "Powerful! Here is the description of my first procedure with emails");
        json.updateString("members[0].firstname", "John");
        json.updateString("members[0].lastname", "Doe");
        json.updateString("members[0].email", "john.doe@yousign.fr");
        json.updateString("members[0].phone", "+33612345678");
        // Use the actual file ID here...
        json.updateString("members[0].fileObjects[0].file", "/files/23686fbe-3ae1-4de9-9e01-58bbf29b2b18");
        json.updateInt("members[0].fileObjects[0].page", 2);
        json.updateString("members[0].fileObjects[0].position", "230,499,464,589");
        json.updateString("members[0].fileObjects[0].mention", "Read and approved");
        json.updateString("members[0].fileObjects[0].mention2", "Signed by John Doe");
        json.updateString("config.email.\"member.started\"[0].subject", "Hey! You are invited to sign!");
        json.updateString("config.email.\"member.started\"[0].message", "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>");
        json.updateString("config.email.\"member.started\"[0].to[0]", "@member");
        json.updateString("config.email.\"procedure.started\"[0].subject", "John, created a procedure your API have.");
        json.updateString("config.email.\"procedure.started\"[0].message", "The content of this email is totally awesome.");
        json.updateString("config.email.\"procedure.started\"[0].to[0]", "@creator");
        json.updateString("config.email.\"procedure.started\"[0].to[1]", "@members");
        json.updateString("config.email.\"procedure.started\"[0].to[2]", "billing@yousign.fr");

        // Adds the "Authorization: Bearer YOUR_API_KEY" header.
        http.setAuthToken("YOUR_API_KEY");

        HttpResponse resp = new HttpResponse();
        try {
            http.httpJson("POST", "https://staging-api.yousign.com/procedures", json, "application/json", resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        StringBuilder sbResponseBody = new StringBuilder();
        resp.getBodySb(sbResponseBody);
        JsonObject jResp = new JsonObject();
        jResp.loadSb(sbResponseBody);
        jResp.setEmitCompact(false);

        System.out.println("Response Body:");
        System.out.println(jResp.emit());

        int respStatusCode = resp.getStatusCode();
        System.out.println("Response Status Code = " + respStatusCode);
        if (respStatusCode >= 400) {
            System.out.println("Response Header:");
            System.out.println(resp.getHeader());
            System.out.println("Failed.");
            return;
        }

        // Sample JSON response:
        // (Sample code for parsing the JSON response is shown below)

        // {
        //   "id": "/procedures/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //   "name": "My first procedure with emails",
        //   "description": "Powerful! Here is the description of my first procedure with emails",
        //   "createdAt": "2018-12-05T06:53:34+01:00",
        //   "updatedAt": "2018-12-05T06:53:34+01:00",
        //   "finishedAt": null,
        //   "expiresAt": null,
        //   "status": "active",
        //   "creator": null,
        //   "creatorFirstName": null,
        //   "creatorLastName": null,
        //   "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //   "template": false,
        //   "ordered": false,
        //   "parent": null,
        //   "metadata": [
        //   ],
        //   "config": {
        //     "email": {
        //       "procedure.started": [
        //         {
        //           "subject": "John, created a procedure your API have.",
        //           "message": "The content of this email is totally awesome.",
        //           "to": [
        //             "@creator",
        //             "@members",
        //             "billing@yousign.fr"
        //           ]
        //         }
        //       ],
        //       "member.started": [
        //         {
        //           "subject": "Hey! You are invited to sign!",
        //           "message": "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>",
        //           "to": [
        //             "@member"
        //           ]
        //         }
        //       ]
        //     }
        //   },
        //   "members": [
        //     {
        //       "id": "/members/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //       "user": null,
        //       "type": "signer",
        //       "firstname": "John",
        //       "lastname": "Doe",
        //       "email": "john.doe@yousign.fr",
        //       "phone": "+33612345678",
        //       "position": 1,
        //       "createdAt": "2018-12-05T06:53:34+01:00",
        //       "updatedAt": "2018-12-05T06:53:34+01:00",
        //       "finishedAt": null,
        //       "status": "pending",
        //       "fileObjects": [
        //         {
        //           "id": "/file_objects/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //           "file": {
        //             "id": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //             "name": "The best name for my file.pdf",
        //             "type": "signable",
        //             "contentType": "application/pdf",
        //             "description": null,
        //             "createdAt": "2018-12-05T06:52:54+01:00",
        //             "updatedAt": "2018-12-05T06:53:34+01:00",
        //             "sha256": "bb57ae2b2ca6ad0133a699350d1a6f6c8cdfde3cf872cf526585d306e4675cc2",
        //             "metadata": [
        //             ],
        //             "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //             "creator": null,
        //             "protected": false,
        //             "position": 0,
        //             "parent": null
        //           },
        //           "page": 2,
        //           "position": "230,499,464,589",
        //           "fieldName": null,
        //           "mention": "Read and approved",
        //           "mention2": "Signed by John Doe",
        //           "createdAt": "2018-12-05T06:53:34+01:00",
        //           "updatedAt": "2018-12-05T06:53:34+01:00",
        //           "parent": null,
        //           "reason": "Signed by Yousign"
        //         }
        //       ],
        //       "comment": null,
        //       "notificationsEmail": [
        //       ],
        //       "operationLevel": "custom",
        //       "operationCustomModes": [
        //         "sms"
        //       ],
        //       "operationModeSmsConfig": null,
        //       "parent": null
        //     }
        //   ],
        //   "subscribers": [
        //   ],
        //   "files": [
        //     {
        //       "id": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //       "name": "The best name for my file.pdf",
        //       "type": "signable",
        //       "contentType": "application/pdf",
        //       "description": null,
        //       "createdAt": "2018-12-05T06:52:54+01:00",
        //       "updatedAt": "2018-12-05T06:53:34+01:00",
        //       "sha256": "bb57ae2b2ca6ad0133a699350d1a6f6c8cdfde3cf872cf526585d306e4675cc2",
        //       "metadata": [
        //       ],
        //       "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        //       "creator": null,
        //       "protected": false,
        //       "position": 0,
        //       "parent": null
        //     }
        //   ],
        //   "relatedFilesEnable": false,
        //   "archive": false,
        //   "archiveMetadata": [
        //   ],
        //   "fields": [
        //   ],
        //   "permissions": [
        //   ]
        // }

        // Sample code for parsing the JSON response...
        // Use the following online tool to generate parsing code from sample JSON:
        // Generate Parsing Code from JSON

        String subject = "";
        String message = "";
        int j = 0;
        int count_j = 0;
        String strVal = "";
        String user = "";
        String v_type = "";
        String firstname = "";
        String lastname = "";
        String email = "";
        String phone = "";
        int position = 0;
        String comment = "";
        String operationLevel = "";
        String operationModeSmsConfig = "";
        String fileId = "";
        String fileName = "";
        String fileType = "";
        String fileContentType = "";
        String fileDescription = "";
        String fileCreatedAt = "";
        String fileUpdatedAt = "";
        String fileSha256 = "";
        String fileWorkspace = "";
        String fileCreator = "";
        boolean fileProtected = false;
        int filePosition = 0;
        String fileParent = "";
        int page = 0;
        String position_str = "";
        String fieldName = "";
        String mention = "";
        String mention2 = "";
        String reason = "";
        int k = 0;
        int count_k = 0;
        String contentType = "";
        String sha256 = "";
        boolean v_protected = false;

        String id = jResp.stringOf("id");
        String name = jResp.stringOf("name");
        String description = jResp.stringOf("description");
        String createdAt = jResp.stringOf("createdAt");
        String updatedAt = jResp.stringOf("updatedAt");
        String finishedAt = jResp.stringOf("finishedAt");
        String expiresAt = jResp.stringOf("expiresAt");
        String status = jResp.stringOf("status");
        String creator = jResp.stringOf("creator");
        String creatorFirstName = jResp.stringOf("creatorFirstName");
        String creatorLastName = jResp.stringOf("creatorLastName");
        String workspace = jResp.stringOf("workspace");
        boolean template = jResp.boolOf("template");
        boolean ordered = jResp.boolOf("ordered");
        String parent = jResp.stringOf("parent");
        boolean relatedFilesEnable = jResp.boolOf("relatedFilesEnable");
        boolean archive = jResp.boolOf("archive");
        int i = 0;
        int count_i = jResp.sizeOfArray("metadata");
        while (i < count_i) {
            jResp.setI(i);
            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("config.email.\"procedure.started\"");
        while (i < count_i) {
            jResp.setI(i);
            subject = jResp.stringOf("config.email.\"procedure.started\"[i].subject");
            message = jResp.stringOf("config.email.\"procedure.started\"[i].message");
            j = 0;
            count_j = jResp.sizeOfArray("config.email.\"procedure.started\"[i].to");
            while (j < count_j) {
                jResp.setJ(j);
                strVal = jResp.stringOf("config.email.\"procedure.started\"[i].to[j]");
                j = j + 1;
            }

            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("config.email.\"member.started\"");
        while (i < count_i) {
            jResp.setI(i);
            subject = jResp.stringOf("config.email.\"member.started\"[i].subject");
            message = jResp.stringOf("config.email.\"member.started\"[i].message");
            j = 0;
            count_j = jResp.sizeOfArray("config.email.\"member.started\"[i].to");
            while (j < count_j) {
                jResp.setJ(j);
                strVal = jResp.stringOf("config.email.\"member.started\"[i].to[j]");
                j = j + 1;
            }

            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("members");
        while (i < count_i) {
            jResp.setI(i);
            id = jResp.stringOf("members[i].id");
            user = jResp.stringOf("members[i].user");
            v_type = jResp.stringOf("members[i].type");
            firstname = jResp.stringOf("members[i].firstname");
            lastname = jResp.stringOf("members[i].lastname");
            email = jResp.stringOf("members[i].email");
            phone = jResp.stringOf("members[i].phone");
            position = jResp.intOf("members[i].position");
            createdAt = jResp.stringOf("members[i].createdAt");
            updatedAt = jResp.stringOf("members[i].updatedAt");
            finishedAt = jResp.stringOf("members[i].finishedAt");
            status = jResp.stringOf("members[i].status");
            comment = jResp.stringOf("members[i].comment");
            operationLevel = jResp.stringOf("members[i].operationLevel");
            operationModeSmsConfig = jResp.stringOf("members[i].operationModeSmsConfig");
            parent = jResp.stringOf("members[i].parent");
            j = 0;
            count_j = jResp.sizeOfArray("members[i].fileObjects");
            while (j < count_j) {
                jResp.setJ(j);
                id = jResp.stringOf("members[i].fileObjects[j].id");
                fileId = jResp.stringOf("members[i].fileObjects[j].file.id");
                fileName = jResp.stringOf("members[i].fileObjects[j].file.name");
                fileType = jResp.stringOf("members[i].fileObjects[j].file.type");
                fileContentType = jResp.stringOf("members[i].fileObjects[j].file.contentType");
                fileDescription = jResp.stringOf("members[i].fileObjects[j].file.description");
                fileCreatedAt = jResp.stringOf("members[i].fileObjects[j].file.createdAt");
                fileUpdatedAt = jResp.stringOf("members[i].fileObjects[j].file.updatedAt");
                fileSha256 = jResp.stringOf("members[i].fileObjects[j].file.sha256");
                fileWorkspace = jResp.stringOf("members[i].fileObjects[j].file.workspace");
                fileCreator = jResp.stringOf("members[i].fileObjects[j].file.creator");
                fileProtected = jResp.boolOf("members[i].fileObjects[j].file.protected");
                filePosition = jResp.intOf("members[i].fileObjects[j].file.position");
                fileParent = jResp.stringOf("members[i].fileObjects[j].file.parent");
                page = jResp.intOf("members[i].fileObjects[j].page");
                position_str = jResp.stringOf("members[i].fileObjects[j].position");
                fieldName = jResp.stringOf("members[i].fileObjects[j].fieldName");
                mention = jResp.stringOf("members[i].fileObjects[j].mention");
                mention2 = jResp.stringOf("members[i].fileObjects[j].mention2");
                createdAt = jResp.stringOf("members[i].fileObjects[j].createdAt");
                updatedAt = jResp.stringOf("members[i].fileObjects[j].updatedAt");
                parent = jResp.stringOf("members[i].fileObjects[j].parent");
                reason = jResp.stringOf("members[i].fileObjects[j].reason");
                k = 0;
                count_k = jResp.sizeOfArray("members[i].fileObjects[j].file.metadata");
                while (k < count_k) {
                    jResp.setK(k);
                    k = k + 1;
                }

                j = j + 1;
            }

            j = 0;
            count_j = jResp.sizeOfArray("members[i].notificationsEmail");
            while (j < count_j) {
                jResp.setJ(j);
                j = j + 1;
            }

            j = 0;
            count_j = jResp.sizeOfArray("members[i].operationCustomModes");
            while (j < count_j) {
                jResp.setJ(j);
                strVal = jResp.stringOf("members[i].operationCustomModes[j]");
                j = j + 1;
            }

            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("subscribers");
        while (i < count_i) {
            jResp.setI(i);
            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("files");
        while (i < count_i) {
            jResp.setI(i);
            id = jResp.stringOf("files[i].id");
            name = jResp.stringOf("files[i].name");
            v_type = jResp.stringOf("files[i].type");
            contentType = jResp.stringOf("files[i].contentType");
            description = jResp.stringOf("files[i].description");
            createdAt = jResp.stringOf("files[i].createdAt");
            updatedAt = jResp.stringOf("files[i].updatedAt");
            sha256 = jResp.stringOf("files[i].sha256");
            workspace = jResp.stringOf("files[i].workspace");
            creator = jResp.stringOf("files[i].creator");
            v_protected = jResp.boolOf("files[i].protected");
            position = jResp.intOf("files[i].position");
            parent = jResp.stringOf("files[i].parent");
            j = 0;
            count_j = jResp.sizeOfArray("files[i].metadata");
            while (j < count_j) {
                jResp.setJ(j);
                j = j + 1;
            }

            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("archiveMetadata");
        while (i < count_i) {
            jResp.setI(i);
            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("fields");
        while (i < count_i) {
            jResp.setI(i);
            i = i + 1;
        }

        i = 0;
        count_i = jResp.sizeOfArray("permissions");
        while (i < count_i) {
            jResp.setI(i);
            i = i + 1;
        }
    }
}