Tcl
Tcl
Shippo Create a Batch
See more Shippo Examples
Demonstrates how to create and purchase up to 10,000 shipments in a single API request.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# 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.
# {
# "default_carrier_account": "078870331023437cb917f5187429b093",
# "default_servicelevel_token": "usps_priority",
# "label_filetype": "PDF_4x6",
# "metadata": "BATCH #170",
# "batch_shipments": [
# {
# "shipment": {
# "address_from": {
# "name": "Mr Hippo",
# "street1": "965 Mission St",
# "street2": "Ste 201",
# "city": "San Francisco",
# "state": "CA",
# "zip": "94103",
# "country": "US",
# "phone": "4151234567",
# "email": "mrhippo@goshippo.com"
# },
# "address_to": {
# "name": "Mrs Hippo",
# "company": "",
# "street1": "Broadway 1",
# "street2": "",
# "city": "New York",
# "state": "NY",
# "zip": "10007",
# "country": "US",
# "phone": "4151234567",
# "email": "mrshippo@goshippo.com"
# },
# "parcels": [
# {
# "length": "5",
# "width": "5",
# "height": "5",
# "distance_unit": "in",
# "weight": "2",
# "mass_unit": "oz"
# }
# ]
# }
# },
# {
# "shipment": {
# "address_from": {
# "name": "Mr Hippo",
# "street1": "1092 Indian Summer Ct",
# "city": "San Jose",
# "state": "CA",
# "zip": "95122",
# "country": "US",
# "phone": "4151234567",
# "email": "mrhippo@goshippo.com"
# },
# "address_to": {
# "name": "Mrs Hippo",
# "company": "",
# "street1": "Broadway 1",
# "street2": "",
# "city": "New York",
# "state": "NY",
# "zip": "10007",
# "country": "US",
# "phone": "4151234567",
# "email": "mrshippo@goshippo.com"
# },
# "parcels": [
# {
# "length": "5",
# "width": "5",
# "height": "5",
# "distance_unit": "in",
# "weight": "20",
# "mass_unit": "lb"
# }
# ]
# },
# "carrier_account": "a4391cd4ab974f478f55dc08b5c8e3b3",
# "servicelevel_token": "fedex_2_day"
# }
# ]
# }
set json [new_CkJsonObject]
CkJsonObject_UpdateString $json "default_carrier_account" "078870331023437cb917f5187429b093"
CkJsonObject_UpdateString $json "default_servicelevel_token" "usps_priority"
CkJsonObject_UpdateString $json "label_filetype" "PDF_4x6"
CkJsonObject_UpdateString $json "metadata" "BATCH #170"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.name" "Mr Hippo"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.street1" "965 Mission St"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.street2" "Ste 201"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.city" "San Francisco"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.state" "CA"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.zip" "94103"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.country" "US"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.phone" "4151234567"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_from.email" "mrhippo@goshippo.com"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.name" "Mrs Hippo"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.company" ""
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.street1" "Broadway 1"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.street2" ""
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.city" "New York"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.state" "NY"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.zip" "10007"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.country" "US"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.phone" "4151234567"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.address_to.email" "mrshippo@goshippo.com"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.parcels[0].length" "5"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.parcels[0].width" "5"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.parcels[0].height" "5"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.parcels[0].distance_unit" "in"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.parcels[0].weight" "2"
CkJsonObject_UpdateString $json "batch_shipments[0].shipment.parcels[0].mass_unit" "oz"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_from.name" "Mr Hippo"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_from.street1" "1092 Indian Summer Ct"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_from.city" "San Jose"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_from.state" "CA"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_from.zip" "95122"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_from.country" "US"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_from.phone" "4151234567"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_from.email" "mrhippo@goshippo.com"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.name" "Mrs Hippo"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.company" ""
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.street1" "Broadway 1"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.street2" ""
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.city" "New York"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.state" "NY"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.zip" "10007"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.country" "US"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.phone" "4151234567"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.address_to.email" "mrshippo@goshippo.com"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.parcels[0].length" "5"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.parcels[0].width" "5"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.parcels[0].height" "5"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.parcels[0].distance_unit" "in"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.parcels[0].weight" "20"
CkJsonObject_UpdateString $json "batch_shipments[1].shipment.parcels[0].mass_unit" "lb"
CkJsonObject_UpdateString $json "batch_shipments[1].carrier_account" "a4391cd4ab974f478f55dc08b5c8e3b3"
CkJsonObject_UpdateString $json "batch_shipments[1].servicelevel_token" "fedex_2_day"
CkHttp_SetRequestHeader $http "Authorization" "ShippoToken shippo_test_3af5d574e2f845d30efcaf9b2f47d9c2aef4807a"
CkHttp_SetRequestHeader $http "Content-Type" "application/json"
set resp [new_CkHttpResponse]
set success [CkHttp_HttpJson $http "POST" "https://api.goshippo.com/batches/" $json "application/json" $resp]
if {$success == 0} then {
puts [CkHttp_lastErrorText $http]
delete_CkHttp $http
delete_CkJsonObject $json
delete_CkHttpResponse $resp
exit
}
set sbResponseBody [new_CkStringBuilder]
CkHttpResponse_GetBodySb $resp $sbResponseBody
set jResp [new_CkJsonObject]
CkJsonObject_LoadSb $jResp $sbResponseBody
CkJsonObject_put_EmitCompact $jResp 0
puts "Response Body:"
puts [CkJsonObject_emit $jResp]
set respStatusCode [CkHttpResponse_get_StatusCode $resp]
puts "Response Status Code = $respStatusCode"
if {$respStatusCode >= 400} then {
puts "Response Header:"
puts [CkHttpResponse_header $resp]
puts "Failed."
delete_CkHttp $http
delete_CkJsonObject $json
delete_CkHttpResponse $resp
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jResp
exit
}
# Sample JSON response:
# (Sample code for parsing the JSON response is shown below)
# {
# "object_id": "a015eb693cca465dbb6523ce6d2e3c65",
# "object_owner": "admin",
# "status": "VALIDATING",
# "object_created": "2016-09-12T15:25:43.465Z",
# "object_updated": "2016-09-12T15:25:43.465Z",
# "metadata": "BATCH #170",
# "default_carrier_account": "078870331023437cb917f5187429b093",
# "default_servicelevel_token": "usps_priority",
# "label_filetype": "PDF_4x6",
# "batch_shipments": {
# "next": null,
# "previous": null,
# "results": [
# ]
# },
# "object_results": {
# "purchase_succeeded": 0,
# "purchase_failed": 0,
# "creation_failed": 0,
# "creation_succeeded": 0
# },
# "label_url": [
# ]
# }
# Sample code for parsing the JSON response...
# Use the following online tool to generate parsing code from sample JSON:
# Generate Parsing Code from JSON
set object_id [CkJsonObject_stringOf $jResp "object_id"]
set object_owner [CkJsonObject_stringOf $jResp "object_owner"]
set status [CkJsonObject_stringOf $jResp "status"]
set object_created [CkJsonObject_stringOf $jResp "object_created"]
set object_updated [CkJsonObject_stringOf $jResp "object_updated"]
set metadata [CkJsonObject_stringOf $jResp "metadata"]
set default_carrier_account [CkJsonObject_stringOf $jResp "default_carrier_account"]
set default_servicelevel_token [CkJsonObject_stringOf $jResp "default_servicelevel_token"]
set label_filetype [CkJsonObject_stringOf $jResp "label_filetype"]
set batch_shipmentsNext [CkJsonObject_stringOf $jResp "batch_shipments.next"]
set batch_shipmentsPrevious [CkJsonObject_stringOf $jResp "batch_shipments.previous"]
set object_resultsPurchase_succeeded [CkJsonObject_IntOf $jResp "object_results.purchase_succeeded"]
set object_resultsPurchase_failed [CkJsonObject_IntOf $jResp "object_results.purchase_failed"]
set object_resultsCreation_failed [CkJsonObject_IntOf $jResp "object_results.creation_failed"]
set object_resultsCreation_succeeded [CkJsonObject_IntOf $jResp "object_results.creation_succeeded"]
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "batch_shipments.results"]
while {$i < $count_i} {
CkJsonObject_put_I $jResp $i
set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "label_url"]
while {$i < $count_i} {
CkJsonObject_put_I $jResp $i
set i [expr $i + 1]
}
delete_CkHttp $http
delete_CkJsonObject $json
delete_CkHttpResponse $resp
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jResp