Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) Yousign - Setup email notificationsDemonstrates 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. For more information, see https://dev.yousign.com/?version=latest#96b9f5ec-8e41-4d0f-82e5-6fa91adfa4fd
#import <CkoHttp.h> #import <CkoJsonObject.h> #import <CkoHttpResponse.h> #import <CkoStringBuilder.h> #import <NSString.h> // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoHttp *http = [[CkoHttp alloc] init]; BOOL success; // 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" // ] // } // ] // } // } // } CkoJsonObject *json = [[CkoJsonObject alloc] init]; [json UpdateString: @"name" value: @"My first procedure with emails"]; [json UpdateString: @"description" value: @"Powerful! Here is the description of my first procedure with emails"]; [json UpdateString: @"members[0].firstname" value: @"John"]; [json UpdateString: @"members[0].lastname" value: @"Doe"]; [json UpdateString: @"members[0].email" value: @"john.doe@yousign.fr"]; [json UpdateString: @"members[0].phone" value: @"+33612345678"]; // Use the actual file ID here... [json UpdateString: @"members[0].fileObjects[0].file" value: @"/files/23686fbe-3ae1-4de9-9e01-58bbf29b2b18"]; [json UpdateInt: @"members[0].fileObjects[0].page" value: [NSNumber numberWithInt: 2]]; [json UpdateString: @"members[0].fileObjects[0].position" value: @"230,499,464,589"]; [json UpdateString: @"members[0].fileObjects[0].mention" value: @"Read and approved"]; [json UpdateString: @"members[0].fileObjects[0].mention2" value: @"Signed by John Doe"]; [json UpdateString: @"config.email.\"member.started\"[0].subject" value: @"Hey! You are invited to sign!"]; [json UpdateString: @"config.email.\"member.started\"[0].message" value: @"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]" value: @"@member"]; [json UpdateString: @"config.email.\"procedure.started\"[0].subject" value: @"John, created a procedure your API have."]; [json UpdateString: @"config.email.\"procedure.started\"[0].message" value: @"The content of this email is totally awesome."]; [json UpdateString: @"config.email.\"procedure.started\"[0].to[0]" value: @"@creator"]; [json UpdateString: @"config.email.\"procedure.started\"[0].to[1]" value: @"@members"]; [json UpdateString: @"config.email.\"procedure.started\"[0].to[2]" value: @"billing@yousign.fr"]; // Adds the "Authorization: Bearer YOUR_API_KEY" header. http.AuthToken = @"YOUR_API_KEY"; [http SetRequestHeader: @"Content-Type" value: @"application/json"]; CkoHttpResponse *resp = [http PostJson3: @"https://staging-api.yousign.com/procedures" contentType: @"application/json" json: json]; if (http.LastMethodSuccess == NO) { NSLog(@"%@",http.LastErrorText); return; } CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init]; [resp GetBodySb: sbResponseBody]; CkoJsonObject *jResp = [[CkoJsonObject alloc] init]; [jResp LoadSb: sbResponseBody]; jResp.EmitCompact = NO; NSLog(@"%@",@"Response Body:"); NSLog(@"%@",[jResp Emit]); int respStatusCode = [resp.StatusCode intValue]; NSLog(@"%@%d",@"Response Status Code = ",respStatusCode); if (respStatusCode >= 400) { NSLog(@"%@",@"Response Header:"); NSLog(@"%@",resp.Header); NSLog(@"%@",@"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 NSString *subject = 0; NSString *message = 0; int j; int count_j; NSString *strVal = 0; NSString *user = 0; NSString *v_type = 0; NSString *firstname = 0; NSString *lastname = 0; NSString *email = 0; NSString *phone = 0; int position; NSString *comment = 0; NSString *operationLevel = 0; NSString *operationModeSmsConfig = 0; NSString *fileId = 0; NSString *fileName = 0; NSString *fileType = 0; NSString *fileContentType = 0; NSString *fileDescription = 0; NSString *fileCreatedAt = 0; NSString *fileUpdatedAt = 0; NSString *fileSha256 = 0; NSString *fileWorkspace = 0; NSString *fileCreator = 0; BOOL fileProtected; int filePosition; NSString *fileParent = 0; int page; NSString *position_str = 0; NSString *fieldName = 0; NSString *mention = 0; NSString *mention2 = 0; NSString *reason = 0; int k; int count_k; NSString *contentType = 0; NSString *sha256 = 0; BOOL v_protected; NSString *id = [jResp StringOf: @"id"]; NSString *name = [jResp StringOf: @"name"]; NSString *description = [jResp StringOf: @"description"]; NSString *createdAt = [jResp StringOf: @"createdAt"]; NSString *updatedAt = [jResp StringOf: @"updatedAt"]; NSString *finishedAt = [jResp StringOf: @"finishedAt"]; NSString *expiresAt = [jResp StringOf: @"expiresAt"]; NSString *status = [jResp StringOf: @"status"]; NSString *creator = [jResp StringOf: @"creator"]; NSString *creatorFirstName = [jResp StringOf: @"creatorFirstName"]; NSString *creatorLastName = [jResp StringOf: @"creatorLastName"]; NSString *workspace = [jResp StringOf: @"workspace"]; BOOL template = [jResp BoolOf: @"template"]; BOOL ordered = [jResp BoolOf: @"ordered"]; NSString *parent = [jResp StringOf: @"parent"]; BOOL relatedFilesEnable = [jResp BoolOf: @"relatedFilesEnable"]; BOOL archive = [jResp BoolOf: @"archive"]; int i = 0; int count_i = [[jResp SizeOfArray: @"metadata"] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: i]; i = i + 1; } i = 0; count_i = [[jResp SizeOfArray: @"config.email.\"procedure.started\""] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: 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"] intValue]; while (j < count_j) { jResp.J = [NSNumber numberWithInt: 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\""] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: 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"] intValue]; while (j < count_j) { jResp.J = [NSNumber numberWithInt: j]; strVal = [jResp StringOf: @"config.email.\"member.started\"[i].to[j]"]; j = j + 1; } i = i + 1; } i = 0; count_i = [[jResp SizeOfArray: @"members"] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: 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"] intValue]; 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"] intValue]; while (j < count_j) { jResp.J = [NSNumber numberWithInt: 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"] intValue]; fileParent = [jResp StringOf: @"members[i].fileObjects[j].file.parent"]; page = [[jResp IntOf: @"members[i].fileObjects[j].page"] intValue]; 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"] intValue]; while (k < count_k) { jResp.K = [NSNumber numberWithInt: k]; k = k + 1; } j = j + 1; } j = 0; count_j = [[jResp SizeOfArray: @"members[i].notificationsEmail"] intValue]; while (j < count_j) { jResp.J = [NSNumber numberWithInt: j]; j = j + 1; } j = 0; count_j = [[jResp SizeOfArray: @"members[i].operationCustomModes"] intValue]; while (j < count_j) { jResp.J = [NSNumber numberWithInt: j]; strVal = [jResp StringOf: @"members[i].operationCustomModes[j]"]; j = j + 1; } i = i + 1; } i = 0; count_i = [[jResp SizeOfArray: @"subscribers"] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: i]; i = i + 1; } i = 0; count_i = [[jResp SizeOfArray: @"files"] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: 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"] intValue]; parent = [jResp StringOf: @"files[i].parent"]; j = 0; count_j = [[jResp SizeOfArray: @"files[i].metadata"] intValue]; while (j < count_j) { jResp.J = [NSNumber numberWithInt: j]; j = j + 1; } i = i + 1; } i = 0; count_i = [[jResp SizeOfArray: @"archiveMetadata"] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: i]; i = i + 1; } i = 0; count_i = [[jResp SizeOfArray: @"fields"] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: i]; i = i + 1; } i = 0; count_i = [[jResp SizeOfArray: @"permissions"] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: i]; i = i + 1; } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.