AIM Web Services

<back to all web services

InventoryDetailRequest

InventoryDetail
Requires active-e Inventory Service

The following routes are available for this service:
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

HTTP + JSON

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"}}