| POST | /picup/createshipment |
|---|
namespace WebService.ClientServiceModel
open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations
[<AllowNullLiteral>]
type LinkedWaypoint() =
member val FromWaypointNumber:Int32 = new Int32() with get,set
member val ToWaypointNumber:Int32 = new Int32() with get,set
member val FromLatitude:Double = new Double() with get,set
member val FromLongitude:Double = new Double() with get,set
member val ToLatitude:Double = new Double() with get,set
member val ToLongitude:Double = new Double() with get,set
[<AllowNullLiteral>]
type WaypointQuoteInformation() =
inherit LinkedWaypoint()
///<summary>
///Distance between waypoints as a number
///</summary>
[<ApiMember(Description="Distance between waypoints as a number")>]
member val Distance:Double = new Double() with get,set
///<summary>
///String formatted distance
///</summary>
[<ApiMember(Description="String formatted distance")>]
member val DistanceValue:String = null with get,set
member val WaypointValid:Boolean = new Boolean() with get,set
member val Message:String = null with get,set
member val ErrorDetails:ResizeArray<String> = new ResizeArray<String>() with get,set
///<summary>
///Caculated price between waypoints excluding vat
///</summary>
[<ApiMember(Description="Caculated price between waypoints excluding vat")>]
member val Price:Decimal = new Decimal() with get,set
///<summary>
///Price excluding vat formatted as a string rand value
///</summary>
[<ApiMember(Description="Price excluding vat formatted as a string rand value")>]
member val PriceValue:String = null with get,set
///<summary>
///The price between waypoints including vat
///</summary>
[<ApiMember(Description="The price between waypoints including vat")>]
member val PriceWithVAT:Decimal = new Decimal() with get,set
///<summary>
///The price including vat formatted as a rand value string
///</summary>
[<ApiMember(Description="The price including vat formatted as a rand value string")>]
member val PriceValueWithVAT:String = null with get,set
[<AllowNullLiteral>]
type WaypointValidationInformation() =
member val WaypointNumber:Int32 = new Int32() with get,set
member val IsValid:Boolean = new Boolean() with get,set
member val ErrorMessages:ResizeArray<String> = new ResizeArray<String>() with get,set
[<AllowNullLiteral>]
type PicUpCreateShipmentResponse() =
[<DataMember(Name="is_success")>]
member val IsSuccess:Boolean = new Boolean() with get,set
[<DataMember(Name="courier_reference")>]
member val CourierReference:String = null with get,set
[<DataMember(Name="error")>]
member val Error:String = null with get,set
///<summary>
///List of order information for pricing etc between each waypoint
///</summary>
[<ApiMember(Description="List of order information for pricing etc between each waypoint")>]
member val Waypoints:ResizeArray<WaypointQuoteInformation> = new ResizeArray<WaypointQuoteInformation>() with get,set
///<summary>
///List with validation information for each waypoint
///</summary>
[<ApiMember(Description="List with validation information for each waypoint")>]
member val WaypointValidations:ResizeArray<WaypointValidationInformation> = new ResizeArray<WaypointValidationInformation>() with get,set
///<summary>
///The 1Fetch Waybill reference for the shipment
///</summary>
[<ApiMember(Description="The 1Fetch Waybill reference for the shipment")>]
member val Waybill:String = null with get,set
[<AllowNullLiteral>]
type BucketDetails() =
[<DataMember(Name="delivery_date")>]
member val DeliveryDate:DateTimeOffset = new DateTimeOffset() with get,set
[<AllowNullLiteral>]
type CourierRequest() =
[<DataMember(Name="bucket_details")>]
member val BucketDetails:BucketDetails = null with get,set
[<DataMember(Name="shipments")>]
member val Shipments:Shipment[] = [||] with get,set
[<AllowNullLiteral>]
type PicUpCreateShipmentRequest() =
member val ApiKey:String = null with get,set
[<DataMember(Name="courier_request")>]
member val CourierRequest:CourierRequest = null with get,set
[<AllowNullLiteral>]
type Address() =
[<DataMember(Name="address_line_1")>]
member val AddressLine1:String = null with get,set
[<DataMember(Name="address_line_2")>]
member val AddressLine2:String = null with get,set
[<DataMember(Name="address_line_3")>]
member val AddressLine3:String = null with get,set
[<DataMember(Name="address_line_4")>]
member val AddressLine4:String = null with get,set
[<DataMember(Name="city")>]
member val City:String = null with get,set
[<DataMember(Name="formatted_address")>]
member val FormattedAddress:String = null with get,set
[<DataMember(Name="latitude")>]
member val Latitude:Double = new Double() with get,set
[<DataMember(Name="longitude")>]
member val Longitude:Double = new Double() with get,set
[<DataMember(Name="postal_code")>]
member val PostalCode:String = null with get,set
[<DataMember(Name="suburb")>]
member val Suburb:String = null with get,set
[<DataMember(Name="unit")>]
member val Unit:String = null with get,set
[<DataMember(Name="building")>]
member val Building:String = null with get,set
[<AllowNullLiteral>]
type Contact() =
[<DataMember(Name="customer_name")>]
member val CustomerName:String = null with get,set
[<DataMember(Name="customer_phone")>]
member val CustomerPhone:String = null with get,set
[<DataMember(Name="email_address")>]
member val EmailAddress:String = null with get,set
[<DataMember(Name="special_instructions")>]
member val SpecialInstructions:String = null with get,set
[<AllowNullLiteral>]
type Sender() =
[<DataMember(Name="address")>]
member val Address:Address = null with get,set
[<DataMember(Name="contact")>]
member val Contact:Contact = null with get,set
[<AllowNullLiteral>]
type Receiver() =
[<DataMember(Name="parcels")>]
member val Parcels:Parcel[] = [||] with get,set
[<DataMember(Name="address")>]
member val Address:Address = null with get,set
[<DataMember(Name="contact")>]
member val Contact:Contact = null with get,set
[<AllowNullLiteral>]
type Shipment() =
[<DataMember(Name="waybill_number")>]
member val WaybillNumber:String = null with get,set
[<DataMember(Name="business_reference")>]
member val BusinessReference:String = null with get,set
[<DataMember(Name="service_type")>]
member val ServiceType:String = null with get,set
[<DataMember(Name="sender")>]
member val Sender:Sender = null with get,set
[<DataMember(Name="receiver")>]
member val Receiver:Receiver = null with get,set
[<AllowNullLiteral>]
type Parcel() =
[<DataMember(Name="parcel_waybill")>]
member val ParcelWaybill:String = null with get,set
[<DataMember(Name="parcel_reference")>]
member val ParcelReference:String = null with get,set
[<DataMember(Name="tracking_number")>]
member val TrackingNumber:String = null with get,set
[<DataMember(Name="length_mm")>]
member val LengthMm:Int64 = new Int64() with get,set
[<DataMember(Name="width_mm")>]
member val WidthMm:Int64 = new Int64() with get,set
[<DataMember(Name="height_mm")>]
member val HeightMm:Int64 = new Int64() with get,set
[<DataMember(Name="weight_kg")>]
member val WeightKg:Int64 = new Int64() with get,set
F# 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
}