Chilkat Online Tools

TCL / PandaDoc API Reference / Create Document from PandaDoc Template

Back to Collection Items

load ./chilkat.dll

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set http [new_CkHttp]

# 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": "Simple API Sample Document from PandaDoc Template",
#   "template_uuid": "{{template_id}}",
#   "recipients": [
#     {
#       "email": "{{recipient_email}}",
#       "first_name": "Josh",
#       "last_name": "Ron",
#       "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": {
#     "my_favorite_pet": "Panda"
#   },
#   "tags": [
#     "created_via_api",
#     "test_document"
#   ],
#   "images": [
#     {
#       "name": "Image 1",
#       "urls": [
#         "https://s3.amazonaws.com/pd-static-content/public-docs/pandadoc-panda-bear.png"
#       ]
#     }
#   ],
#   "pricing_tables": [
#     {
#       "name": "Pricing Table 1",
#       "options": {
#         "discount": {
#           "type": "absolute",
#           "name": "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"
#               }
#             }
#           ]
#         }
#       ]
#     }
#   ]
# }

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "name" "Simple API Sample Document from PandaDoc Template"
CkJsonObject_UpdateString $json "template_uuid" "{{template_id}}"
CkJsonObject_UpdateString $json "recipients[0].email" "{{recipient_email}}"
CkJsonObject_UpdateString $json "recipients[0].first_name" "Josh"
CkJsonObject_UpdateString $json "recipients[0].last_name" "Ron"
CkJsonObject_UpdateString $json "recipients[0].role" "user"
CkJsonObject_UpdateString $json "tokens[0].name" "Favorite.Pet"
CkJsonObject_UpdateString $json "tokens[0].value" "Panda"
CkJsonObject_UpdateString $json "fields.\"Favorite.Color\".value" "PandaDoc green"
CkJsonObject_UpdateString $json "fields.Delivery.value" "Same Day Delivery"
CkJsonObject_UpdateBool $json "fields.Like.value" 1
CkJsonObject_UpdateString $json "fields.Date.value" "2019-12-31T00:00:00.000Z"
CkJsonObject_UpdateString $json "metadata.my_favorite_pet" "Panda"
CkJsonObject_UpdateString $json "tags[0]" "created_via_api"
CkJsonObject_UpdateString $json "tags[1]" "test_document"
CkJsonObject_UpdateString $json "images[0].name" "Image 1"
CkJsonObject_UpdateString $json "images[0].urls[0]" "https://s3.amazonaws.com/pd-static-content/public-docs/pandadoc-panda-bear.png"
CkJsonObject_UpdateString $json "pricing_tables[0].name" "Pricing Table 1"
CkJsonObject_UpdateString $json "pricing_tables[0].options.discount.type" "absolute"
CkJsonObject_UpdateString $json "pricing_tables[0].options.discount.name" "Discount"
CkJsonObject_UpdateNumber $json "pricing_tables[0].options.discount.value" "2.26"
CkJsonObject_UpdateString $json "pricing_tables[0].sections[0].title" "Sample Section"
CkJsonObject_UpdateBool $json "pricing_tables[0].sections[0].default" 1
CkJsonObject_UpdateBool $json "pricing_tables[0].sections[0].rows[0].options.optional" 1
CkJsonObject_UpdateBool $json "pricing_tables[0].sections[0].rows[0].options.optional_selected" 1
CkJsonObject_UpdateBool $json "pricing_tables[0].sections[0].rows[0].options.qty_editable" 1
CkJsonObject_UpdateString $json "pricing_tables[0].sections[0].rows[0].data.name" "Toy Panda"
CkJsonObject_UpdateString $json "pricing_tables[0].sections[0].rows[0].data.description" "Fluffy!"
CkJsonObject_UpdateInt $json "pricing_tables[0].sections[0].rows[0].data.price" 10
CkJsonObject_UpdateInt $json "pricing_tables[0].sections[0].rows[0].data.qty" 3
CkJsonObject_UpdateNumber $json "pricing_tables[0].sections[0].rows[0].data.tax_first.value" "7.5"
CkJsonObject_UpdateString $json "pricing_tables[0].sections[0].rows[0].data.tax_first.type" "percent"
CkJsonObject_UpdateString $json "pricing_tables[0].sections[0].rows[0].custom_fields.Fluffiness" "5 / 5"

CkHttp_SetRequestHeader $http "Authorization" "API-Key {{api_key}}"
CkHttp_SetRequestHeader $http "Content-Type" "application/json"

# resp is a CkHttpResponse
set resp [CkHttp_PostJson3 $http "https://api.pandadoc.com/public/v1/documents" "application/json" $json]
if {[CkHttp_get_LastMethodSuccess $http] == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkJsonObject $json
    exit
}

puts [CkHttpResponse_get_StatusCode $resp]
puts [CkHttpResponse_bodyStr $resp]
delete_CkHttpResponse $resp


delete_CkHttp $http
delete_CkJsonObject $json

Curl Command

curl -X POST
	-H "Authorization: Bearer {{access_token}}"
	-H "Authorization: API-Key {{api_key}}"
	-H "Content-Type: application/json"
	-d '{
    "name": "Simple API Sample Document from PandaDoc Template",
    "template_uuid": "{{template_id}}",
    "recipients": [
        {
            "email": "{{recipient_email}}",
            "first_name": "Josh",
            "last_name": "Ron",
            "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": {
        "my_favorite_pet": "Panda"
    },
    "tags": [
        "created_via_api",
        "test_document"
    ],
    "images": [
        {
            "name": "Image 1",
            "urls": [
                "https://s3.amazonaws.com/pd-static-content/public-docs/pandadoc-panda-bear.png"
            ]
        }
    ],
    "pricing_tables": [
        {
            "name": "Pricing Table 1",
            "options": {
                "discount": {
                    "type": "absolute",
                    "name": "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 from PandaDoc Template",
  "event": [
    {
      "listen": "test",
      "script": {
        "exec": [
          "var jsonData = JSON.parse(responseBody);",
          "if (jsonData.uuid !== undefined) {",
          "    postman.setEnvironmentVariable(\"document_id\", jsonData.uuid);",
          "}"
        ],
        "type": "text/javascript"
      }
    }
  ],
  "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\": \"Simple API Sample Document from PandaDoc Template\",\n    \"template_uuid\": \"{{template_id}}\",\n    \"recipients\": [\n        {\n            \"email\": \"{{recipient_email}}\",\n            \"first_name\": \"Josh\",\n            \"last_name\": \"Ron\",\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            \"value\": \"Same Day Delivery\"\n        },\n        \"Like\": {\n            \"value\": true\n        },\n        \"Date\": {\n            \"value\": \"2019-12-31T00:00:00.000Z\"\n        }\n    },\n    \"metadata\": {\n        \"my_favorite_pet\": \"Panda\"\n    },\n    \"tags\": [\n        \"created_via_api\",\n        \"test_document\"\n    ],\n    \"images\": [\n        {\n            \"name\": \"Image 1\",\n            \"urls\": [\n                \"https://s3.amazonaws.com/pd-static-content/public-docs/pandadoc-panda-bear.png\"\n            ]\n        }\n    ],\n    \"pricing_tables\": [\n        {\n            \"name\": \"Pricing Table 1\",\n            \"options\": {\n                \"discount\": {\n                    \"type\": \"absolute\",\n                    \"name\": \"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 variable: template_id ([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": [
  ]
}