Delphi DLL EasyPost: Create Return for a Shipment

Back to Index

Create a return for an EasyPost shipment.

Documentation: https://www.easypost.com/docs/api#create-return-for-a-shipment

CURL Command

curl -X POST https://api.easypost.com/v2/shipments \
  -u <YOUR_TEST/PRODUCTION_API_KEY>: \
  -d 'shipment[to_address][id]=adr_...' \
  -d 'shipment[from_address][id]=adr_...' \
  -d 'shipment[parcel][id]=prcl_...' \
  -d 'shipment[is_return]=true'

Delphi DLL Example

var
rest: HCkRest;
success: Boolean;
bTls: Boolean;
port: Integer;
bAutoReconnect: Boolean;
strResponseBody: PWideChar;
jsonResponse: HCkJsonObject;
id: PWideChar;
object: PWideChar;
mode: PWideChar;
to_addressId: PWideChar;
to_addressObject: PWideChar;
to_addressName: PWideChar;
to_addressCompany: Boolean;
to_addressStreet1: PWideChar;
to_addressStreet2: Boolean;
to_addressCity: PWideChar;
to_addressState: PWideChar;
to_addressZip: PWideChar;
to_addressCountry: PWideChar;
to_addressPhone: PWideChar;
to_addressEmail: Boolean;
to_addressCreated_at: PWideChar;
to_addressUpdated_at: PWideChar;
from_addressId: PWideChar;
from_addressObject: PWideChar;
from_addressName: PWideChar;
from_addressCompany: Boolean;
from_addressStreet1: PWideChar;
from_addressStreet2: PWideChar;
from_addressCity: PWideChar;
from_addressState: PWideChar;
from_addressZip: PWideChar;
from_addressCountry: PWideChar;
from_addressPhone: PWideChar;
from_addressEmail: Boolean;
from_addressCreated_at: PWideChar;
from_addressUpdated_at: PWideChar;
parcelId: PWideChar;
parcelObject: PWideChar;
parcelLength: Integer;
parcelWidth: Integer;
parcelHeight: Integer;
parcelPredefined_package: Boolean;
parcelWeight: Integer;
parcelCreated_at: PWideChar;
parcelUpdated_at: PWideChar;
customs_info: Boolean;
scan_form: Boolean;
selected_rate: Boolean;
postage_label: Boolean;
is_return: Boolean;
tracking_code: Boolean;
refund_status: Boolean;
insurance: Boolean;
created_at: PWideChar;
updated_at: PWideChar;
i: Integer;
count_i: Integer;
service: PWideChar;
rate: PWideChar;
carrier: PWideChar;
shipment_id: PWideChar;

begin
rest := CkRest_Create();

//  URL: https://api.easypost.com/v2/shipments
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,'shipment[to_address][id]','adr_...');
CkRest_AddQueryParam(rest,'shipment[from_address][id]','adr_...');
CkRest_AddQueryParam(rest,'shipment[parcel][id]','prcl_...');
CkRest_AddQueryParam(rest,'shipment[is_return]','true');

strResponseBody := CkRest__fullRequestFormUrlEncoded(rest,'POST','/v2/shipments');
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');
to_addressId := CkJsonObject__stringOf(jsonResponse,'to_address.id');
to_addressObject := CkJsonObject__stringOf(jsonResponse,'to_address.object');
to_addressName := CkJsonObject__stringOf(jsonResponse,'to_address.name');
to_addressCompany := CkJsonObject_IsNullOf(jsonResponse,'to_address.company');
to_addressStreet1 := CkJsonObject__stringOf(jsonResponse,'to_address.street1');
to_addressStreet2 := CkJsonObject_IsNullOf(jsonResponse,'to_address.street2');
to_addressCity := CkJsonObject__stringOf(jsonResponse,'to_address.city');
to_addressState := CkJsonObject__stringOf(jsonResponse,'to_address.state');
to_addressZip := CkJsonObject__stringOf(jsonResponse,'to_address.zip');
to_addressCountry := CkJsonObject__stringOf(jsonResponse,'to_address.country');
to_addressPhone := CkJsonObject__stringOf(jsonResponse,'to_address.phone');
to_addressEmail := CkJsonObject_IsNullOf(jsonResponse,'to_address.email');
to_addressCreated_at := CkJsonObject__stringOf(jsonResponse,'to_address.created_at');
to_addressUpdated_at := CkJsonObject__stringOf(jsonResponse,'to_address.updated_at');
from_addressId := CkJsonObject__stringOf(jsonResponse,'from_address.id');
from_addressObject := CkJsonObject__stringOf(jsonResponse,'from_address.object');
from_addressName := CkJsonObject__stringOf(jsonResponse,'from_address.name');
from_addressCompany := CkJsonObject_IsNullOf(jsonResponse,'from_address.company');
from_addressStreet1 := CkJsonObject__stringOf(jsonResponse,'from_address.street1');
from_addressStreet2 := CkJsonObject__stringOf(jsonResponse,'from_address.street2');
from_addressCity := CkJsonObject__stringOf(jsonResponse,'from_address.city');
from_addressState := CkJsonObject__stringOf(jsonResponse,'from_address.state');
from_addressZip := CkJsonObject__stringOf(jsonResponse,'from_address.zip');
from_addressCountry := CkJsonObject__stringOf(jsonResponse,'from_address.country');
from_addressPhone := CkJsonObject__stringOf(jsonResponse,'from_address.phone');
from_addressEmail := CkJsonObject_IsNullOf(jsonResponse,'from_address.email');
from_addressCreated_at := CkJsonObject__stringOf(jsonResponse,'from_address.created_at');
from_addressUpdated_at := CkJsonObject__stringOf(jsonResponse,'from_address.updated_at');
parcelId := CkJsonObject__stringOf(jsonResponse,'parcel.id');
parcelObject := CkJsonObject__stringOf(jsonResponse,'parcel.object');
parcelLength := CkJsonObject_IntOf(jsonResponse,'parcel.length');
parcelWidth := CkJsonObject_IntOf(jsonResponse,'parcel.width');
parcelHeight := CkJsonObject_IntOf(jsonResponse,'parcel.height');
parcelPredefined_package := CkJsonObject_IsNullOf(jsonResponse,'parcel.predefined_package');
parcelWeight := CkJsonObject_IntOf(jsonResponse,'parcel.weight');
parcelCreated_at := CkJsonObject__stringOf(jsonResponse,'parcel.created_at');
parcelUpdated_at := CkJsonObject__stringOf(jsonResponse,'parcel.updated_at');
customs_info := CkJsonObject_IsNullOf(jsonResponse,'customs_info');
scan_form := CkJsonObject_IsNullOf(jsonResponse,'scan_form');
selected_rate := CkJsonObject_IsNullOf(jsonResponse,'selected_rate');
postage_label := CkJsonObject_IsNullOf(jsonResponse,'postage_label');
is_return := CkJsonObject_BoolOf(jsonResponse,'is_return');
tracking_code := CkJsonObject_IsNullOf(jsonResponse,'tracking_code');
refund_status := CkJsonObject_IsNullOf(jsonResponse,'refund_status');
insurance := CkJsonObject_IsNullOf(jsonResponse,'insurance');
created_at := CkJsonObject__stringOf(jsonResponse,'created_at');
updated_at := CkJsonObject__stringOf(jsonResponse,'updated_at');
i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'rates');
while i < count_i do
  begin
