| GET | /dealers/order/tracking | Retrieves tracking numbers based on order number. |
|---|
import Foundation
import ServiceStack
public class GetOrderTracking : AuthenticatedRequest
{
/**
* Order number to retrieve tracking for.
*/
// @ApiMember(Description="Order number to retrieve tracking for.", IsRequired=true)
public var orderNumber:String
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case orderNumber
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
orderNumber = try container.decodeIfPresent(String.self, forKey: .orderNumber)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if orderNumber != nil { try container.encode(orderNumber, forKey: .orderNumber) }
}
}
public class AuthenticatedRequest : Codable
{
/**
* Session token received from successful authentication.
*/
// @ApiMember(Description="Session token received from successful authentication.", IsRequired=true, ParameterType="query")
public var sessionToken:String
required public init(){}
}
public class OrderTrackingResponse : OperationResult_1<OrderTrackingResult>
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class OperationResult_1<T : Codable> : OperationResult
{
/**
* Result value
*/
// @ApiMember(Description="Result value", ParameterType="model")
public var result:PartResults
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case result
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
result = try container.decodeIfPresent(PartResults.self, forKey: .result)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if result != nil { try container.encode(result, forKey: .result) }
}
}
public class OperationResult : Codable
{
/**
* Specifies if the operation was successful.
*/
// @ApiMember(Description="Specifies if the operation was successful.", ParameterType="model")
public var isSuccessful:Bool
/**
* States error message in case of unsuccessful operation.
*/
// @ApiMember(Description="States error message in case of unsuccessful operation.", ParameterType="model")
public var errorMessage:String
required public init(){}
}
public class PartResults : Codable
{
/**
* Total number of parts available.
*/
// @ApiMember(Description="Total number of parts available.")
public var totalNumberOfParts:Int
/**
* Indication if there are more parts to retrieve.
*/
// @ApiMember(Description="Indication if there are more parts to retrieve.")
public var hasMoreRecords:Bool
/**
* Part records.
*/
// @ApiMember(Description="Part records.")
public var parts:[PartInfoResult]
required public init(){}
}
public class PartInfoResult : Codable
{
/**
* Unique ID for the part.
*/
// @ApiMember(Description="Unique ID for the part.")
public var id:Int
/**
* Part number.
*/
// @ApiMember(Description="Part number.")
public var partNumber:String
/**
* Description of the part.
*/
// @ApiMember(Description="Description of the part.")
public var Description:String
/**
* Part manufacturer.
*/
// @ApiMember(Description="Part manufacturer.")
public var manufacturer:String
/**
* Determines if the part can be ordered.
*/
// @ApiMember(Description="Determines if the part can be ordered.")
public var canBeOrdered:Bool
/**
* Textual representation of the status of the part.
*/
// @ApiMember(Description="Textual representation of the status of the part.")
public var statusText:String
/**
* Available stock to order.
*/
// @ApiMember(Description="Available stock to order.")
public var availableStockQuantity:Int
/**
* Average days needed for delivery.
*/
// @ApiMember(Description="Average days needed for delivery.")
public var averageDeliveryInDays:Int?
/**
* Price of a single unit, excluding VAT.
*/
// @ApiMember(Description="Price of a single unit, excluding VAT.")
public var unitPrice:Double?
/**
* EAN number.
*/
// @ApiMember(Description="EAN number.")
public var eanNumber:String
/**
* Images
*/
// @ApiMember(Description="Images")
public var images:[PartInfoResultImage]
/**
* Secondary article numbers
*/
// @ApiMember(Description="Secondary article numbers")
public var secondaryArticleNumbers:[String]
/**
* Replacement article numbers
*/
// @ApiMember(Description="Replacement article numbers")
public var replacementArticleNumbers:[String]
/**
* Stock quantities
*/
// @ApiMember(Description="Stock quantities")
public var stockQuantities:[PartStockQuantity]
required public init(){}
}
public class PartInfoResultImage : Codable
{
/**
* Image number
*/
// @ApiMember(Description="Image number")
public var imageNumber:Int
/**
* Image URL
*/
// @ApiMember(Description="Image URL")
public var imageUrl:String
required public init(){}
}
public class PartStockQuantity : Codable
{
/**
* Location ID
*/
// @ApiMember(Description="Location ID")
public var locationId:Int
/**
* Location code
*/
// @ApiMember(Description="Location code")
public var locationCode:String
/**
* Stock quantity in location
*/
// @ApiMember(Description="Stock quantity in location")
public var stockQuantity:Int
required public init(){}
}
public class OrderTrackingResult : Codable
{
/**
* Order number.
*/
// @ApiMember(Description="Order number.")
public var orderNumber:String
/**
* Order date.
*/
// @ApiMember(Description="Order date.")
public var orderDate:Date
/**
* Order status.
*/
// @ApiMember(Description="Order status.")
public var status:OrderStatus
/**
* List of shipments (if any).
*/
// @ApiMember(Description="List of shipments (if any).")
public var shipments:[ShipmentResult]
required public init(){}
}
public enum OrderStatus : Int, Codable
{
case Open = 1
case Completed = 2
case Cancelled = 3
}
public class ShipmentResult : Codable
{
/**
* ID of the shipment.
*/
// @ApiMember(Description="ID of the shipment.")
public var shipmentId:Int
/**
* Determines of the shipment has been dispatched.
*/
// @ApiMember(Description="Determines of the shipment has been dispatched.")
public var hasBeenDispatched:Bool
/**
* Date/time of dispatch.
*/
// @ApiMember(Description="Date/time of dispatch.")
public var dispatchDate:Date?
/**
* List of articles in shipment.
*/
// @ApiMember(Description="List of articles in shipment.")
public var articles:[ShipmentArticleResult]
/**
* List of packages for shipment.
*/
// @ApiMember(Description="List of packages for shipment.")
public var packages:[ShipmentPackageResult]
required public init(){}
}
public class ShipmentArticleResult : Codable
{
/**
* Order number.
*/
// @ApiMember(Description="Order number.")
public var orderNumber:String
/**
* Article number.
*/
// @ApiMember(Description="Article number.")
public var articleNumber:String
/**
* Quantity.
*/
// @ApiMember(Description="Quantity.")
public var quantity:Int
/**
* Custom reference.
*/
// @ApiMember(Description="Custom reference.")
public var customReference:String
required public init(){}
}
public class ShipmentPackageResult : Codable
{
/**
* Shipment method.
*/
// @ApiMember(Description="Shipment method.")
public var shipmentMethod:String
/**
* Tracking number.
*/
// @ApiMember(Description="Tracking number.")
public var trackingNumber:String
/**
* Tracking URL.
*/
// @ApiMember(Description="Tracking URL.")
public var trackingUrl:String
required public init(){}
}
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.
GET /dealers/order/tracking HTTP/1.1 Host: services.acct.2service.nl Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
Result:
{
OrderNumber: String,
OrderDate: 0001-01-01,
Status: Open,
Shipments:
[
{
ShipmentId: 0,
HasBeenDispatched: False,
DispatchDate: 0001-01-01,
Articles:
[
{
OrderNumber: String,
ArticleNumber: String,
Quantity: 0,
CustomReference: String
}
],
Packages:
[
{
ShipmentMethod: String,
TrackingNumber: String,
TrackingUrl: String
}
]
}
]
},
IsSuccessful: False,
ErrorMessage: String
}