Delphi DLL EasyPost: Create a Tracker

Back to Index

Create an EasyPost tracker.

Documentation: https://www.easypost.com/docs/api#create-a-tracker

CURL Command

curl -X POST https://api.easypost.com/v2/trackers \
  -u <YOUR_TEST/PRODUCTION_API_KEY>: \
  -d 'tracker[tracking_code]=9400110898825022579493' \
  -d 'tracker[carrier]=USPS'

Delphi DLL Example

var
rest: HCkRest;
success: Boolean;
bTls: Boolean;
port: Integer;
bAutoReconnect: Boolean;
strResponseBody: PWideChar;
jsonResponse: HCkJsonObject;
id: PWideChar;
object: PWideChar;
mode: PWideChar;
tracking_code: PWideChar;
status: PWideChar;
created_at: PWideChar;
updated_at: PWideChar;
signed_by: Boolean;
weight: Boolean;
est_delivery_date: Boolean;
shipment_id: Boolean;
carrier: PWideChar;
public_url: PWideChar;
carrier_detail: Boolean;
i: Integer;
count_i: Integer;
message: PWideChar;
datetime: PWideChar;
source: PWideChar;
tracking_locationObject: PWideChar;
tracking_locationCity: PWideChar;
tracking_locationState: PWideChar;
tracking_locationCountry: Boolean;
tracking_locationZip: PWideChar;
type: PWideChar;
amount: PWideChar;
charged: Boolean;
refunded: Boolean;

begin
rest := CkRest_Create();

//  URL: https://api.easypost.com/v2/trackers
bTls := True;
port := 443;
bAutoReconnect := True;
success := CkRest_Connect(rest,'api.easypost.com',port,bTls,bAutoReconnect);
if (success <> True) then
  begin
    Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(CkRest_getConnectFailReason(rest)));
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

CkRest_SetAuthBasic(rest,'<YOUR_TEST/PRODUCTION_API_KEY>','');

CkRest_AddQueryParam(rest,'tracker[tracking_code]','9400110898825022579493');
CkRest_AddQueryParam(rest,'tracker[carrier]','USPS');

strResponseBody := CkRest__fullRequestFormUrlEncoded(rest,'POST','/v2/trackers');
if (CkRest_getLastMethodSuccess(rest) <> True) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

jsonResponse := CkJsonObject_Create();
CkJsonObject_Load(jsonResponse,strResponseBody);

id := CkJsonObject__stringOf(jsonResponse,'id');
object := CkJsonObject__stringOf(jsonResponse,'object');
mode := CkJsonObject__stringOf(jsonResponse,'mode');
tracking_code := CkJsonObject__stringOf(jsonResponse,'tracking_code');
status := CkJsonObject__stringOf(jsonResponse,'status');
created_at := CkJsonObject__stringOf(jsonResponse,'created_at');
updated_at := CkJsonObject__stringOf(jsonResponse,'updated_at');
signed_by := CkJsonObject_IsNullOf(jsonResponse,'signed_by');
weight := CkJsonObject_IsNullOf(jsonResponse,'weight');
est_delivery_date := CkJsonObject_IsNullOf(jsonResponse,'est_delivery_date');
shipment_id := CkJsonObject_IsNullOf(jsonResponse,'shipment_id');
carrier := CkJsonObject__stringOf(jsonResponse,'carrier');
public_url := CkJsonObject__stringOf(jsonResponse,'public_url');
carrier_detail := CkJsonObject_IsNullOf(jsonResponse,'carrier_detail');
i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'tracking_details');
while i < count_i do
  begin
CkJsonObject_putI(jsonResponse,i);
    object := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].object');
    message := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].message');
    status := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].status');
    datetime := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].datetime');
    source := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].source');
    tracking_locationObject := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].tracking_location.object');
    tracking_locationCity := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].tracking_location.city');
    tracking_locationState := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].tracking_location.state');
    tracking_locationCountry := CkJsonObject_IsNullOf(jsonResponse,'tracking_details[i].tracking_location.country');
    tracking_locationZip := CkJsonObject__stringOf(jsonResponse,'tracking_details[i].tracking_location.zip');
    i := i + 1;
  end;

i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'fees');
while i < count_i do
  begin
CkJsonObject_putI(jsonResponse,i);
    object := CkJsonObject__stringOf(jsonResponse,'fees[i].object');
    type := CkJsonObject__stringOf(jsonResponse,'fees[i].type');
    amount := CkJsonObject__stringOf(jsonResponse,'fees[i].amount');
    charged := CkJsonObject_BoolOf(jsonResponse,'fees[i].charged');
    refunded := CkJsonObject_BoolOf(jsonResponse,'fees[i].refunded');
    i := i + 1;
  end;

CkRest_Dispose(rest);
CkJsonObject_Dispose(jsonResponse);

Sample JSON Response Body

{
  "id": "trk_c8e0edb5bb284caa934a0d3db23a148z",
  "object": "Tracker",
  "mode": "test",
  "tracking_code": "9400110898825022579493",
  "status": "in_transit",
  "created_at": "2016-01-13T21:52:28Z",
  "updated_at": "2016-01-13T21:52:32Z",
  "signed_by": null,
  "weight": null,
  "est_delivery_date": null,
  "shipment_id": null,
  "carrier": "USPS",
  "public_url": "https://track.easypost.com/djE6...",
  "tracking_details": [
    {
      "object": "TrackingDetail",
      "message": "Shipping Label Created",
      "status": "pre_transit",
      "datetime": "2015-12-31T15:58:00Z",
      "source": "USPS",
      "tracking_location": {
        "object": "TrackingLocation",
        "city": "FOUNTAIN VALLEY",
        "state": "CA",
        "country": null,
        "zip": "92708"
      }
    },
    {
      "object": "TrackingDetail",
      "message": "Arrived at Post Office",
      "status": "in_transit",
      "datetime": "2016-01-07T06:58:00Z",
      "source": "USPS",
      "tracking_location": {
        "object": "TrackingLocation",
        "city": "FOUNTAIN VALLEY",
        "state": "CA",
        "country": null,
        "zip": "92728"
      }
    }
  ],
  "carrier_detail": null,
  "fees": [
    {
      "object": "Fee",
      "type": "TrackerFee",
      "amount": "0.00000",
      "charged": true,
      "refunded": false
    }
  ]
}