/* Options: Date: 2025-12-06 05:30:38 SwiftVersion: 6.0 Version: 8.60 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://geniuslink-api-zane.dev.platform.georiot.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: GetProductMatchesByUrlRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v3.5/product/matches", "GET") // @DataContract public class GetProductMatchesByUrlRequest : IReturn, IGetProductMatchesByUrlRequest, Codable { public typealias Return = GetProductMatchesByUrlResponse // @DataMember(Name="url") public var url:String? // @DataMember(Name="includeRaw") public var includeRaw:Bool? required public init(){} } public class GetProductMatchesByUrlResponse : IGetProductMatchesByUrlResponse, Codable { public var products:[ProductMetadata]? public var responseStatus:ResponseStatus? required public init(){} } public protocol IGetProductMatchesByUrlRequest { var url:String? { get set } var includeRaw:Bool? { get set } } // @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 ProductMetadata : Codable { // @DataMember(Name="title") public var title:String? // @DataMember(Name="author") public var author:String? // @DataMember(Name="url") public var url:Uri? // @DataMember(Name="description") public var description:String? // @DataMember(Name="retailer") public var retailer:String? // @DataMember(Name="productImages") public var productImages:[String:Uri]? // @DataMember(Name="rawAttributes") public var rawAttributes:MatchResult? required public init(){} } public protocol IGetProductMatchesByUrlResponse { var products:[ProductMetadata]? { 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 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(){} } // @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(){} } // @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 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) } } public enum ErrorCode : String, Codable { case Throttled case TargetRetailerProductNotFound case Unknown case NullMatchResult case NullSourceData case SourceDataProcessingFailure case LocalizationFailure }