Chilkat Online Tools

Objective-C / PandaDoc API Reference / Create Document in a Folder

Back to Collection Items

#import <CkoHttp.h>
#import <CkoJsonObject.h>
#import <CkoHttpResponse.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;

// 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": "API Sample Document from PandaDoc Template",
//   "template_uuid": "{{template_id}}",
//   "folder_uuid": "{{documents_folder_uuid}}",
//   "recipients": [
//     {
//       "email": "{{recipient_email}}",
//       "first_name": "Jane",
//       "last_name": "Roe",
//       "role": "user"
//     }
//   ],
//   "tokens": [
//     {
//       "name": "Favorite.Pet",
//       "value": "Panda"
//     }
//   ],
//   "fields": {
//     "Favorite.Color": {
//       "value": "PandaDoc green"
//     },
//     "Delivery": {
//       "value": "Same Day Delivery"
//     },
//     "Like": {
//       "value": true
//     },
//     "Date": {
//       "value": "2019-12-31T00:00:00.000Z"
//     }
//   },
//   "metadata": {
//     "opp_id": "123456",
//     "my_favorite_pet": "Panda"
//   },
//   "tags": [
//     "created_via_api",
//     "test_document"
//   ],
//   "pricing_tables": [
//     {
//       "name": "PricingTable1",
//       "options": {
//         "currency": "USD",
//         "discount": {
//           "is_global": true,
//           "type": "absolute",
//           "name": "Global Discount",
//           "value": 2.26
//         }
//       },
//       "sections": [
//         {
//           "title": "Sample Section",
//           "default": true,
//           "rows": [
//             {
//               "options": {
//                 "optional": true,
//                 "optional_selected": true,
//                 "qty_editable": true
//               },
//               "data": {
//                 "name": "Toy Panda",
//                 "description": "Fluffy!",
//                 "price": 10,
//                 "qty": 3,
//                 "tax_first": {
//                   "value": 7.5,
//                   "type": "percent"
//                 }
//               },
//               "custom_fields": {
//                 "Fluffiness": "5 / 5"
//               }
//             }
//           ]
//         }
//       ]
//     }
//   ]
// }

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"name" value: @"API Sample Document from PandaDoc Template"];
[json UpdateString: @"template_uuid" value: @"{{template_id}}"];
[json UpdateString: @"folder_uuid" value: @"{{documents_folder_uuid}}"];
[json UpdateString: @"recipients[0].email" value: @"{{recipient_email}}"];
[json UpdateString: @"recipients[0].first_name" value: @"Jane"];
[json UpdateString: @"recipients[0].last_name" value: @"Roe"];
[json UpdateString: @"recipients[0].role" value: @"user"];
[json UpdateString: @"tokens[0].name" value: @"Favorite.Pet"];
[json UpdateString: @"tokens[0].value" value: @"Panda"];
[json UpdateString: @"fields.\"Favorite.Color\".value" value: @"PandaDoc green"];
[json UpdateString: @"fields.Delivery.value" value: @"Same Day Delivery"];
[json UpdateBool: @"fields.Like.value" value: YES];
[json UpdateString: @"fields.Date.value" value: @"2019-12-31T00:00:00.000Z"];
[json UpdateString: @"metadata.opp_id" value: @"123456"];
[json UpdateString: @"metadata.my_favorite_pet" value: @"Panda"];
[json UpdateString: @"tags[0]" value: @"created_via_api"];
[json UpdateString: @"tags[1]" value: @"test_document"];
[json UpdateString: @"pricing_tables[0].name" value: @"PricingTable1"];
[json UpdateString: @"pricing_tables[0].options.currency" value: @"USD"];
[json UpdateBool: @"pricing_tables[0].options.discount.is_global" value: YES];
[json UpdateString: @"pricing_tables[0].options.discount.type" value: @"absolute"];
[json UpdateString: @"pricing_tables[0].options.discount.name" value: @"Global Discount"];
[json UpdateNumber: @"pricing_tables[0].options.discount.value" numericStr: @"2.26"];
[json UpdateString: @"pricing_tables[0].sections[0].title" value: @"Sample Section"];
[json UpdateBool: @"pricing_tables[0].sections[0].default" value: YES];
[json UpdateBool: @"pricing_tables[0].sections[0].rows[0].options.optional" value: YES];
[json UpdateBool: @"pricing_tables[0].sections[0].rows[0].options.optional_selected" value: YES];
[json UpdateBool: @"pricing_tables[0].sections[0].rows[0].options.qty_editable" value: YES];
[json UpdateString: @"pricing_tables[0].sections[0].rows[0].data.name" value: @"Toy Panda"];
[json UpdateString: @"pricing_tables[0].sections[0].rows[0].data.description" value: @"Fluffy!"];
[json UpdateInt: @"pricing_tables[0].sections[0].rows[0].data.price" value: [NSNumber numberWithInt: 10]];
[json UpdateInt: @"pricing_tables[0].sections[0].rows[0].data.qty" value: [NSNumber numberWithInt: 3]];
[json UpdateNumber: @"pricing_tables[0].sections[0].rows[0].data.tax_first.value" numericStr: @"7.5"];
[json UpdateString: @"pricing_tables[0].sections[0].rows[0].data.tax_first.type" value: @"percent"];
[json UpdateString: @"pricing_tables[0].sections[0].rows[0].custom_fields.Fluffiness" value: @"5 / 5"];

