/* Options: Date: 2025-12-06 05:25:09 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: ProductMetadataLookupRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v3.5/product-metadata/lookup", "GET") // @DataContract public class ProductMetadataLookupRequest : IReturn, IProductMetadataLookupRequest, Codable { public typealias Return = ProductMetadataLookupResponse // @DataMember(Name="url") public var url:String? required public init(){} } public class ProductMetadataLookupResponse : IProductMetadataLookupResponse, Codable { // @DataMember(Name="productMetadata") public var productMetadata:ProductData? // @DataMember(Name="responseStatus") public var responseStatus:ResponseStatus? required public init(){} } public protocol IProductMetadataLookupRequest { var url:String? { 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(){} } public protocol IProductMetadataLookupResponse { // @DataMember(Name="productMetadata") var productMetadata:ProductData? { 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 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 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) } }