POST, GET | /api/InventoryDetail |
---|
import Foundation
import ServiceStack
/**
* InventoryDetailRequires active-e Inventory Service
*/
// @DataContract
public class InventoryDetailRequest : BaseSecureRequest
{
// @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 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 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 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 BaseResponse : Codable
{
/**
*
*/
// @DataMember
// @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")
public var status:BaseResponseResult
required public init(){}
}
// @DataContract
public class BaseResponseResult : Codable
{
/**
*
*/
// @DataMember
// @ApiMember(DataType="string", Description="", Name="StatusCode", ParameterType="body")
public var statusCode:String
/**
*
*/
// @DataMember
// @ApiMember(DataType="string", Description="", Name="Login", ParameterType="body")
public var login:String
/**
*
*/
// @DataMember
// @ApiMember(DataType="string", Description="", Name="ErrorCode", ParameterType="body")
public var errorCode:String
/**
*
*/
// @DataMember
// @ApiMember(DataType="string", Description="", Name="ErrorDisplayText", ParameterType="body")
public var errorDisplayText:String
/**
*
*/
// @DataMember
// @ApiMember(DataType="string", Description="", Name="ErrorMessage", ParameterType="body")
public var errorMessage:String
/**
*
*/
// @DataMember
// @ApiMember(DataType="string", Description="", ExcludeInSchema=true, Name="DomainName", ParameterType="body")
public var domainName:String
/**
*
*/
// @DataMember
// @ApiMember(DataType="string", Description="", ExcludeInSchema=true, Name="IPAddress", ParameterType="body")
public var ipAddress:String
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 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 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 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 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(){}
}
Swift InventoryDetailRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /api/InventoryDetail HTTP/1.1
Host: active-ewebservice.biz
Accept: application/json
Content-Type: application/json
Content-Length: length
{"Pk":0,"PkType":"String","Model":"String","SkipImages":false,"IncludeSerialInfo":false,"CustomerAcct":0,"Token":"String","DeviceId":"String","AppId":"String","ApiKey":"String","OAuthToken":"String"}
HTTP/1.1 200 OK Content-Type: application/json Content-Length: length {"SadPk":0,"InvType":"String","Model":"String","Description":"String","Mfg":"String","Category":0,"CategoryDescription":"String","SubCategory":0,"SubCategoryDescription":"String","SelectionCode":"String","SelectionCodeDescription":"String","SellSerialsOnline":false,"Notes":"String","Images":[{"Url":"String","ImageStream":"String","ImageSize":"String","ErrorMessage":"String","UriPk":0}],"HasImages":true,"VariantDetails":[{}],"AddOns":[{}],"ActiveEInfo":{"Dimension":"String","WebDescription":"String","Summary":"String","SETitle":"String","SEDescription":"String","SEKeywords":"String","SEAltText":"String","SEHtmlFreeText":"String","Unpublished":false,"FreeShipping":false,"IsFeatured":false,"WebCategoryIds":[0]},"Weight":0,"Unit":"String","ShipCharge":0,"Status":{"StatusCode":"String","Login":"String","ErrorCode":"String","ErrorDisplayText":"String","ErrorMessage":"String","DomainName":"String","IpAddress":"String"}}