| POST | /picup/createshipment |
|---|
export class LinkedWaypoint
{
public FromWaypointNumber: number;
public ToWaypointNumber: number;
public FromLatitude: number;
public FromLongitude: number;
public ToLatitude: number;
public ToLongitude: number;
public constructor(init?: Partial<LinkedWaypoint>) { (Object as any).assign(this, init); }
}
export class WaypointQuoteInformation extends LinkedWaypoint
{
/** @description Distance between waypoints as a number */
// @ApiMember(Description="Distance between waypoints as a number")
public Distance: number;
/** @description String formatted distance */
// @ApiMember(Description="String formatted distance")
public DistanceValue: string;
public WaypointValid: boolean;
public Message: string;
public ErrorDetails: string[];
/** @description Caculated price between waypoints excluding vat */
// @ApiMember(Description="Caculated price between waypoints excluding vat")
public Price: number;
/** @description Price excluding vat formatted as a string rand value */
// @ApiMember(Description="Price excluding vat formatted as a string rand value")
public PriceValue: string;
/** @description The price between waypoints including vat */
// @ApiMember(Description="The price between waypoints including vat")
public PriceWithVAT: number;
/** @description The price including vat formatted as a rand value string */
// @ApiMember(Description="The price including vat formatted as a rand value string")
public PriceValueWithVAT: string;
public constructor(init?: Partial<WaypointQuoteInformation>) { super(init); (Object as any).assign(this, init); }
}
export class WaypointValidationInformation
{
public WaypointNumber: number;
public IsValid: boolean;
public ErrorMessages: string[];
public constructor(init?: Partial<WaypointValidationInformation>) { (Object as any).assign(this, init); }
}
export class PicUpCreateShipmentResponse
{
// @DataMember(Name="is_success")
public is_success: boolean;
// @DataMember(Name="courier_reference")
public courier_reference: string;
// @DataMember(Name="error")
public error: string;
/** @description List of order information for pricing etc between each waypoint */
// @ApiMember(Description="List of order information for pricing etc between each waypoint")
public Waypoints: WaypointQuoteInformation[];
/** @description List with validation information for each waypoint */
// @ApiMember(Description="List with validation information for each waypoint")
public WaypointValidations: WaypointValidationInformation[];
/** @description The 1Fetch Waybill reference for the shipment */
// @ApiMember(Description="The 1Fetch Waybill reference for the shipment")
public Waybill: string;
public constructor(init?: Partial<PicUpCreateShipmentResponse>) { (Object as any).assign(this, init); }
}
export class BucketDetails
{
// @DataMember(Name="delivery_date")
public delivery_date: string;
public constructor(init?: Partial<BucketDetails>) { (Object as any).assign(this, init); }
}
export class CourierRequest
{
// @DataMember(Name="bucket_details")
public bucket_details: BucketDetails;
// @DataMember(Name="shipments")
public shipments: Shipment[];
public constructor(init?: Partial<CourierRequest>) { (Object as any).assign(this, init); }
}
export class PicUpCreateShipmentRequest implements IHasApiKey, ILogRequest
{
public ApiKey: string;
// @DataMember(Name="courier_request")
public courier_request: CourierRequest;
public constructor(init?: Partial<PicUpCreateShipmentRequest>) { (Object as any).assign(this, init); }
}
export class Address
{
// @DataMember(Name="address_line_1")
public address_line_1: string;
// @DataMember(Name="address_line_2")
public address_line_2: string;
// @DataMember(Name="address_line_3")
public address_line_3: string;
// @DataMember(Name="address_line_4")
public address_line_4: string;
// @DataMember(Name="city")
public city: string;
// @DataMember(Name="formatted_address")
public formatted_address: string;
// @DataMember(Name="latitude")
public latitude: number;
// @DataMember(Name="longitude")
public longitude: number;
// @DataMember(Name="postal_code")
public postal_code: string;
// @DataMember(Name="suburb")
public suburb: string;
// @DataMember(Name="unit")
public unit: string;
// @DataMember(Name="building")
public building: string;
public constructor(init?: Partial<Address>) { (Object as any).assign(this, init); }
}
export class Contact
{
// @DataMember(Name="customer_name")
public customer_name: string;
// @DataMember(Name="customer_phone")
public customer_phone: string;
// @DataMember(Name="email_address")
public email_address: string;
// @DataMember(Name="special_instructions")
public special_instructions: string;
public constructor(init?: Partial<Contact>) { (Object as any).assign(this, init); }
}
export class Sender
{
// @DataMember(Name="address")
public address: Address;
// @DataMember(Name="contact")
public contact: Contact;
public constructor(init?: Partial<Sender>) { (Object as any).assign(this, init); }
}
export class Receiver
{
// @DataMember(Name="parcels")
public parcels: Parcel[];
// @DataMember(Name="address")
public address: Address;
// @DataMember(Name="contact")
public contact: Contact;
public constructor(init?: Partial<Receiver>) { (Object as any).assign(this, init); }
}
export class Shipment
{
// @DataMember(Name="waybill_number")
public waybill_number: string;
// @DataMember(Name="business_reference")
public business_reference: string;
// @DataMember(Name="service_type")
public service_type: string;
// @DataMember(Name="sender")
public sender: Sender;
// @DataMember(Name="receiver")
public receiver: Receiver;
public constructor(init?: Partial<Shipment>) { (Object as any).assign(this, init); }
}
export class Parcel
{
// @DataMember(Name="parcel_waybill")
public parcel_waybill: string;
// @DataMember(Name="parcel_reference")
public parcel_reference: string;
// @DataMember(Name="tracking_number")
public tracking_number: string;
// @DataMember(Name="length_mm")
public length_mm: number;
// @DataMember(Name="width_mm")
public width_mm: number;
// @DataMember(Name="height_mm")
public height_mm: number;
// @DataMember(Name="weight_kg")
public weight_kg: number;
public constructor(init?: Partial<Parcel>) { (Object as any).assign(this, init); }
}
TypeScript PicUpCreateShipmentRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /picup/createshipment HTTP/1.1
Host: api.1fetch.co.za
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
ApiKey: String,
courier_request:
{
bucket_details:
{
delivery_date: 0001-01-01T00:00:00.0000000+00:00
},
shipments:
[
{
waybill_number: String,
business_reference: String,
service_type: String,
sender:
{
address:
{
address_line_1: String,
address_line_2: String,
address_line_3: String,
address_line_4: String,
city: String,
formatted_address: String,
latitude: 0,
longitude: 0,
postal_code: String,
suburb: String,
unit: String,
building: String
},
contact:
{
customer_name: String,
customer_phone: String,
email_address: String,
special_instructions: String
}
},
receiver:
{
parcels:
[
{
parcel_waybill: String,
parcel_reference: String,
tracking_number: String,
length_mm: 0,
width_mm: 0,
height_mm: 0,
weight_kg: 0
}
],
address:
{
address_line_1: String,
address_line_2: String,
address_line_3: String,
address_line_4: String,
city: String,
formatted_address: String,
latitude: 0,
longitude: 0,
postal_code: String,
suburb: String,
unit: String,
building: String
},
contact:
{
customer_name: String,
customer_phone: String,
email_address: String,
special_instructions: String
}
}
}
]
}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
is_success: False,
courier_reference: String,
error: String,
Waypoints:
[
{
}
],
WaypointValidations:
[
{
}
],
Waybill: String
}