Sample code for 30+ languages & platforms
PureBasic

Shippo Create a New Manifest

See more Shippo Examples

Demonstrates how to create a manifest for your shipments.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

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

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Implements the following CURL command:

    ; curl https://api.goshippo.com/manifests/
    ;     -H "Authorization: ShippoToken shippo_test_831a7a042784f523b95db65444e6e084b636764b" \
    ;     -H "Content-Type: application/json"  \
    ;     -d '{
    ;           "carrier_account": "b741b99f95e841639b54272834bc478c",
    ;           "shipment_date": "2014-05-16T23:59:59Z",
    ;           "address_from": "28828839a2b04e208ac2aa4945fbca9a",
    ;           "transactions": [
    ;             "64bba01845ef40d29374032599f22588", 
    ;             "c169aa586a844cc49da00d0272b590e1"
    ;             ],
    ;           "async": false
    ;         }'

    ; Use this online tool to generate code from sample JSON:
    ; Generate Code to Create JSON

    ; The following JSON is sent in the request body.

    ; {
    ;   "carrier_account": "b741b99f95e841639b54272834bc478c",
    ;   "shipment_date": "2014-05-16T23:59:59Z",
    ;   "address_from": "28828839a2b04e208ac2aa4945fbca9a",
    ;   "transactions": [
    ;     "64bba01845ef40d29374032599f22588",
    ;     "c169aa586a844cc49da00d0272b590e1"
    ;   ],
    ;   "async": false
    ; }

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(json,"carrier_account","b741b99f95e841639b54272834bc478c")
    CkJsonObject::ckUpdateString(json,"shipment_date","2014-05-16T23:59:59Z")
    CkJsonObject::ckUpdateString(json,"address_from","28828839a2b04e208ac2aa4945fbca9a")
    CkJsonObject::ckUpdateString(json,"transactions[0]","64bba01845ef40d29374032599f22588")
    CkJsonObject::ckUpdateString(json,"transactions[1]","c169aa586a844cc49da00d0272b590e1")
    CkJsonObject::ckUpdateBool(json,"async",0)

    CkHttp::ckSetRequestHeader(http,"Authorization","ShippoToken shippo_test_831a7a042784f523b95db65444e6e084b636764b")
    CkHttp::ckSetRequestHeader(http,"Content-Type","application/json")

    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpJson(http,"POST","https://api.goshippo.com/manifests/",json,"application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    sbResponseBody.i = CkStringBuilder::ckCreate()
    If sbResponseBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttpResponse::ckGetBodySb(resp,sbResponseBody)
    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(jResp,sbResponseBody)
    CkJsonObject::setCkEmitCompact(jResp, 0)

    Debug "Response Body:"
    Debug CkJsonObject::ckEmit(jResp)

    respStatusCode.i = CkHttpResponse::ckStatusCode(resp)
    Debug "Response Status Code = " + Str(respStatusCode)
    If respStatusCode >= 400
        Debug "Response Header:"
        Debug CkHttpResponse::ckHeader(resp)
        Debug "Failed."
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        CkStringBuilder::ckDispose(sbResponseBody)
        CkJsonObject::ckDispose(jResp)
        ProcedureReturn
    EndIf

    ; Sample JSON response:
    ; (Sample code for parsing the JSON response is shown below)

    ; {
    ;   "address_from": "28828839a2b04e208ac2aa4945fbca9a",
    ;   "carrier_account": "b741b99f95e841639b54272834bc478c",
    ;   "documents": [
    ;     "https://shippo-delivery.s3.amazonaws.com/0fadebf6f60c4aca95fa01bcc59c79ae.pdf?Signature=tlQU3RECwdHUQJQadwqg5bAzGFQ%3D&Expires=1402803835&AWSAccessKeyId=AKIAJTHP3LLFMYAWALIA"
    ;   ],
    ;   "object_created": "2014-05-16T03:43:52.765Z",
    ;   "object_id": "0fadebf6f60c4aca95fa01bcc59c79ae",
    ;   "object_owner": "mrhippo@goshippo.com",
    ;   "object_updated": "2014-05-16T03:43:55.445Z",
    ;   "shipment_date": "2014-05-16T23:59:59Z",
    ;   "status": "SUCCESS",
    ;   "transactions": [
    ;     "64bba01845ef40d29374032599f22588",
    ;     "c169aa586a844cc49da00d0272b590e1"
    ;   ]
    ; }

    ; Sample code for parsing the JSON response...
    ; Use the following online tool to generate parsing code from sample JSON:
    ; Generate Parsing Code from JSON

    strVal.s

    address_from.s = CkJsonObject::ckStringOf(jResp,"address_from")
    carrier_account.s = CkJsonObject::ckStringOf(jResp,"carrier_account")
    object_created.s = CkJsonObject::ckStringOf(jResp,"object_created")
    object_id.s = CkJsonObject::ckStringOf(jResp,"object_id")
    object_owner.s = CkJsonObject::ckStringOf(jResp,"object_owner")
    object_updated.s = CkJsonObject::ckStringOf(jResp,"object_updated")
    shipment_date.s = CkJsonObject::ckStringOf(jResp,"shipment_date")
    status.s = CkJsonObject::ckStringOf(jResp,"status")
    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(jResp,"documents")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        strVal = CkJsonObject::ckStringOf(jResp,"documents[i]")
        i = i + 1
    Wend
    i = 0
    count_i = CkJsonObject::ckSizeOfArray(jResp,"transactions")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        strVal = CkJsonObject::ckStringOf(jResp,"transactions[i]")
        i = i + 1
    Wend


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)
    CkHttpResponse::ckDispose(resp)
    CkStringBuilder::ckDispose(sbResponseBody)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure