/* Options: Date: 2025-05-10 04:06:19 SwiftVersion: 5.0 Version: 8.40 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://active-ewebservice.biz/aeservices30/api //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: InventoryDetailRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * InventoryDetailRequires active-e Inventory Service */ // @Route("/InventoryDetail", "POST, GET") // @DataContract public class InventoryDetailRequest : BaseSecureRequest, IReturn { public typealias Return = InventoryDetailResponse // @DataMember public var pk:Int? // @DataMember public var pkType:String // @DataMember public var model:String // @DataMember public var skipImages:Bool // @DataMember public var includeSerialInfo:Bool // @DataMember public var customerAcct:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case pk case pkType case model case skipImages case includeSerialInfo case customerAcct } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) pk = try container.decodeIfPresent(Int.self, forKey: .pk) pkType = try container.decodeIfPresent(String.self, forKey: .pkType) model = try container.decodeIfPresent(String.self, forKey: .model) skipImages = try container.decodeIfPresent(Bool.self, forKey: .skipImages) includeSerialInfo = try container.decodeIfPresent(Bool.self, forKey: .includeSerialInfo) customerAcct = try container.decodeIfPresent(Int.self, forKey: .customerAcct) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if pk != nil { try container.encode(pk, forKey: .pk) } if pkType != nil { try container.encode(pkType, forKey: .pkType) } if model != nil { try container.encode(model, forKey: .model) } if skipImages != nil { try container.encode(skipImages, forKey: .skipImages) } if includeSerialInfo != nil { try container.encode(includeSerialInfo, forKey: .includeSerialInfo) } if customerAcct != nil { try container.encode(customerAcct, forKey: .customerAcct) } } } // @DataContract public class InventoryDetailResponse : BaseResponse { // @DataMember public var sadPk:Int // @DataMember public var invType:String // @DataMember public var model:String // @DataMember public var Description:String // @DataMember public var mfg:String // @DataMember public var category:Int // @DataMember public var categoryDescription:String // @DataMember public var subCategory:Int // @DataMember public var subCategoryDescription:String // @DataMember public var selectionCode:String // @DataMember public var selectionCodeDescription:String // @DataMember public var sellSerialsOnline:Bool // @DataMember public var notes:String // @DataMember public var images:[ImageInfo] = [] // @DataMember public var hasImages:Bool // @DataMember public var variantDetails:[InventoryDetailByVariant] = [] // @DataMember public var addOns:[AddOnDetail] = [] // @DataMember public var activeEInfo:ActiveEInfo // @DataMember public var weight:Double // @DataMember public var unit:String // @DataMember public var shipCharge:Double required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case sadPk case invType case model case Description case mfg case category case categoryDescription case subCategory case subCategoryDescription case selectionCode case selectionCodeDescription case sellSerialsOnline case notes case images case hasImages case variantDetails case addOns case activeEInfo case weight case unit case shipCharge } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) sadPk = try container.decodeIfPresent(Int.self, forKey: .sadPk) invType = try container.decodeIfPresent(String.self, forKey: .invType) model = try container.decodeIfPresent(String.self, forKey: .model) Description = try container.decodeIfPresent(String.self, forKey: .Description) mfg = try container.decodeIfPresent(String.self, forKey: .mfg) category = try container.decodeIfPresent(Int.self, forKey: .category) categoryDescription = try container.decodeIfPresent(String.self, forKey: .categoryDescription) subCategory = try container.decodeIfPresent(Int.self, forKey: .subCategory) subCategoryDescription = try container.decodeIfPresent(String.self, forKey: .subCategoryDescription) selectionCode = try container.decodeIfPresent(String.self, forKey: .selectionCode) selectionCodeDescription = try container.decodeIfPresent(String.self, forKey: .selectionCodeDescription) sellSerialsOnline = try container.decodeIfPresent(Bool.self, forKey: .sellSerialsOnline) notes = try container.decodeIfPresent(String.self, forKey: .notes) images = try container.decodeIfPresent([ImageInfo].self, forKey: .images) ?? [] hasImages = try container.decodeIfPresent(Bool.self, forKey: .hasImages) variantDetails = try container.decodeIfPresent([InventoryDetailByVariant].self, forKey: .variantDetails) ?? [] addOns = try container.decodeIfPresent([AddOnDetail].self, forKey: .addOns) ?? [] activeEInfo = try container.decodeIfPresent(ActiveEInfo.self, forKey: .activeEInfo) weight = try container.decodeIfPresent(Double.self, forKey: .weight) unit = try container.decodeIfPresent(String.self, forKey: .unit) shipCharge = try container.decodeIfPresent(Double.self, forKey: .shipCharge) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if sadPk != nil { try container.encode(sadPk, forKey: .sadPk) } if invType != nil { try container.encode(invType, forKey: .invType) } if model != nil { try container.encode(model, forKey: .model) } if Description != nil { try container.encode(Description, forKey: .Description) } if mfg != nil { try container.encode(mfg, forKey: .mfg) } if category != nil { try container.encode(category, forKey: .category) } if categoryDescription != nil { try container.encode(categoryDescription, forKey: .categoryDescription) } if subCategory != nil { try container.encode(subCategory, forKey: .subCategory) } if subCategoryDescription != nil { try container.encode(subCategoryDescription, forKey: .subCategoryDescription) } if selectionCode != nil { try container.encode(selectionCode, forKey: .selectionCode) } if selectionCodeDescription != nil { try container.encode(selectionCodeDescription, forKey: .selectionCodeDescription) } if sellSerialsOnline != nil { try container.encode(sellSerialsOnline, forKey: .sellSerialsOnline) } if notes != nil { try container.encode(notes, forKey: .notes) } if images.count > 0 { try container.encode(images, forKey: .images) } if hasImages != nil { try container.encode(hasImages, forKey: .hasImages) } if variantDetails.count > 0 { try container.encode(variantDetails, forKey: .variantDetails) } if addOns.count > 0 { try container.encode(addOns, forKey: .addOns) } if activeEInfo != nil { try container.encode(activeEInfo, forKey: .activeEInfo) } if weight != nil { try container.encode(weight, forKey: .weight) } if unit != nil { try container.encode(unit, forKey: .unit) } if shipCharge != nil { try container.encode(shipCharge, forKey: .shipCharge) } } } // @DataContract public class BaseRequest : Codable { /** * This is your AIM API Key provided by Tri-Tech */ // @DataMember // @ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header") public var apiKey:String // @DataMember // @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header") public var oAuthToken:String required public init(){} } // @DataContract public class BaseSecureRequest : BaseRequest { /** * */ // @DataMember // @ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header") public var token:String /** * */ // @DataMember // @ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header") public var deviceId:String /** * */ // @DataMember // @ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header") public var appId:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case token case deviceId case appId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) token = try container.decodeIfPresent(String.self, forKey: .token) deviceId = try container.decodeIfPresent(String.self, forKey: .deviceId) appId = try container.decodeIfPresent(String.self, forKey: .appId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if token != nil { try container.encode(token, forKey: .token) } if deviceId != nil { try container.encode(deviceId, forKey: .deviceId) } if appId != nil { try container.encode(appId, forKey: .appId) } } } // @DataContract public class LocationInfo : Codable { // @DataMember public var id:Int // @DataMember public var desc:String // @DataMember public var shortDesc:String // @DataMember public var region:String // @DataMember public var latitude:Double // @DataMember public var longitude:Double // @DataMember public var inStorePickup:String // @DataMember public var active:Bool // @DataMember public var cashSaleAcct:Int? required public init(){} } // @DataContract public class ImageInfo : Codable { // @DataMember public var url:String // @DataMember public var imageStream:String // @DataMember public var imageSize:String // @DataMember public var errorMessage:String // @DataMember public var uriPk:Int? required public init(){} } // @DataContract public class InventoryDetailByVariant : Codable { // @DataMember public var skuPk:Int // @DataMember public var sku:String // @DataMember public var vendorCost:Double? // @DataMember public var vendorName:String // @DataMember public var attributes:[InventoryDetailAttribute] = [] // @DataMember public var locationDetails:[InventoryDetailByLocation] = [] // @DataMember public var images:[ImageInfo] = [] // @DataMember public var hasImages:Bool // @DataMember public var barcodes:[String] = [] required public init(){} } // @DataContract public class AddOnDetail : Codable { // @DataMember public var sadPk:Int // @DataMember public var skuPk:Int // @DataMember public var catPk:Int // @DataMember public var subPk:Int // @DataMember public var item:String // @DataMember public var Description:String // @DataMember public var price:Double required public init(){} } // @DataContract public class ActiveEInfo : Codable { // @DataMember public var dimension:String // @DataMember public var webDescription:String // @DataMember public var summary:String // @DataMember public var seTitle:String // @DataMember public var seDescription:String // @DataMember public var seKeywords:String // @DataMember public var seAltText:String // @DataMember public var seHtmlFreeText:String // @DataMember public var unpublished:Bool // @DataMember public var freeShipping:Bool // @DataMember public var isFeatured:Bool // @DataMember public var webCategoryIds:[Int] = [] required public init(){} } // @DataContract public class InventoryDetailAttribute : Codable { // @DataMember public var name:String // @DataMember public var value:String // @DataMember public var priority:Int /** * 1 is 'Don't Send to Web', 2 is 'Guided Navigation' */ // @DataMember // @ApiMember(DataType="int", Description="1 is 'Don't Send to Web', 2 is 'Guided Navigation'", Name="WebType", ParameterType="query") public var webType:Int required public init(){} } // @DataContract public class InventoryDetailByLocation : Codable { // @DataMember public var saqPk:Int // @DataMember public var locationInfo:LocationInfo // @DataMember public var serials:[InventoryDetailBySerial] = [] // @DataMember public var substitutes:[InventoryDetailSubstitute] = [] // @DataMember public var retail:Double // @DataMember public var ourPrice:Double // @DataMember public var salePrice:Double? // @DataMember public var saleInfo:String // @DataMember public var priceA:Double // @DataMember public var priceB:Double // @DataMember public var priceC:Double // @DataMember public var minPrice:Double // @DataMember public var activeEPrice:Double // @DataMember public var customerPrice:Double // @DataMember public var allowPriceChange:Bool // @DataMember public var qty:Double // @DataMember public var qtyAvail:Double // @DataMember public var activeeHoldbackQty:Double // @DataMember public var reorderMin:Int // @DataMember public var reorderMax:Int // @DataMember public var averageCost:Double? // @DataMember public var weightedCost:Double? // @DataMember public var locator:String // @DataMember public var selectionCode:String // @DataMember public var selectionCodeDescription:String // @DataMember public var spiff:Double // @DataMember public var currentSpotCheckQty:Double? // @DataMember public var qtyOut:Double // @DataMember public var qtyOnOrder:Double // @DataMember public var availableForSTR:Double required public init(){} } // @DataContract public class InventoryDetailBySerial : Codable { // @DataMember public var sasPk:Int // @DataMember public var serial:String // @DataMember public var retail:Double // @DataMember public var ourPrice:Double // @DataMember public var salePrice:Double? // @DataMember public var status:String // @DataMember public var saleInfo:String // @DataMember public var priceA:Double // @DataMember public var priceB:Double // @DataMember public var priceC:Double // @DataMember public var minPrice:Double // @DataMember public var activeEPrice:Double // @DataMember public var allowPriceChange:Bool // @DataMember public var cost:Double? // @DataMember public var weightedCost:Double? // @DataMember public var notes:String // @DataMember public var attributes:[InventoryDetailAttribute] = [] // @DataMember public var images:[ImageInfo] = [] // @DataMember public var hasImages:Bool // @DataMember public var isActiveeHoldback:Bool // @DataMember public var customerAcct:Int? // @DataMember public var availableForSTR:Bool required public init(){} } // @DataContract public class InventoryDetailSubstitute : Codable { // @DataMember public var model:String // @DataMember public var sku:String // @DataMember public var mfg:String // @DataMember public var Description:String // @DataMember public var price:Double // @DataMember public var availableQty:Double required public init(){} } // @DataContract public class BaseResponse : Codable { /** * */ // @DataMember // @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body") public var status:BaseResponseResult required public init(){} }