/* Options: Date: 2026-02-14 10:02:22 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: AddItemDataNotification.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Item Data Notification */ // @Route("/itemDataNotification", "POST") // @Api(Description="Item Data Notification") // @ApiResponse(Description="Add ItemDataNotification request received", IsDefaultResponse=true, StatusCode=200) // @ApiResponse(Description="ItemDataNotification not accepted, Confirm Sender GLN", ResponseType=typeof(UnauthorizedAccessException), StatusCode=403) public class AddItemDataNotification : IReturn, Codable { public typealias Return = TokenDto /** * ItemDataNotification model containing all of the ItemDataNotification data */ // @ApiMember(Description="ItemDataNotification model containing all of the ItemDataNotification data", ParameterType="model") public var itemDataNotification:ItemDataNotificationMessage? required public init(){} } public class TokenDto : ICommandResponse, Codable { public var token:String? required public init(){} } public protocol ICommandResponse { } public class ItemDataNotificationMessage : BaseDocument { public var dataRecipient:TransactionalParty? public var dataSource:TransactionalParty? public var itemDataNotificationIdentification:String? public var itemDataNotificationLineItem:[ItemDataNotificationLineItem] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case dataRecipient case dataSource case itemDataNotificationIdentification case itemDataNotificationLineItem } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) dataRecipient = try container.decodeIfPresent(TransactionalParty.self, forKey: .dataRecipient) dataSource = try container.decodeIfPresent(TransactionalParty.self, forKey: .dataSource) itemDataNotificationIdentification = try container.decodeIfPresent(String.self, forKey: .itemDataNotificationIdentification) itemDataNotificationLineItem = try container.decodeIfPresent([ItemDataNotificationLineItem].self, forKey: .itemDataNotificationLineItem) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if dataRecipient != nil { try container.encode(dataRecipient, forKey: .dataRecipient) } if dataSource != nil { try container.encode(dataSource, forKey: .dataSource) } if itemDataNotificationIdentification != nil { try container.encode(itemDataNotificationIdentification, forKey: .itemDataNotificationIdentification) } if itemDataNotificationLineItem.count > 0 { try container.encode(itemDataNotificationLineItem, forKey: .itemDataNotificationLineItem) } } }