/* Options: Date: 2026-02-14 10:19:51 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: GetClaimById.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Claim */ // @Route("/claim/{Id}", "GET") // @Api(Description="Claim") // @ApiResponse(Description="Claim data", IsDefaultResponse=true, StatusCode=200) // @ApiResponse(Description="GLN does not have required access", ResponseType=typeof(ErrorResponse), StatusCode=403) // @ApiResponse(Description="Document not found", ResponseType=typeof(IReturnVoid), StatusCode=404) public class GetClaimById : IReturn, IGetDocumentById, Codable { public typealias Return = ClaimMessage /** * Claim ID or Token */ // @ApiMember(Description="Claim ID or Token", ParameterType="path") public var id:String? required public init(){} } public class ClaimMessage : Codable { public var header:Header? public var claimNotification:ClaimNotification? 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 ClaimNotification : BaseDocument { public var claimsNotificationTypeCode:String? public var isManualProcessNeededForClaimsResolution:Bool? public var isSupplementalMessageBeingSent:Bool? public var supplementalMessageDescription:String? public var claimsNotificationIdentification:String? public var buyer:TransactionalParty? public var remitTo:TransactionalParty? public var seller:TransactionalParty? public var billOfLading:BillOfLading? public var claimsNotification:DocumentReference? public var dispatchAdvice:DocumentReference? public var purchaseOrder:DocumentReference? public var invoice:DocumentReference? public var claimsNotificationDiscrepancyInformation:[ClaimsNotificationDiscrepancyInformation] = [] public var `extension`:ClaimExtension? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case claimsNotificationTypeCode case isManualProcessNeededForClaimsResolution case isSupplementalMessageBeingSent case supplementalMessageDescription case claimsNotificationIdentification case buyer case remitTo case seller case billOfLading case claimsNotification case dispatchAdvice case purchaseOrder case invoice case claimsNotificationDiscrepancyInformation case `extension` } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) claimsNotificationTypeCode = try container.decodeIfPresent(String.self, forKey: .claimsNotificationTypeCode) isManualProcessNeededForClaimsResolution = try container.decodeIfPresent(Bool.self, forKey: .isManualProcessNeededForClaimsResolution) isSupplementalMessageBeingSent = try container.decodeIfPresent(Bool.self, forKey: .isSupplementalMessageBeingSent) supplementalMessageDescription = try container.decodeIfPresent(String.self, forKey: .supplementalMessageDescription) claimsNotificationIdentification = try container.decodeIfPresent(String.self, forKey: .claimsNotificationIdentification) buyer = try container.decodeIfPresent(TransactionalParty.self, forKey: .buyer) remitTo = try container.decodeIfPresent(TransactionalParty.self, forKey: .remitTo) seller = try container.decodeIfPresent(TransactionalParty.self, forKey: .seller) billOfLading = try container.decodeIfPresent(BillOfLading.self, forKey: .billOfLading) claimsNotification = try container.decodeIfPresent(DocumentReference.self, forKey: .claimsNotification) dispatchAdvice = try container.decodeIfPresent(DocumentReference.self, forKey: .dispatchAdvice) purchaseOrder = try container.decodeIfPresent(DocumentReference.self, forKey: .purchaseOrder) invoice = try container.decodeIfPresent(DocumentReference.self, forKey: .invoice) claimsNotificationDiscrepancyInformation = try container.decodeIfPresent([ClaimsNotificationDiscrepancyInformation].self, forKey: .claimsNotificationDiscrepancyInformation) ?? [] `extension` = try container.decodeIfPresent(ClaimExtension.self, forKey: .`extension`) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if claimsNotificationTypeCode != nil { try container.encode(claimsNotificationTypeCode, forKey: .claimsNotificationTypeCode) } if isManualProcessNeededForClaimsResolution != nil { try container.encode(isManualProcessNeededForClaimsResolution, forKey: .isManualProcessNeededForClaimsResolution) } if isSupplementalMessageBeingSent != nil { try container.encode(isSupplementalMessageBeingSent, forKey: .isSupplementalMessageBeingSent) } if supplementalMessageDescription != nil { try container.encode(supplementalMessageDescription, forKey: .supplementalMessageDescription) } if claimsNotificationIdentification != nil { try container.encode(claimsNotificationIdentification, forKey: .claimsNotificationIdentification) } if buyer != nil { try container.encode(buyer, forKey: .buyer) } if remitTo != nil { try container.encode(remitTo, forKey: .remitTo) } if seller != nil { try container.encode(seller, forKey: .seller) } if billOfLading != nil { try container.encode(billOfLading, forKey: .billOfLading) } if claimsNotification != nil { try container.encode(claimsNotification, forKey: .claimsNotification) } if dispatchAdvice != nil { try container.encode(dispatchAdvice, forKey: .dispatchAdvice) } if purchaseOrder != nil { try container.encode(purchaseOrder, forKey: .purchaseOrder) } if invoice != nil { try container.encode(invoice, forKey: .invoice) } if claimsNotificationDiscrepancyInformation.count > 0 { try container.encode(claimsNotificationDiscrepancyInformation, forKey: .claimsNotificationDiscrepancyInformation) } if `extension` != nil { try container.encode(`extension`, forKey: .`extension`) } } } 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(){} } // @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 BillOfLading : Codable { public var creationDate:Date? public var revisionNumber:Int? public var entityIdentification:String? public var tagNumbers:[String] = [] public var totalBags:Int? 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 ClaimsNotificationDiscrepancyInformation : Codable { public var claimAmount:Double? public var claimReasonCode:String? public var discrepancyDescription:String? public var actualReceived:ClaimsNotificationItemDiscrepancy? public var expectedToReceive:ClaimsNotificationItemDiscrepancy? public var avpList:[AvpList] = [] required public init(){} } public class ClaimExtension : Codable { public var claimTotals:ClaimTotals? public var shipFrom:TransactionalParty? public var shipTo: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(){} } // @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 ClaimsNotificationItemDiscrepancy : Codable { public var price:Double? public var quantity:Quantity? public var transactionalTradeItem:TransactionalTradeItem? required public init(){} } public class ClaimTotals : Codable { public var baseAmount:Double? public var totalTaxAmount:Double? public var totalClaimAmount:Double? 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 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(){} }