/* Options: Date: 2026-02-14 10:19:04 SwiftVersion: 6.0 Version: 10.04 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://stf-api-uat.data-xchange.co.za //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: GetOrderById.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Order */ // @Route("/order/{Id}", "GET") // @Api(Description="Order") // @ApiResponse(Description="Order data", IsDefaultResponse=true, StatusCode=200) // @ApiResponse(Description="No Content", ResponseType=typeof(IReturnVoid), StatusCode=204) // @ApiResponse(Description="Specified argument was out of the range of valid values.", ResponseType=typeof(ArgumentOutOfRangeException), StatusCode=400) public class GetOrderById : IReturn, IGetDocumentById, Codable { public typealias Return = OrderMessage /** * Order ID or Token */ // @ApiMember(Description="Order ID or Token", ExcludeInSchema=true, ParameterType="path") public var id:String? required public init(){} } public class OrderMessage : Codable { public var header:Header? public var order:Order? required public init(){} } public protocol IGetDocumentById : ISingleEntityQuery { } public protocol ISingleEntityQuery { var id:String? { get set } } // @DataContract public class Header : Codable { // @DataMember(Name="documentIdentification") public var documentIdentification:DocumentIdentification? // @DataMember(Name="sender") public var sender:Partner? // @DataMember(Name="receiver") public var receiver:Partner? required public init(){} } public class TransactionalParty : Ecom_PartyIdentificationType { public var contact:[Contact] = [] public var address:Address? public var communicationChannel:[AvpList] = [] public var financialInstitutionInformation:FinancialInstitutionInformation? public var dutyFeeTaxRegistration:String? public var entityIdentification:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case contact case address case communicationChannel case financialInstitutionInformation case dutyFeeTaxRegistration case entityIdentification } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) contact = try container.decodeIfPresent([Contact].self, forKey: .contact) ?? [] address = try container.decodeIfPresent(Address.self, forKey: .address) communicationChannel = try container.decodeIfPresent([AvpList].self, forKey: .communicationChannel) ?? [] financialInstitutionInformation = try container.decodeIfPresent(FinancialInstitutionInformation.self, forKey: .financialInstitutionInformation) dutyFeeTaxRegistration = try container.decodeIfPresent(String.self, forKey: .dutyFeeTaxRegistration) entityIdentification = try container.decodeIfPresent(String.self, forKey: .entityIdentification) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if contact.count > 0 { try container.encode(contact, forKey: .contact) } if address != nil { try container.encode(address, forKey: .address) } if communicationChannel.count > 0 { try container.encode(communicationChannel, forKey: .communicationChannel) } if financialInstitutionInformation != nil { try container.encode(financialInstitutionInformation, forKey: .financialInstitutionInformation) } if dutyFeeTaxRegistration != nil { try container.encode(dutyFeeTaxRegistration, forKey: .dutyFeeTaxRegistration) } if entityIdentification != nil { try container.encode(entityIdentification, forKey: .entityIdentification) } } } public enum DocumentAction : String, Codable { case ADD case CHANGE_BY_REFRESH case DELETE case REJECTED } public enum DocumentStatus : String, Codable { case ADDITIONAL_TRANSMISSION case COPY case ORIGINAL } public class AvpList : Codable { public var code:String? public var value:String? required public init(){} } public class BaseDocument : Codable { public var currencyCode:String? public var creationDateTime:Date? public var documentActionCode:DocumentAction? public var documentStatusCode:DocumentStatus? public var documentStructureVersion:String? public var lastUpdateDateTime:Date? public var revisionNumber:Int? public var avpList:[AvpList] = [] required public init(){} } public class Order : BaseDocument { public var documentEffectiveDate:Date? public var additionalOrderInstruction:String? public var isApplicationReceiptAcknowledgementRequired:Bool? public var isOrderFreeOfExciseTaxDuty:Bool? public var note:String? public var orderEntryType:String? public var orderInstructionCode:String? public var orderPriority:String? public var orderTypeCode:String? public var totalMonetaryAmountExcludingTaxes:Double? public var totalMonetaryAmountIncludingTaxes:Double? public var totalTaxAmount:Double? public var paymentTerms:String? public var orderIdentification:Ecom_EntityIdentification? public var orderLogisticalInformation:OrderLogisticalInformation? public var administrativeUnit:[AdministrativeUnit] = [] public var deliveryTerms:DeliveryTerms? public var transactionalGenericReference:[AvpList] = [] public var referencedOrder:[ReferencedOrder] = [] public var billTo:TransactionalParty? public var buyer:TransactionalParty? public var pickupFrom:TransactionalParty? public var seller:TransactionalParty? public var ultimateConsignee:TransactionalParty? public var contract:DocumentReference? public var quoteNumber:DocumentReference? public var promotionalDeal:DocumentReference? public var tradeAgreement:DocumentReference? public var deliveryDateAccordingToSchedule:Date? public var latestDeliveryDate:Date? public var allowanceCharge:[AllowanceCharge] = [] public var orderLineItem:[OrderLineItem] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case documentEffectiveDate case additionalOrderInstruction case isApplicationReceiptAcknowledgementRequired case isOrderFreeOfExciseTaxDuty case note case orderEntryType case orderInstructionCode case orderPriority case orderTypeCode case totalMonetaryAmountExcludingTaxes case totalMonetaryAmountIncludingTaxes case totalTaxAmount case paymentTerms case orderIdentification case orderLogisticalInformation case administrativeUnit case deliveryTerms case transactionalGenericReference case referencedOrder case billTo case buyer case pickupFrom case seller case ultimateConsignee case contract case quoteNumber case promotionalDeal case tradeAgreement case deliveryDateAccordingToSchedule case latestDeliveryDate case allowanceCharge case orderLineItem } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) documentEffectiveDate = try container.decodeIfPresent(Date.self, forKey: .documentEffectiveDate) additionalOrderInstruction = try container.decodeIfPresent(String.self, forKey: .additionalOrderInstruction) isApplicationReceiptAcknowledgementRequired = try container.decodeIfPresent(Bool.self, forKey: .isApplicationReceiptAcknowledgementRequired) isOrderFreeOfExciseTaxDuty = try container.decodeIfPresent(Bool.self, forKey: .isOrderFreeOfExciseTaxDuty) note = try container.decodeIfPresent(String.self, forKey: .note) orderEntryType = try container.decodeIfPresent(String.self, forKey: .orderEntryType) orderInstructionCode = try container.decodeIfPresent(String.self, forKey: .orderInstructionCode) orderPriority = try container.decodeIfPresent(String.self, forKey: .orderPriority) orderTypeCode = try container.decodeIfPresent(String.self, forKey: .orderTypeCode) totalMonetaryAmountExcludingTaxes = try container.decodeIfPresent(Double.self, forKey: .totalMonetaryAmountExcludingTaxes) totalMonetaryAmountIncludingTaxes = try container.decodeIfPresent(Double.self, forKey: .totalMonetaryAmountIncludingTaxes) totalTaxAmount = try container.decodeIfPresent(Double.self, forKey: .totalTaxAmount) paymentTerms = try container.decodeIfPresent(String.self, forKey: .paymentTerms) orderIdentification = try container.decodeIfPresent(Ecom_EntityIdentification.self, forKey: .orderIdentification) orderLogisticalInformation = try container.decodeIfPresent(OrderLogisticalInformation.self, forKey: .orderLogisticalInformation) administrativeUnit = try container.decodeIfPresent([AdministrativeUnit].self, forKey: .administrativeUnit) ?? [] deliveryTerms = try container.decodeIfPresent(DeliveryTerms.self, forKey: .deliveryTerms) transactionalGenericReference = try container.decodeIfPresent([AvpList].self, forKey: .transactionalGenericReference) ?? [] referencedOrder = try container.decodeIfPresent([ReferencedOrder].self, forKey: .referencedOrder) ?? [] billTo = try container.decodeIfPresent(TransactionalParty.self, forKey: .billTo) buyer = try container.decodeIfPresent(TransactionalParty.self, forKey: .buyer) pickupFrom = try container.decodeIfPresent(TransactionalParty.self, forKey: .pickupFrom) seller = try container.decodeIfPresent(TransactionalParty.self, forKey: .seller) ultimateConsignee = try container.decodeIfPresent(TransactionalParty.self, forKey: .ultimateConsignee) contract = try container.decodeIfPresent(DocumentReference.self, forKey: .contract) quoteNumber = try container.decodeIfPresent(DocumentReference.self, forKey: .quoteNumber) promotionalDeal = try container.decodeIfPresent(DocumentReference.self, forKey: .promotionalDeal) tradeAgreement = try container.decodeIfPresent(DocumentReference.self, forKey: .tradeAgreement) deliveryDateAccordingToSchedule = try container.decodeIfPresent(Date.self, forKey: .deliveryDateAccordingToSchedule) latestDeliveryDate = try container.decodeIfPresent(Date.self, forKey: .latestDeliveryDate) allowanceCharge = try container.decodeIfPresent([AllowanceCharge].self, forKey: .allowanceCharge) ?? [] orderLineItem = try container.decodeIfPresent([OrderLineItem].self, forKey: .orderLineItem) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if documentEffectiveDate != nil { try container.encode(documentEffectiveDate, forKey: .documentEffectiveDate) } if additionalOrderInstruction != nil { try container.encode(additionalOrderInstruction, forKey: .additionalOrderInstruction) } if isApplicationReceiptAcknowledgementRequired != nil { try container.encode(isApplicationReceiptAcknowledgementRequired, forKey: .isApplicationReceiptAcknowledgementRequired) } if isOrderFreeOfExciseTaxDuty != nil { try container.encode(isOrderFreeOfExciseTaxDuty, forKey: .isOrderFreeOfExciseTaxDuty) } if note != nil { try container.encode(note, forKey: .note) } if orderEntryType != nil { try container.encode(orderEntryType, forKey: .orderEntryType) } if orderInstructionCode != nil { try container.encode(orderInstructionCode, forKey: .orderInstructionCode) } if orderPriority != nil { try container.encode(orderPriority, forKey: .orderPriority) } if orderTypeCode != nil { try container.encode(orderTypeCode, forKey: .orderTypeCode) } if totalMonetaryAmountExcludingTaxes != nil { try container.encode(totalMonetaryAmountExcludingTaxes, forKey: .totalMonetaryAmountExcludingTaxes) } if totalMonetaryAmountIncludingTaxes != nil { try container.encode(totalMonetaryAmountIncludingTaxes, forKey: .totalMonetaryAmountIncludingTaxes) } if totalTaxAmount != nil { try container.encode(totalTaxAmount, forKey: .totalTaxAmount) } if paymentTerms != nil { try container.encode(paymentTerms, forKey: .paymentTerms) } if orderIdentification != nil { try container.encode(orderIdentification, forKey: .orderIdentification) } if orderLogisticalInformation != nil { try container.encode(orderLogisticalInformation, forKey: .orderLogisticalInformation) } if administrativeUnit.count > 0 { try container.encode(administrativeUnit, forKey: .administrativeUnit) } if deliveryTerms != nil { try container.encode(deliveryTerms, forKey: .deliveryTerms) } if transactionalGenericReference.count > 0 { try container.encode(transactionalGenericReference, forKey: .transactionalGenericReference) } if referencedOrder.count > 0 { try container.encode(referencedOrder, forKey: .referencedOrder) } if billTo != nil { try container.encode(billTo, forKey: .billTo) } if buyer != nil { try container.encode(buyer, forKey: .buyer) } if pickupFrom != nil { try container.encode(pickupFrom, forKey: .pickupFrom) } if seller != nil { try container.encode(seller, forKey: .seller) } if ultimateConsignee != nil { try container.encode(ultimateConsignee, forKey: .ultimateConsignee) } if contract != nil { try container.encode(contract, forKey: .contract) } if quoteNumber != nil { try container.encode(quoteNumber, forKey: .quoteNumber) } if promotionalDeal != nil { try container.encode(promotionalDeal, forKey: .promotionalDeal) } if tradeAgreement != nil { try container.encode(tradeAgreement, forKey: .tradeAgreement) } if deliveryDateAccordingToSchedule != nil { try container.encode(deliveryDateAccordingToSchedule, forKey: .deliveryDateAccordingToSchedule) } if latestDeliveryDate != nil { try container.encode(latestDeliveryDate, forKey: .latestDeliveryDate) } if allowanceCharge.count > 0 { try container.encode(allowanceCharge, forKey: .allowanceCharge) } if orderLineItem.count > 0 { try container.encode(orderLineItem, forKey: .orderLineItem) } } } // @DataContract public class DocumentIdentification : Codable { // @DataMember(Name="identifier") public var identifier:String? // @DataMember(Name="type") public var type:String? // @DataMember(Name="creationDateAndTime") public var creationDateAndTime:Date? required public init(){} } // @DataContract public class Partner : Codable { // @DataMember(Name="identifier") public var identifier:Identifier? // @DataMember(Name="contactInformation") public var contactInformation:[ContactInformation] = [] required public init(){} } public class DocumentReference : Codable { public var creationDateTime:Date? public var revisionNumber:Int? public var lineItemNumber:Int? public var entityIdentification:String? required public init(){} } public class ShipmentTransportationInformation : Codable { public var carrier:TransactionalParty? public var freightForwarder:TransactionalParty? required public init(){} } public class Contact : Codable { public var contactTypeCode:String? public var personName:String? public var departmentName:String? public var jobTitle:String? public var responsibility:String? public var communicationChannel:[CommunicationChannel] = [] required public init(){} } public class Address : Codable { public var streetAddressOne:String? public var streetAddressTwo:String? public var streetAddressThree:String? public var city:String? public var postalCode:String? public var provinceCode:String? public var countryCode:String? required public init(){} } public class FinancialInstitutionInformation : Codable { public var financialInstitutionBranchName:String? public var financialInstitutionName:String? public var financialRoutingNumber:FinancialRoutingNumber? public var financialAccount:FinancialAccount? public var swiftCode:String? public var exportersCode:String? required public init(){} } public class Ecom_PartyIdentificationType : Codable { public var gln:String? public var name:String? public var additionalPartyIdentification:[AvpList] = [] required public init(){} } public class AllowanceCharge : Codable { public var allowanceChargeAmount:Double? public var allowanceChargePercentage:Double? public var allowanceChargeType:String? public var allowanceOrChargeType:String? public var amountPerUnit:Double? public var baseAmount:Double? public var baseNumberOfUnits:String? public var bracketIdentifier:String? public var effectiveDateType:Date? public var sequenceNumber:String? public var settlementType:String? public var specialServiceType:String? public var allowanceChargeDescription:String? required public init(){} } public class DeliveryTerms : Codable { public var incotermsCode:String? public var alternateDeliveryTermsCode:String? public var deliveryInstructions:String? public var deliveryCostPayment:String? public var isSignatureRequired:String? public var deliveryTermsLocation:DeliveryTermsLocation? required public init(){} } public class OrderLogisticalDateInformation : Codable { public var dateRangeDeliveryDateRange:DateRange? public var dateRangeShipDateRange:DateRange? public var dateRangeDeliveryDateRangeAtUltimateConsignee:DateRange? public var requestedDeliveryDateTime:Date? public var requestedShipDateTime:String? public var requestedPickUpDateTime:Date? public var requestedDeliveryDateTimeAtUltimateConsignee:Date? required public init(){} } public class Ecom_EntityIdentification : Codable { public var entityIdentification:String? public var contentOwner:Ecom_PartyIdentification? required public init(){} } public class OrderLogisticalInformation : Codable { public var commodityTypeCode:Code? public var orderLogisticalDateInformation:OrderLogisticalDateInformation? public var inventoryLocation:TransactionalParty? public var shipFrom:TransactionalParty? public var shipTo:TransactionalParty? public var ultimateConsignee:TransactionalParty? public var shipmentTransportationInformation:ShipmentTransportationInformation? required public init(){} } public class AdministrativeUnit : Codable { public var typeCode:String? public var gln:String? public var internalIdentification:String? required public init(){} } public class ReferencedOrder : Codable { public var orderRelationship:String? public var documentReference:DocumentReference? required public init(){} } public class OrderLineItem : Codable { public var freeGoodsQuantity:Quantity? public var itemPriceBaseQuantity:Quantity? public var requestedQuantity:Quantity? public var lineItemActionCode:String? public var lineItemNumber:Int? public var listPrice:Double? public var monetaryAmountExcludingTaxes:Double? public var monetaryAmountIncludingTaxes:Double? public var netAmount:Double? public var netPrice:Double? public var note:String? public var orderLineItemInstructionCode:String? public var parentLineItemNumber:Double? public var recommendedRetailPrice:Double? public var orderLineItemPriority:String? public var additionalOrderLineInstruction:[AvpList] = [] public var allowanceCharge:[AllowanceCharge] = [] public var administrativeUnit:[AdministrativeUnit] = [] public var transactionalTradeItem:TransactionalTradeItem? public var leviedDutyFeeTax:LeviedDutyFeeTax? public var contract:DocumentReference? public var promotionalDeal:DocumentReference? public var purchaseConditions:DocumentReference? public var avpList:[AvpList] = [] public var orderLineItemDetail:[OrderLineItemDetail] = [] required public init(){} } // @DataContract public class Identifier : Codable { // @DataMember(Name="authority") public var authority:String? // @DataMember(Name="text") public var text:String? required public init(){} } // @DataContract public class ContactInformation : Codable { required public init(){} } public class Quantity : Codable { public var value:Double? public var measurementUnitCode:String? public var codeListVersion:String? required public init(){} } public class TransactionalTradeItem : Codable { public var gtin:String? public var additionalTradeItemIdentification:[AvpList] = [] public var tradeItemQuantity:Double? public var tradeItemDescription:String? public var productVariantIdentifier:String? public var itemTypeCode:String? public var tradeItemDataOwner:String? public var butterFatReference:String? public var transactionalItemData:[TransactionalItemData] = [] public var colour:[Colour] = [] public var size:Size? public var tradeItemClassification:TradeItemClassification? public var avpList:[AvpList] = [] required public init(){} } public class CommunicationChannel : Codable { public var communicationChannelCode:String? public var communicationChannelName:String? public var communicationValue:String? required public init(){} } public class FinancialRoutingNumber : Codable { public var number:String? public var numberTypeCode:String? required public init(){} } public class FinancialAccount : Codable { public var number:String? public var numberTypeCode:String? public var name:String? required public init(){} } public class DeliveryTermsLocation : Codable { public var unLocationCode:String? public var gln:String? public var additionalLocationIdentification:[AvpList] = [] public var sublocationIdentification:String? public var locationName:String? public var locationSpecificInstructions:String? required public init(){} } public class DateRange : Codable { public var beginDate:Date? public var beginTime:Date? public var endDate:Date? public var endTime:Date? required public init(){} } public class LeviedDutyFeeTax : Codable { public var dutyFeeTaxAmount:Double? public var dutyFeeTaxBasisAmount:Double? public var dutyFeeTaxDescription:String? public var dutyFeeTaxPercentage:Double? required public init(){} } public class Ecom_PartyIdentification : Codable { public var additionalPartyIdentification:[AvpList] = [] public var gln:String? required public init(){} } public class Code : Codable { public var value:String? public var codeDescription:String? public var codeListAgencyCodeListVersion:String? public var codeListAgencyName:String? public var codeListName:String? public var codeListUri:String? required public init(){} } public class OrderLineItemDetail : Codable { public var requestedQuantity:Quantity? public var orderLogisticalInformation:OrderLogisticalInformation? public var avpList:[AvpList] = [] required public init(){} } public class TransactionalItemData : Codable { public var availableForSaleDate:Date? public var batchNumber:String? public var bestBeforeDate:Date? public var countryOfOrigin:String? public var itemExpirationDate:Date? public var lotNumber:String? public var packagingDate:Date? public var productionDate:Date? public var productQualityIndication:String? public var sellByDate:Date? public var serialNumber:[String] = [] public var shelfLife:String? public var tradeItemQuantity:Int? public var itemInContactWithFoodProduct:Bool? public var transactionalItemWeight:[TransactionalItem] = [] public var transactionalItemVolume:[TransactionalItem] = [] public var serialNumberRange:[SerialNumberRange] = [] public var transactionalItemDimensions:[TransactionalItemDimension] = [] public var transactionalItemLogisticUnitInformation:TransactionalItemLogisticUnitInformation? public var transactionalItemDataCarrierAndIdentification:TransactionalItemDataCarrierAndIdentification? public var tradeItemWaste:[TradeItemWaste] = [] public var transactionalItemOrganicInformation:TransactionalItemOrganicInformation? public var avpList:[AvpList] = [] required public init(){} } public class Colour : Codable { public var colourCode:String? public var colourDescription:String? required public init(){} } public class Size : Codable { public var descriptiveSize:String? public var sizeCode:String? required public init(){} } public class TradeItemClassification : Codable { public var gpcCategoryCode:String? public var additionalTradeItemClassificationCode:[AvpList] = [] public var gpcCategoryName:String? public var gpcAttribute:[AvpList] = [] required public init(){} } public class TransactionalItem : Codable { public var measurementUnitCode:String? public var measurementType:String? public var measurementValue:String? required public init(){} } public class SerialNumberRange : Codable { public var maximumValue:String? public var minimumValue:String? required public init(){} } public class TransactionalItemDimension : Codable { public var measurementUnitCode:String? public var depth:String? public var height:String? public var width:String? required public init(){} } public class TransactionalItemLogisticUnitInformation : Codable { public var numberOfLayers:Int? public var numberOfUnitsPerLayer:Int? public var numberOfUnitsPerPallet:Int? public var packagingTerms:String? public var packageTypeCode:String? public var maximumStackingFactor:Int? public var returnablePackageTransportCostPayment:String? public var dimensionsOfLogisticUnit:[TransactionalItemDimension] = [] required public init(){} } public class TransactionalItemDataCarrierAndIdentification : Codable { public var gs1TransactionalItemIdentificationKey:String? public var dataCarrier:String? required public init(){} } public class TradeItemWaste : Codable { public var wasteIdentification:String? public var typeOfWaste:[AvpList] = [] required public init(){} } public class TransactionalItemOrganicInformation : Codable { public var isTradeItemOrganic:Bool? public var organicCertification:String? required public init(){} }