/* Options: Date: 2026-02-14 10:19:35 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: GetTransactionalPartyById.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Transactional Party */ // @Route("/transactionalParty/{Id}", "GET") // @Api(Description="Transactional Party") // @ApiResponse(Description="transactionalParty 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 GetTransactionalPartyById : IReturn, IGetDocumentById, Codable { public typealias Return = TransactionalPartyMessage /** * transactionalParty ID or Token */ // @ApiMember(Description="transactionalParty ID or Token", ExcludeInSchema=true, ParameterType="path") public var id:String? required public init(){} } public class TransactionalPartyMessage : Codable { public var header:Header? public var transactionalParty:TransactionalPartyMessageType? 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 TransactionalPartyMessageType : TransactionalParty { public var creationDateTime:Date? public var lastUpdateDateTime:Date? public var documentActionCode:DocumentAction? public var documentStatusCode:DocumentStatus? public var documentStructureVersion:String? public var revisionNumber:Int? public var avpList:[AvpList] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case creationDateTime case lastUpdateDateTime case documentActionCode case documentStatusCode case documentStructureVersion case revisionNumber case avpList } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) creationDateTime = try container.decodeIfPresent(Date.self, forKey: .creationDateTime) lastUpdateDateTime = try container.decodeIfPresent(Date.self, forKey: .lastUpdateDateTime) documentActionCode = try container.decodeIfPresent(DocumentAction.self, forKey: .documentActionCode) documentStatusCode = try container.decodeIfPresent(DocumentStatus.self, forKey: .documentStatusCode) documentStructureVersion = try container.decodeIfPresent(String.self, forKey: .documentStructureVersion) revisionNumber = try container.decodeIfPresent(Int.self, forKey: .revisionNumber) avpList = try container.decodeIfPresent([AvpList].self, forKey: .avpList) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if creationDateTime != nil { try container.encode(creationDateTime, forKey: .creationDateTime) } if lastUpdateDateTime != nil { try container.encode(lastUpdateDateTime, forKey: .lastUpdateDateTime) } if documentActionCode != nil { try container.encode(documentActionCode, forKey: .documentActionCode) } if documentStatusCode != nil { try container.encode(documentStatusCode, forKey: .documentStatusCode) } if documentStructureVersion != nil { try container.encode(documentStructureVersion, forKey: .documentStructureVersion) } if revisionNumber != nil { try container.encode(revisionNumber, forKey: .revisionNumber) } if avpList.count > 0 { try container.encode(avpList, forKey: .avpList) } } } // @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 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 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(){} }