/* Options: Date: 2026-01-10 06:53:19 SwiftVersion: 6.0 Version: 8.60 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://product-amazon-api.qa.platform.georiot.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: PostProductSearchRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/search", "POST") // @DataContract public class PostProductSearchRequest : PostProductSearchRequestBase, IReturn, IPostProductSearchRequest { public typealias Return = PostProductSearchResponse required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } // @DataContract public class PostProductSearchResponse : IPostProductSearchResponse, Codable { // @DataMember(Name="responseStatus") public var responseStatus:ResponseStatus? // @DataMember(Name="matchResults") public var matchResults:[MatchResult]? required public init(){} } // @DataContract public class ProductData : Codable { // @DataMember(Name="attributes", EmitDefaultValue=false) public var attributes:ProductAttributes? // @DataMember(Name="retailerSpecificAttributes", EmitDefaultValue=false) public var retailerSpecificAttributes:RetailerSpecificAttributes? // @DataMember(Name="rawSourceData", EmitDefaultValue=false) public var rawSourceData:String? required public init(){} } // @DataContract public class PostProductSearchRequestBase : IPostProductSearchRequestBase, Codable { // @DataMember(Name="data") // @ApiMember(Name="data") public var data:IList? // @DataMember(Name="timeoutMs") // @ApiMember(Name="timeoutMs") public var timeoutMs:UInt32? // @DataMember(Name="maxStaleness") // @ApiMember(Name="maxStaleness") public var maxStaleness:UInt64? // @DataMember(Name="countryIso2s") // @ApiMember(Name="countryIso2s") public var countryIso2s:[String]? // @DataMember(Name="productTypes") // @ApiMember(Name="targetProductCategories") public var productTypes:[String]? required public init(){} } public protocol IPostProductSearchRequestBase { var data:IList? { get set } var timeoutMs:UInt32? { get set } var maxStalenessMs:UInt64? { get set } var countryIso2s:[String]? { get set } var targetProductCategories:[String]? { get set } } public protocol IPostProductSearchRequest : IPostProductSearchRequestBase { } // @DataContract public class MatchResult : Codable { // @DataMember(Name="retailer") public var retailer:String? // @DataMember(Name="retailerGuid") public var retailerGuid:String? // @DataMember(Name="storefront") public var storefront:String? // @DataMember(Name="storefrontIso2") public var storefrontIso2:String? // @DataMember(Name="storefrontGuid") public var storefrontGuid:String? // @DataMember(Name="data") public var data:ProductData? // @DataMember(Name="errors") public var errors:[MatchError]? // @DataMember(Name="matchAccuracy") public var matchAccuracy:String? // @DataMember(Name="matchingRuleName") public var matchingRuleName:String? // @DataMember(Name="dataSource") public var dataSource:String? required public init(){} } public protocol IPostProductSearchResponse : IPostProductSearchResponseBase { } public protocol IPostProductSearchResponseBase { var matchResults:[MatchResult]? { get set } } // @DataContract public class ProductAttributes : Codable { // @DataMember(Name="retailer", EmitDefaultValue=false) public var retailer:String? // @DataMember(Name="retailerGuid", EmitDefaultValue=false) public var retailerGuid:String? // @DataMember(Name="storefront", EmitDefaultValue=false) public var storefront:String? // @DataMember(Name="storefrontIso2", EmitDefaultValue=false) public var storefrontIso2:String? // @DataMember(Name="storefrontGuid", EmitDefaultValue=false) public var storefrontGuid:String? // @DataMember(Name="category", EmitDefaultValue=false) public var category:String? // @DataMember(Name="categoryGuid", EmitDefaultValue=false) public var categoryGuid:String? // @DataMember(Name="brand", EmitDefaultValue=false) public var brand:String? // @DataMember(Name="brandGuid", EmitDefaultValue=false) public var brandGuid:String? // @DataMember(Name="manufacturer", EmitDefaultValue=false) public var manufacturer:String? // @DataMember(Name="manufacturerGuid", EmitDefaultValue=false) public var manufacturerGuid:String? // @DataMember(Name="identifiers", EmitDefaultValue=false) public var identifiers:ProductIdentifiers? // @DataMember(Name="itemAttributes", EmitDefaultValue=false) public var itemAttributes:ItemAttributes? required public init(){} } // @DataContract public class RetailerSpecificAttributes : Codable { // @DataMember(Name="name", EmitDefaultValue=false) public var name:String? // @DataMember(Name="description", EmitDefaultValue=false) public var description:String? // @DataMember(Name="skus", EmitDefaultValue=false) public var skus:[String]? // @DataMember(Name="asin", EmitDefaultValue=false) public var asin:String? // @DataMember(Name="url", EmitDefaultValue=false) public var url:Uri? // @DataMember(Name="productImages", EmitDefaultValue=false) public var productImages:[String:Uri]? // @DataMember(Name="additionalData", EmitDefaultValue=false) public var additionalData:[String:String]? required public init(){} } // @DataContract public class MatchError : Codable { // @DataMember(Name="message") public var message:String? // @DataMember(Name="error") public var error:ErrorCode? required public init(){} } // @DataContract public class ProductIdentifiers : Codable { // @DataMember(Name="productGuid", EmitDefaultValue=false) public var productGuid:String? // @DataMember(Name="gtins", EmitDefaultValue=false) public var gtins:[String]? // @DataMember(Name="mpns", EmitDefaultValue=false) public var mpns:[String]? // @DataMember(Name="ean8", EmitDefaultValue=false) public var ean8:[String]? // @DataMember(Name="ean13", EmitDefaultValue=false) public var ean13:[String]? // @DataMember(Name="isbn9", EmitDefaultValue=false) public var isbn9:[String]? // @DataMember(Name="isbn10", EmitDefaultValue=false) public var isbn10:[String]? // @DataMember(Name="isbn13", EmitDefaultValue=false) public var isbn13:[String]? // @DataMember(Name="itf14", EmitDefaultValue=false) public var itf14:[String]? // @DataMember(Name="upc12", EmitDefaultValue=false) public var upc12:[String]? required public init(){} } // @DataContract public class ItemAttributes : Codable { // @DataMember(Name="book", EmitDefaultValue=false) public var book:BookAttributes? // @DataMember(Name="audiobook", EmitDefaultValue=false) public var audiobook:AudiobookAttributes? // @DataMember(Name="ebook", EmitDefaultValue=false) public var ebook:EBookAttributes? required public init(){} } public enum ErrorCode : String, Codable { case Throttled case TargetRetailerProductNotFound case Unknown case NullMatchResult case NullSourceData case SourceDataProcessingFailure case LocalizationFailure } // @DataContract public class BookAttributes : Codable { // @DataMember(Name="authors", EmitDefaultValue=false) public var authors:[String]? required public init(){} } // @DataContract public class AudiobookAttributes : BookAttributes { required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } // @DataContract public class EBookAttributes : BookAttributes { required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } }