1Fetch Client API

<back to all web services

PicUpCreateShipmentRequest

The following routes are available for this service:
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

HTTP + 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
}