[http SetRequestHeader: @"Authorization" value: @"API-Key {{api_key}}"];
[http SetRequestHeader: @"Content-Type" value: @"application/json"];

CkoHttpResponse *resp = [http PostJson3: @"https://api.pandadoc.com/public/v1/documents" contentType: @"application/json" json: json];
if (http.LastMethodSuccess == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

NSLog(@"%d",[resp.StatusCode intValue]);
NSLog(@"%@",resp.BodyStr);

Curl Command

curl -X POST
	-H "Authorization: Bearer {{access_token}}"
	-H "Authorization: API-Key {{api_key}}"
	-H "Content-Type: application/json"
	-d '{  
    "name": "API Sample Document from PandaDoc Template",
    "template_uuid": "{{template_id}}",
    "folder_uuid": "{{documents_folder_uuid}}",
    "recipients": [  
        {  
            "email": "{{recipient_email}}",
            "first_name": "Jane",
            "last_name": "Roe",
            "role": "user"
        }
    ],
    "tokens": [  
        {  
            "name": "Favorite.Pet",
            "value": "Panda"
        }
    ],
    "fields": {  
        "Favorite.Color": {  
            "value": "PandaDoc green"
        },
        "Delivery": {
        	"value": "Same Day Delivery"
        },
        "Like": {
        	"value": true
        },
        "Date": {
        	"value": "2019-12-31T00:00:00.000Z"
        }
    },
    "metadata":{  
        "opp_id": "123456",
        "my_favorite_pet": "Panda"
    },
    "tags": [
        "created_via_api",
        "test_document"
	], 
    "pricing_tables": [  
        {  
            "name": "PricingTable1",
            "options": {  
                "currency": "USD",
                "discount": {  
                    "is_global": true,
                    "type": "absolute",
                    "name": "Global Discount",
                    "value": 2.26
                }
            },
            "sections": [  
                {  
                    "title": "Sample Section",
                    "default": true,
                    "rows": [  
                        {  
                            "options": {  
                                "optional": true,
                                "optional_selected": true,
                                "qty_editable": true
                            },
                            "data":{  
                                "name": "Toy Panda",
                                "description": "Fluffy!",
                                "price": 10,
                                "qty": 3,
                                "tax_first": {  
                                    "value": 7.5,
                                    "type": "percent"
                                }
                            },
                            "custom_fields": {  
                                "Fluffiness": "5 / 5"
                            }
                        }
                    ]
                }
            ]
        }
    ]
}'
https://api.pandadoc.com/public/v1/documents