CkJsonObject_putI(jsonResponse,i);
    id := CkJsonObject__stringOf(jsonResponse,'rates[i].id');
    object := CkJsonObject__stringOf(jsonResponse,'rates[i].object');
    service := CkJsonObject__stringOf(jsonResponse,'rates[i].service');
    rate := CkJsonObject__stringOf(jsonResponse,'rates[i].rate');
    carrier := CkJsonObject__stringOf(jsonResponse,'rates[i].carrier');
    shipment_id := CkJsonObject__stringOf(jsonResponse,'rates[i].shipment_id');
    created_at := CkJsonObject__stringOf(jsonResponse,'rates[i].created_at');
    updated_at := CkJsonObject__stringOf(jsonResponse,'rates[i].updated_at');
    i := i + 1;
  end;

CkRest_Dispose(rest);
CkJsonObject_Dispose(jsonResponse);

Sample JSON Response Body

{
  "id": "shp_vN9h7XLn",
  "object": "Shipment",
  "mode": "test",
  "to_address": {
    "id": "adr_zMlCRtmt",
    "object": "Address",
    "name": "Maggie Simpson",
    "company": null,
    "street1": "742 Evergreen Terrace",
    "street2": null,
    "city": "Springfield",
    "state": "KY",
    "zip": "40069",
    "country": "US",
    "phone": "4163334444",
    "email": null,
    "created_at": "2013-04-22T05:39:56Z",
    "updated_at": "2013-04-22T05:39:56Z"
  },
  "from_address": {
    "id": "adr_VgoLT6Ex",
    "object": "Address",
    "name": "EasyPost",
    "company": null,
    "street1": "417 Montgomery Street",
    "street2": "5th Floor",
    "city": "San Francisco",
    "state": "CA",
    "zip": "94104",
    "country": "US",
    "phone": "4154567890",
    "email": null,
    "created_at": "2013-04-22T05:39:57Z",
    "updated_at": "2013-04-22T05:39:57Z"
  },
  "parcel": {
    "id": "prcl_SI55pjx8",
    "object": "Parcel",
    "length": 20.2,
    "width": 10.9,
    "height": 5.0,
    "predefined_package": null,
    "weight": 140.8,
    "created_at": "2013-04-22T05:39:57Z",
    "updated_at": "2013-04-22T05:39:57Z"
  },
  "customs_info": null,
  "rates": [
    {
      "id": "rate_oZqapNpE",
      "object": "Rate",
      "service": "ExpressMailInternational",
      "rate": "35.48",
      "carrier": "USPS",
      "shipment_id": "shp_vN9h7XLn",
      "created_at": "2013-04-22T05:40:57Z",
      "updated_at": "2013-04-22T05:40:57Z"
    },
    {
      "id": "rate_Dc5Q9Zfo",
      "object": "Rate",
      "service": "GXG",
      "rate": "55.41",
      "carrier": "USPS",
      "shipment_id": "shp_vN9h7XLn",
      "created_at": "2013-04-22T05:40:57Z",
      "updated_at": "2013-04-22T05:40:57Z"
    }
  ],
  "scan_form": null,
  "selected_rate": null,
  "postage_label": null,
  "is_return": true,
  "tracking_code": null,
  "refund_status": null,
  "insurance": null,
  "created_at": "2013-04-22T05:40:57Z",
  "updated_at": "2013-04-22T05:40:57Z"
}