/* Options: Date: 2025-12-06 06:38:26 Version: 8.0 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.1fetch.co.za //Package: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: PicUpCreateShipmentRequest.* //ExcludeTypes: //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: java.math.*,java.util.*,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.* */ import java.math.* import java.util.* import net.servicestack.client.* import com.google.gson.annotations.* import com.google.gson.reflect.* @Route(Path="/picup/createshipment", Verbs="POST") open class PicUpCreateShipmentRequest : IReturn, IHasApiKey, ILogRequest { var ApiKey:String? = null @DataMember(Name="courier_request") @SerializedName("courier_request") var CourierRequest:CourierRequest? = null companion object { private val responseType = PicUpCreateShipmentResponse::class.java } override fun getResponseType(): Any? = PicUpCreateShipmentRequest.responseType } open class PicUpCreateShipmentResponse { @DataMember(Name="is_success") @SerializedName("is_success") var IsSuccess:Boolean? = null @DataMember(Name="courier_reference") @SerializedName("courier_reference") var CourierReference:String? = null @DataMember(Name="error") @SerializedName("error") var Error:String? = null /** * List of order information for pricing etc between each waypoint */ @ApiMember(Description="List of order information for pricing etc between each waypoint") var Waypoints:ArrayList = ArrayList() /** * List with validation information for each waypoint */ @ApiMember(Description="List with validation information for each waypoint") var WaypointValidations:ArrayList = ArrayList() /** * The 1Fetch Waybill reference for the shipment */ @ApiMember(Description="The 1Fetch Waybill reference for the shipment") var Waybill:String? = null } open interface IHasApiKey { var ApiKey:String? } open interface ILogRequest { } open class CourierRequest { @DataMember(Name="bucket_details") @SerializedName("bucket_details") var BucketDetails:BucketDetails? = null @DataMember(Name="shipments") @SerializedName("shipments") var Shipments:ArrayList? = null } open class WaypointQuoteInformation : LinkedWaypoint() { /** * Distance between waypoints as a number */ @ApiMember(Description="Distance between waypoints as a number") var Distance:Double? = null /** * String formatted distance */ @ApiMember(Description="String formatted distance") var DistanceValue:String? = null var WaypointValid:Boolean? = null var Message:String? = null var ErrorDetails:ArrayList = ArrayList() /** * Caculated price between waypoints excluding vat */ @ApiMember(Description="Caculated price between waypoints excluding vat") var Price:BigDecimal? = null /** * Price excluding vat formatted as a string rand value */ @ApiMember(Description="Price excluding vat formatted as a string rand value") var PriceValue:String? = null /** * The price between waypoints including vat */ @ApiMember(Description="The price between waypoints including vat") var PriceWithVAT:BigDecimal? = null /** * The price including vat formatted as a rand value string */ @ApiMember(Description="The price including vat formatted as a rand value string") var PriceValueWithVAT:String? = null } open class WaypointValidationInformation { var WaypointNumber:Int? = null var IsValid:Boolean? = null var ErrorMessages:ArrayList = ArrayList() } open class BucketDetails { @DataMember(Name="delivery_date") @SerializedName("delivery_date") var DeliveryDate:Date? = null } open class LinkedWaypoint { var FromWaypointNumber:Int? = null var ToWaypointNumber:Int? = null var FromLatitude:Double? = null var FromLongitude:Double? = null var ToLatitude:Double? = null var ToLongitude:Double? = null }