![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) Yousign Create Procedure after Uploading the PDFDemonstrates the 2nd step of Yousign procedure creation. This is the call to create the procedure after previously uploading the PDF file. Note: This example requires Chilkat v11.0.0 or greater. For more information, see https://dev.yousign.com/?version=latest#c2e03a8b-f782-4d3e-96d1-04517c083497
#import <CkoHttp.h> #import <CkoJsonObject.h> #import <CkoHttpResponse.h> #import <CkoStringBuilder.h> #import <NSString.h> BOOL success = NO; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoHttp *http = [[CkoHttp alloc] init]; // 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", // "description": "Awesome! Here is the description of my first procedure", // "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" // } // ] // } // ] // }' // 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", // "description": "Awesome! Here is the description of my first procedure", // "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" // } // ] // } // ] // } CkoJsonObject *json = [[CkoJsonObject alloc] init]; [json UpdateString: @"name" value: @"My first procedure"]; [json UpdateString: @"description" value: @"Awesome! Here is the description of my first procedure"]; [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"]; [json UpdateString: @"members[0].fileObjects[0].file" value: @"/files/6c123a8d-e5cf-4534-8da0-81886376ba2c"]; [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"]; // Adds the "Authorization: Bearer YOUR_API_KEY" header. http.AuthToken = @"YOUR_API_KEY"; CkoHttpResponse *resp = [[CkoHttpResponse alloc] init]; success = [http HttpJson: @"POST" url: @"https://staging-api.yousign.com/procedures" json: json contentType: @"application/json" response: resp]; if (success == 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", // "description": "Awesome! Here is the description of my first procedure", // "createdAt": "2018-12-01T11:49:11+01:00", // "updatedAt": "2018-12-01T11:49:11+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": [ // ], // "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-01T11:49:11+01:00", // "updatedAt": "2018-12-01T11:49:11+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-01T11:36:20+01:00", // "updatedAt": "2018-12-01T11:49:11+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-01T11:49:11+01:00", // "updatedAt": "2018-12-01T11:49:11+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-01T11:36:20+01:00", // "updatedAt": "2018-12-01T11:49:11+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 *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; int j; int count_j; 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 *strVal = 0; 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"] intValue]; while (i < count_i) { jResp.I = [NSNumber numberWithInt: i]; 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-2025 Chilkat Software, Inc. All Rights Reserved.