| GET | /dealers/order/tracking | Retrieves tracking numbers based on order number. |
|---|
import 'package:servicestack/servicestack.dart';
abstract class AuthenticatedRequest
{
/**
* Session token received from successful authentication.
*/
// @ApiMember(Description="Session token received from successful authentication.", IsRequired=true, ParameterType="query")
String SessionToken = "";
AuthenticatedRequest({this.SessionToken=""});
AuthenticatedRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
SessionToken = json['SessionToken'] ?? "";
return this;
}
Map<String, dynamic> toJson() => {
'SessionToken': SessionToken
};
getTypeName() => "AuthenticatedRequest";
TypeContext? context = _ctx;
}
enum OrderStatus
{
Open,
Completed,
Cancelled,
}
class ShipmentArticleResult implements IConvertible
{
/**
* Order number.
*/
// @ApiMember(Description="Order number.")
String? OrderNumber;
/**
* Article number.
*/
// @ApiMember(Description="Article number.")
String? ArticleNumber;
/**
* Quantity.
*/
// @ApiMember(Description="Quantity.")
int Quantity = 0;
/**
* Custom reference.
*/
// @ApiMember(Description="Custom reference.")
String? CustomReference;
ShipmentArticleResult({this.OrderNumber,this.ArticleNumber,this.Quantity=0,this.CustomReference});
ShipmentArticleResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
OrderNumber = json['OrderNumber'];
ArticleNumber = json['ArticleNumber'];
Quantity = json['Quantity'] ?? 0;
CustomReference = json['CustomReference'];
return this;
}
Map<String, dynamic> toJson() => {
'OrderNumber': OrderNumber,
'ArticleNumber': ArticleNumber,
'Quantity': Quantity,
'CustomReference': CustomReference
};
getTypeName() => "ShipmentArticleResult";
TypeContext? context = _ctx;
}
class ShipmentPackageResult implements IConvertible
{
/**
* Shipment method.
*/
// @ApiMember(Description="Shipment method.")
String? ShipmentMethod;
/**
* Tracking number.
*/
// @ApiMember(Description="Tracking number.")
String? TrackingNumber;
/**
* Tracking URL.
*/
// @ApiMember(Description="Tracking URL.")
String? TrackingUrl;
ShipmentPackageResult({this.ShipmentMethod,this.TrackingNumber,this.TrackingUrl});
ShipmentPackageResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ShipmentMethod = json['ShipmentMethod'];
TrackingNumber = json['TrackingNumber'];
TrackingUrl = json['TrackingUrl'];
return this;
}
Map<String, dynamic> toJson() => {
'ShipmentMethod': ShipmentMethod,
'TrackingNumber': TrackingNumber,
'TrackingUrl': TrackingUrl
};
getTypeName() => "ShipmentPackageResult";
TypeContext? context = _ctx;
}
class ShipmentResult implements IConvertible
{
/**
* ID of the shipment.
*/
// @ApiMember(Description="ID of the shipment.")
int ShipmentId = 0;
/**
* Determines of the shipment has been dispatched.
*/
// @ApiMember(Description="Determines of the shipment has been dispatched.")
bool? HasBeenDispatched;
/**
* Date/time of dispatch.
*/
// @ApiMember(Description="Date/time of dispatch.")
DateTime? DispatchDate;
/**
* List of articles in shipment.
*/
// @ApiMember(Description="List of articles in shipment.")
List<ShipmentArticleResult>? Articles;
/**
* List of packages for shipment.
*/
// @ApiMember(Description="List of packages for shipment.")
List<ShipmentPackageResult>? Packages;
ShipmentResult({this.ShipmentId=0,this.HasBeenDispatched,this.DispatchDate,this.Articles,this.Packages});
ShipmentResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ShipmentId = json['ShipmentId'] ?? 0;
HasBeenDispatched = json['HasBeenDispatched'];
DispatchDate = JsonConverters.fromJson(json['DispatchDate'],'DateTime',context!);
Articles = JsonConverters.fromJson(json['Articles'],'List<ShipmentArticleResult>',context!);
Packages = JsonConverters.fromJson(json['Packages'],'List<ShipmentPackageResult>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ShipmentId': ShipmentId,
'HasBeenDispatched': HasBeenDispatched,
'DispatchDate': JsonConverters.toJson(DispatchDate,'DateTime',context!),
'Articles': JsonConverters.toJson(Articles,'List<ShipmentArticleResult>',context!),
'Packages': JsonConverters.toJson(Packages,'List<ShipmentPackageResult>',context!)
};
getTypeName() => "ShipmentResult";
TypeContext? context = _ctx;
}
class OrderTrackingResult implements IConvertible
{
/**
* Order number.
*/
// @ApiMember(Description="Order number.")
String? OrderNumber;
/**
* Order date.
*/
// @ApiMember(Description="Order date.")
DateTime? OrderDate;
/**
* Order status.
*/
// @ApiMember(Description="Order status.")
OrderStatus? Status;
/**
* List of shipments (if any).
*/
// @ApiMember(Description="List of shipments (if any).")
List<ShipmentResult>? Shipments;
OrderTrackingResult({this.OrderNumber,this.OrderDate,this.Status,this.Shipments});
OrderTrackingResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
OrderNumber = json['OrderNumber'];
OrderDate = JsonConverters.fromJson(json['OrderDate'],'DateTime',context!) ?? DateTime(0);
Status = JsonConverters.fromJson(json['Status'],'OrderStatus',context!);
Shipments = JsonConverters.fromJson(json['Shipments'],'List<ShipmentResult>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'OrderNumber': OrderNumber,
'OrderDate': JsonConverters.toJson(OrderDate,'DateTime',context!),
'Status': JsonConverters.toJson(Status,'OrderStatus',context!),
'Shipments': JsonConverters.toJson(Shipments,'List<ShipmentResult>',context!)
};
getTypeName() => "OrderTrackingResult";
TypeContext? context = _ctx;
}
class OperationResult implements IConvertible
{
/**
* Specifies if the operation was successful.
*/
// @ApiMember(Description="Specifies if the operation was successful.", ParameterType="model")
bool? IsSuccessful;
/**
* States error message in case of unsuccessful operation.
*/
// @ApiMember(Description="States error message in case of unsuccessful operation.", ParameterType="model")
String? ErrorMessage;
OperationResult({this.IsSuccessful,this.ErrorMessage});
OperationResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
IsSuccessful = json['IsSuccessful'];
ErrorMessage = json['ErrorMessage'];
return this;
}
Map<String, dynamic> toJson() => {
'IsSuccessful': IsSuccessful,
'ErrorMessage': ErrorMessage
};
getTypeName() => "OperationResult";
TypeContext? context = _ctx;
}
class PartInfoResultImage implements IConvertible
{
/**
* Image number
*/
// @ApiMember(Description="Image number")
int ImageNumber = 0;
/**
* Image URL
*/
// @ApiMember(Description="Image URL")
String? ImageUrl;
PartInfoResultImage({this.ImageNumber=0,this.ImageUrl});
PartInfoResultImage.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ImageNumber = json['ImageNumber'] ?? 0;
ImageUrl = json['ImageUrl'];
return this;
}
Map<String, dynamic> toJson() => {
'ImageNumber': ImageNumber,
'ImageUrl': ImageUrl
};
getTypeName() => "PartInfoResultImage";
TypeContext? context = _ctx;
}
class PartStockQuantity implements IConvertible
{
/**
* Location ID
*/
// @ApiMember(Description="Location ID")
int LocationId = 0;
/**
* Location code
*/
// @ApiMember(Description="Location code")
String? LocationCode;
/**
* Stock quantity in location
*/
// @ApiMember(Description="Stock quantity in location")
int StockQuantity = 0;
PartStockQuantity({this.LocationId=0,this.LocationCode,this.StockQuantity=0});
PartStockQuantity.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
LocationId = json['LocationId'] ?? 0;
LocationCode = json['LocationCode'];
StockQuantity = json['StockQuantity'] ?? 0;
return this;
}
Map<String, dynamic> toJson() => {
'LocationId': LocationId,
'LocationCode': LocationCode,
'StockQuantity': StockQuantity
};
getTypeName() => "PartStockQuantity";
TypeContext? context = _ctx;
}
class PartInfoResult implements IConvertible
{
/**
* Unique ID for the part.
*/
// @ApiMember(Description="Unique ID for the part.")
int Id = 0;
/**
* Part number.
*/
// @ApiMember(Description="Part number.")
String? PartNumber;
/**
* Description of the part.
*/
// @ApiMember(Description="Description of the part.")
String? Description;
/**
* Part manufacturer.
*/
// @ApiMember(Description="Part manufacturer.")
String? Manufacturer;
/**
* Determines if the part can be ordered.
*/
// @ApiMember(Description="Determines if the part can be ordered.")
bool? CanBeOrdered;
/**
* Textual representation of the status of the part.
*/
// @ApiMember(Description="Textual representation of the status of the part.")
String? StatusText;
/**
* Available stock to order.
*/
// @ApiMember(Description="Available stock to order.")
int AvailableStockQuantity = 0;
/**
* Average days needed for delivery.
*/
// @ApiMember(Description="Average days needed for delivery.")
int? AverageDeliveryInDays;
/**
* Price of a single unit, excluding VAT.
*/
// @ApiMember(Description="Price of a single unit, excluding VAT.")
double? UnitPrice;
/**
* EAN number.
*/
// @ApiMember(Description="EAN number.")
String? EanNumber;
/**
* Images
*/
// @ApiMember(Description="Images")
List<PartInfoResultImage>? Images;
/**
* Secondary article numbers
*/
// @ApiMember(Description="Secondary article numbers")
List<String>? SecondaryArticleNumbers;
/**
* Replacement article numbers
*/
// @ApiMember(Description="Replacement article numbers")
List<String>? ReplacementArticleNumbers;
/**
* Stock quantities
*/
// @ApiMember(Description="Stock quantities")
List<PartStockQuantity>? StockQuantities;
PartInfoResult({this.Id=0,this.PartNumber,this.Description,this.Manufacturer,this.CanBeOrdered,this.StatusText,this.AvailableStockQuantity=0,this.AverageDeliveryInDays,this.UnitPrice,this.EanNumber,this.Images,this.SecondaryArticleNumbers,this.ReplacementArticleNumbers,this.StockQuantities});
PartInfoResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Id = json['Id'] ?? 0;
PartNumber = json['PartNumber'];
Description = json['Description'];
Manufacturer = json['Manufacturer'];
CanBeOrdered = json['CanBeOrdered'];
StatusText = json['StatusText'];
AvailableStockQuantity = json['AvailableStockQuantity'] ?? 0;
AverageDeliveryInDays = json['AverageDeliveryInDays'];
UnitPrice = JsonConverters.toDouble(json['UnitPrice']);
EanNumber = json['EanNumber'];
Images = JsonConverters.fromJson(json['Images'],'List<PartInfoResultImage>',context!);
SecondaryArticleNumbers = JsonConverters.fromJson(json['SecondaryArticleNumbers'],'List<String>',context!);
ReplacementArticleNumbers = JsonConverters.fromJson(json['ReplacementArticleNumbers'],'List<String>',context!);
StockQuantities = JsonConverters.fromJson(json['StockQuantities'],'List<PartStockQuantity>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Id': Id,
'PartNumber': PartNumber,
'Description': Description,
'Manufacturer': Manufacturer,
'CanBeOrdered': CanBeOrdered,
'StatusText': StatusText,
'AvailableStockQuantity': AvailableStockQuantity,
'AverageDeliveryInDays': AverageDeliveryInDays,
'UnitPrice': UnitPrice,
'EanNumber': EanNumber,
'Images': JsonConverters.toJson(Images,'List<PartInfoResultImage>',context!),
'SecondaryArticleNumbers': JsonConverters.toJson(SecondaryArticleNumbers,'List<String>',context!),
'ReplacementArticleNumbers': JsonConverters.toJson(ReplacementArticleNumbers,'List<String>',context!),
'StockQuantities': JsonConverters.toJson(StockQuantities,'List<PartStockQuantity>',context!)
};
getTypeName() => "PartInfoResult";
TypeContext? context = _ctx;
}
class PartResults implements IConvertible
{
/**
* Total number of parts available.
*/
// @ApiMember(Description="Total number of parts available.")
int TotalNumberOfParts = 0;
/**
* Indication if there are more parts to retrieve.
*/
// @ApiMember(Description="Indication if there are more parts to retrieve.")
bool? HasMoreRecords;
/**
* Part records.
*/
// @ApiMember(Description="Part records.")
List<PartInfoResult>? Parts;
PartResults({this.TotalNumberOfParts=0,this.HasMoreRecords,this.Parts});
PartResults.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
TotalNumberOfParts = json['TotalNumberOfParts'] ?? 0;
HasMoreRecords = json['HasMoreRecords'];
Parts = JsonConverters.fromJson(json['Parts'],'List<PartInfoResult>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'TotalNumberOfParts': TotalNumberOfParts,
'HasMoreRecords': HasMoreRecords,
'Parts': JsonConverters.toJson(Parts,'List<PartInfoResult>',context!)
};
getTypeName() => "PartResults";
TypeContext? context = _ctx;
}
class OperationResult1<T> extends OperationResult implements IConvertible
{
/**
* Result value
*/
// @ApiMember(Description="Result value", ParameterType="model")
PartResults? Result;
OperationResult1({this.Result});
OperationResult1.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
Result = JsonConverters.fromJson(json['Result'],'PartResults',context!);
return this;
}
Map<String, dynamic> toJson() => super.toJson()..addAll({
'Result': JsonConverters.toJson(Result,'PartResults',context!)
});
getTypeName() => "OperationResult<$T>";
TypeContext? context = _ctx;
}
class OrderTrackingResponse extends OperationResult1<OrderTrackingResult> implements IConvertible
{
OrderTrackingResponse();
OrderTrackingResponse.fromJson(Map<String, dynamic> json) : super.fromJson(json);
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
return this;
}
Map<String, dynamic> toJson() => super.toJson();
getTypeName() => "OrderTrackingResponse";
TypeContext? context = _ctx;
}
class GetOrderTracking extends AuthenticatedRequest implements IConvertible
{
/**
* Order number to retrieve tracking for.
*/
// @ApiMember(Description="Order number to retrieve tracking for.", IsRequired=true)
String OrderNumber = "";
GetOrderTracking({this.OrderNumber=""});
GetOrderTracking.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
OrderNumber = json['OrderNumber'] ?? "";
return this;
}
Map<String, dynamic> toJson() => super.toJson()..addAll({
'OrderNumber': OrderNumber
});
getTypeName() => "GetOrderTracking";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'services.acct.2service.nl', types: <String, TypeInfo> {
'AuthenticatedRequest': TypeInfo(TypeOf.AbstractClass),
'OrderStatus': TypeInfo(TypeOf.Enum, enumValues:OrderStatus.values),
'ShipmentArticleResult': TypeInfo(TypeOf.Class, create:() => ShipmentArticleResult()),
'ShipmentPackageResult': TypeInfo(TypeOf.Class, create:() => ShipmentPackageResult()),
'ShipmentResult': TypeInfo(TypeOf.Class, create:() => ShipmentResult()),
'List<ShipmentArticleResult>': TypeInfo(TypeOf.Class, create:() => <ShipmentArticleResult>[]),
'List<ShipmentPackageResult>': TypeInfo(TypeOf.Class, create:() => <ShipmentPackageResult>[]),
'OrderTrackingResult': TypeInfo(TypeOf.Class, create:() => OrderTrackingResult()),
'List<ShipmentResult>': TypeInfo(TypeOf.Class, create:() => <ShipmentResult>[]),
'OperationResult': TypeInfo(TypeOf.Class, create:() => OperationResult()),
'PartInfoResultImage': TypeInfo(TypeOf.Class, create:() => PartInfoResultImage()),
'PartStockQuantity': TypeInfo(TypeOf.Class, create:() => PartStockQuantity()),
'PartInfoResult': TypeInfo(TypeOf.Class, create:() => PartInfoResult()),
'List<PartInfoResultImage>': TypeInfo(TypeOf.Class, create:() => <PartInfoResultImage>[]),
'List<PartStockQuantity>': TypeInfo(TypeOf.Class, create:() => <PartStockQuantity>[]),
'PartResults': TypeInfo(TypeOf.Class, create:() => PartResults()),
'List<PartInfoResult>': TypeInfo(TypeOf.Class, create:() => <PartInfoResult>[]),
'OperationResult1<T>': TypeInfo(TypeOf.Class, create:() => OperationResult1<T>()),
'OrderTrackingResponse': TypeInfo(TypeOf.Class, create:() => OrderTrackingResponse()),
'GetOrderTracking': TypeInfo(TypeOf.Class, create:() => GetOrderTracking()),
});
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
}