Postman Collection Item JSON

{
  "name": "Create Document in a Folder",
  "event": [
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "exec": [
          "var jsonData = JSON.parse(responseBody);",
          "if (jsonData.uuid !== undefined) {",
          "    postman.setEnvironmentVariable(\"document_id\", jsonData.uuid);",
          "}"
        ]
      }
    }
  ],
  "request": {
    "method": "POST",
    "header": [
      {
        "key": "Authorization",
        "value": "Bearer {{access_token}}",
        "disabled": true
      },
      {
        "key": "Authorization",
        "value": "API-Key {{api_key}}",
        "type": "text"
      },
      {
        "key": "Content-Type",
        "value": "application/json"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{  \n    \"name\": \"API Sample Document from PandaDoc Template\",\n    \"template_uuid\": \"{{template_id}}\",\n    \"folder_uuid\": \"{{documents_folder_uuid}}\",\n    \"recipients\": [  \n        {  \n            \"email\": \"{{recipient_email}}\",\n            \"first_name\": \"Jane\",\n            \"last_name\": \"Roe\",\n            \"role\": \"user\"\n        }\n    ],\n    \"tokens\": [  \n        {  \n            \"name\": \"Favorite.Pet\",\n            \"value\": \"Panda\"\n        }\n    ],\n    \"fields\": {  \n        \"Favorite.Color\": {  \n            \"value\": \"PandaDoc green\"\n        },\n        \"Delivery\": {\n        \t\"value\": \"Same Day Delivery\"\n        },\n        \"Like\": {\n        \t\"value\": true\n        },\n        \"Date\": {\n        \t\"value\": \"2019-12-31T00:00:00.000Z\"\n        }\n    },\n    \"metadata\":{  \n        \"opp_id\": \"123456\",\n        \"my_favorite_pet\": \"Panda\"\n    },\n    \"tags\": [\n        \"created_via_api\",\n        \"test_document\"\n\t], \n    \"pricing_tables\": [  \n        {  \n            \"name\": \"PricingTable1\",\n            \"options\": {  \n                \"currency\": \"USD\",\n                \"discount\": {  \n                    \"is_global\": true,\n                    \"type\": \"absolute\",\n                    \"name\": \"Global Discount\",\n                    \"value\": 2.26\n                }\n            },\n            \"sections\": [  \n                {  \n                    \"title\": \"Sample Section\",\n                    \"default\": true,\n                    \"rows\": [  \n                        {  \n                            \"options\": {  \n                                \"optional\": true,\n                                \"optional_selected\": true,\n                                \"qty_editable\": true\n                            },\n                            \"data\":{  \n                                \"name\": \"Toy Panda\",\n                                \"description\": \"Fluffy!\",\n                                \"price\": 10,\n                                \"qty\": 3,\n                                \"tax_first\": {  \n                                    \"value\": 7.5,\n                                    \"type\": \"percent\"\n                                }\n                            },\n                            \"custom_fields\": {  \n                                \"Fluffiness\": \"5 / 5\"\n                            }\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}"
    },
    "url": {
      "raw": "https://api.pandadoc.com/public/v1/documents",
      "protocol": "https",
      "host": [
        "api",
        "pandadoc",
        "com"
      ],
      "path": [
        "public",
        "v1",
        "documents"
      ]
    },
    "description": "Provide value to variables: template_id and documents_folder_uuid ([Postman environments](https://www.getpostman.com/docs/postman/environments_and_globals/manage_environments) is great for it).\n\nFor details and the sample template go to [https://developers.pandadoc.com/v1/reference#create-document-from-pandadoc-template](https://developers.pandadoc.com/v1/reference#create-document-from-pandadoc-template).\n\nFor details of document creation in general go to [https://developers.pandadoc.com/v1/reference#new-document](https://developers.pandadoc.com/v1/reference#new-document)."
  },
  "response": [
  ]
}