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
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


// @DataContract
class BaseRequest implements JsonSerializable
{
    public function __construct(
        /** @description 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")
        /** @var string */
        public string $ApiKey='',

        // @DataMember
        // @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")
        /** @var string|null */
        public ?string $OAuthToken=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ApiKey'])) $this->ApiKey = $o['ApiKey'];
        if (isset($o['OAuthToken'])) $this->OAuthToken = $o['OAuthToken'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ApiKey)) $o['ApiKey'] = $this->ApiKey;
        if (isset($this->OAuthToken)) $o['OAuthToken'] = $this->OAuthToken;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class BaseSecureRequest extends BaseRequest implements JsonSerializable
{
    /**
     * @param string $ApiKey
     * @param string|null $OAuthToken
     */
    public function __construct(
        string $ApiKey='',
        ?string $OAuthToken=null,
        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header")
        /** @var string|null */
        public ?string $Token=null,

        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header")
        /** @var string|null */
        public ?string $DeviceId=null,

        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header")
        /** @var string */
        public string $AppId=''
    ) {
        parent::__construct($ApiKey,$OAuthToken);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['Token'])) $this->Token = $o['Token'];
        if (isset($o['DeviceId'])) $this->DeviceId = $o['DeviceId'];
        if (isset($o['AppId'])) $this->AppId = $o['AppId'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->Token)) $o['Token'] = $this->Token;
        if (isset($this->DeviceId)) $o['DeviceId'] = $this->DeviceId;
        if (isset($this->AppId)) $o['AppId'] = $this->AppId;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class BaseResponseResult implements JsonSerializable
{
    public function __construct(
        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", Name="StatusCode", ParameterType="body")
        /** @var string|null */
        public ?string $StatusCode=null,

        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", Name="Login", ParameterType="body")
        /** @var string|null */
        public ?string $Login=null,

        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", Name="ErrorCode", ParameterType="body")
        /** @var string|null */
        public ?string $ErrorCode=null,

        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", Name="ErrorDisplayText", ParameterType="body")
        /** @var string|null */
        public ?string $ErrorDisplayText=null,

        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", Name="ErrorMessage", ParameterType="body")
        /** @var string|null */
        public ?string $ErrorMessage=null,

        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", ExcludeInSchema=true, Name="DomainName", ParameterType="body")
        /** @var string|null */
        public ?string $DomainName=null,

        /** @description  */
        // @DataMember
        // @ApiMember(DataType="string", Description="", ExcludeInSchema=true, Name="IPAddress", ParameterType="body")
        /** @var string|null */
        public ?string $IpAddress=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['StatusCode'])) $this->StatusCode = $o['StatusCode'];
        if (isset($o['Login'])) $this->Login = $o['Login'];
        if (isset($o['ErrorCode'])) $this->ErrorCode = $o['ErrorCode'];
        if (isset($o['ErrorDisplayText'])) $this->ErrorDisplayText = $o['ErrorDisplayText'];
        if (isset($o['ErrorMessage'])) $this->ErrorMessage = $o['ErrorMessage'];
        if (isset($o['DomainName'])) $this->DomainName = $o['DomainName'];
        if (isset($o['IpAddress'])) $this->IpAddress = $o['IpAddress'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->StatusCode)) $o['StatusCode'] = $this->StatusCode;
        if (isset($this->Login)) $o['Login'] = $this->Login;
        if (isset($this->ErrorCode)) $o['ErrorCode'] = $this->ErrorCode;
        if (isset($this->ErrorDisplayText)) $o['ErrorDisplayText'] = $this->ErrorDisplayText;
        if (isset($this->ErrorMessage)) $o['ErrorMessage'] = $this->ErrorMessage;
        if (isset($this->DomainName)) $o['DomainName'] = $this->DomainName;
        if (isset($this->IpAddress)) $o['IpAddress'] = $this->IpAddress;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class BaseResponse implements JsonSerializable
{
    public function __construct(
        /** @description  */
        // @DataMember
        // @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")
        /** @var BaseResponseResult|null */
        public ?BaseResponseResult $Status=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Status'])) $this->Status = JsonConverters::from('BaseResponseResult', $o['Status']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Status)) $o['Status'] = JsonConverters::to('BaseResponseResult', $this->Status);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class ImageInfo implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var string|null */
        public ?string $Url=null,

        // @DataMember
        /** @var string|null */
        public ?string $ImageStream=null,

        // @DataMember
        /** @var string|null */
        public ?string $ImageSize=null,

        // @DataMember
        /** @var string|null */
        public ?string $ErrorMessage=null,

        // @DataMember
        /** @var int|null */
        public ?int $UriPk=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Url'])) $this->Url = $o['Url'];
        if (isset($o['ImageStream'])) $this->ImageStream = $o['ImageStream'];
        if (isset($o['ImageSize'])) $this->ImageSize = $o['ImageSize'];
        if (isset($o['ErrorMessage'])) $this->ErrorMessage = $o['ErrorMessage'];
        if (isset($o['UriPk'])) $this->UriPk = $o['UriPk'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Url)) $o['Url'] = $this->Url;
        if (isset($this->ImageStream)) $o['ImageStream'] = $this->ImageStream;
        if (isset($this->ImageSize)) $o['ImageSize'] = $this->ImageSize;
        if (isset($this->ErrorMessage)) $o['ErrorMessage'] = $this->ErrorMessage;
        if (isset($this->UriPk)) $o['UriPk'] = $this->UriPk;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class InventoryDetailAttribute implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var string|null */
        public ?string $Name=null,

        // @DataMember
        /** @var string|null */
        public ?string $Value=null,

        // @DataMember
        /** @var int */
        public int $Priority=0,

        /** @description 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")
        /** @var int */
        public int $WebType=0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Name'])) $this->Name = $o['Name'];
        if (isset($o['Value'])) $this->Value = $o['Value'];
        if (isset($o['Priority'])) $this->Priority = $o['Priority'];
        if (isset($o['WebType'])) $this->WebType = $o['WebType'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Name)) $o['Name'] = $this->Name;
        if (isset($this->Value)) $o['Value'] = $this->Value;
        if (isset($this->Priority)) $o['Priority'] = $this->Priority;
        if (isset($this->WebType)) $o['WebType'] = $this->WebType;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class LocationInfo implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var int */
        public int $Id=0,

        // @DataMember
        /** @var string|null */
        public ?string $Desc=null,

        // @DataMember
        /** @var string|null */
        public ?string $ShortDesc=null,

        // @DataMember
        /** @var string|null */
        public ?string $Region=null,

        // @DataMember
        /** @var float */
        public float $Latitude=0.0,

        // @DataMember
        /** @var float */
        public float $Longitude=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $InStorePickup=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $Active=null,

        // @DataMember
        /** @var int|null */
        public ?int $CashSaleAcct=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Id'])) $this->Id = $o['Id'];
        if (isset($o['Desc'])) $this->Desc = $o['Desc'];
        if (isset($o['ShortDesc'])) $this->ShortDesc = $o['ShortDesc'];
        if (isset($o['Region'])) $this->Region = $o['Region'];
        if (isset($o['Latitude'])) $this->Latitude = $o['Latitude'];
        if (isset($o['Longitude'])) $this->Longitude = $o['Longitude'];
        if (isset($o['InStorePickup'])) $this->InStorePickup = $o['InStorePickup'];
        if (isset($o['Active'])) $this->Active = $o['Active'];
        if (isset($o['CashSaleAcct'])) $this->CashSaleAcct = $o['CashSaleAcct'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Id)) $o['Id'] = $this->Id;
        if (isset($this->Desc)) $o['Desc'] = $this->Desc;
        if (isset($this->ShortDesc)) $o['ShortDesc'] = $this->ShortDesc;
        if (isset($this->Region)) $o['Region'] = $this->Region;
        if (isset($this->Latitude)) $o['Latitude'] = $this->Latitude;
        if (isset($this->Longitude)) $o['Longitude'] = $this->Longitude;
        if (isset($this->InStorePickup)) $o['InStorePickup'] = $this->InStorePickup;
        if (isset($this->Active)) $o['Active'] = $this->Active;
        if (isset($this->CashSaleAcct)) $o['CashSaleAcct'] = $this->CashSaleAcct;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class InventoryDetailBySerial implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var int */
        public int $SasPk=0,

        // @DataMember
        /** @var string|null */
        public ?string $Serial=null,

        // @DataMember
        /** @var float */
        public float $Retail=0.0,

        // @DataMember
        /** @var float */
        public float $OurPrice=0.0,

        // @DataMember
        /** @var float|null */
        public ?float $SalePrice=null,

        // @DataMember
        /** @var string|null */
        public ?string $Status=null,

        // @DataMember
        /** @var string|null */
        public ?string $SaleInfo=null,

        // @DataMember
        /** @var float */
        public float $PriceA=0.0,

        // @DataMember
        /** @var float */
        public float $PriceB=0.0,

        // @DataMember
        /** @var float */
        public float $PriceC=0.0,

        // @DataMember
        /** @var float */
        public float $MinPrice=0.0,

        // @DataMember
        /** @var float */
        public float $ActiveEPrice=0.0,

        // @DataMember
        /** @var bool|null */
        public ?bool $AllowPriceChange=null,

        // @DataMember
        /** @var float|null */
        public ?float $Cost=null,

        // @DataMember
        /** @var float|null */
        public ?float $WeightedCost=null,

        // @DataMember
        /** @var string|null */
        public ?string $Notes=null,

        // @DataMember
        /** @var array<InventoryDetailAttribute>|null */
        public ?array $Attributes=null,

        // @DataMember
        /** @var array<ImageInfo>|null */
        public ?array $Images=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $HasImages=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $IsActiveeHoldback=null,

        // @DataMember
        /** @var int|null */
        public ?int $CustomerAcct=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $AvailableForSTR=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['SasPk'])) $this->SasPk = $o['SasPk'];
        if (isset($o['Serial'])) $this->Serial = $o['Serial'];
        if (isset($o['Retail'])) $this->Retail = $o['Retail'];
        if (isset($o['OurPrice'])) $this->OurPrice = $o['OurPrice'];
        if (isset($o['SalePrice'])) $this->SalePrice = $o['SalePrice'];
        if (isset($o['Status'])) $this->Status = $o['Status'];
        if (isset($o['SaleInfo'])) $this->SaleInfo = $o['SaleInfo'];
        if (isset($o['PriceA'])) $this->PriceA = $o['PriceA'];
        if (isset($o['PriceB'])) $this->PriceB = $o['PriceB'];
        if (isset($o['PriceC'])) $this->PriceC = $o['PriceC'];
        if (isset($o['MinPrice'])) $this->MinPrice = $o['MinPrice'];
        if (isset($o['ActiveEPrice'])) $this->ActiveEPrice = $o['ActiveEPrice'];
        if (isset($o['AllowPriceChange'])) $this->AllowPriceChange = $o['AllowPriceChange'];
        if (isset($o['Cost'])) $this->Cost = $o['Cost'];
        if (isset($o['WeightedCost'])) $this->WeightedCost = $o['WeightedCost'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['Attributes'])) $this->Attributes = JsonConverters::fromArray('InventoryDetailAttribute', $o['Attributes']);
        if (isset($o['Images'])) $this->Images = JsonConverters::fromArray('ImageInfo', $o['Images']);
        if (isset($o['HasImages'])) $this->HasImages = $o['HasImages'];
        if (isset($o['IsActiveeHoldback'])) $this->IsActiveeHoldback = $o['IsActiveeHoldback'];
        if (isset($o['CustomerAcct'])) $this->CustomerAcct = $o['CustomerAcct'];
        if (isset($o['AvailableForSTR'])) $this->AvailableForSTR = $o['AvailableForSTR'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->SasPk)) $o['SasPk'] = $this->SasPk;
        if (isset($this->Serial)) $o['Serial'] = $this->Serial;
        if (isset($this->Retail)) $o['Retail'] = $this->Retail;
        if (isset($this->OurPrice)) $o['OurPrice'] = $this->OurPrice;
        if (isset($this->SalePrice)) $o['SalePrice'] = $this->SalePrice;
        if (isset($this->Status)) $o['Status'] = $this->Status;
        if (isset($this->SaleInfo)) $o['SaleInfo'] = $this->SaleInfo;
        if (isset($this->PriceA)) $o['PriceA'] = $this->PriceA;
        if (isset($this->PriceB)) $o['PriceB'] = $this->PriceB;
        if (isset($this->PriceC)) $o['PriceC'] = $this->PriceC;
        if (isset($this->MinPrice)) $o['MinPrice'] = $this->MinPrice;
        if (isset($this->ActiveEPrice)) $o['ActiveEPrice'] = $this->ActiveEPrice;
        if (isset($this->AllowPriceChange)) $o['AllowPriceChange'] = $this->AllowPriceChange;
        if (isset($this->Cost)) $o['Cost'] = $this->Cost;
        if (isset($this->WeightedCost)) $o['WeightedCost'] = $this->WeightedCost;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->Attributes)) $o['Attributes'] = JsonConverters::toArray('InventoryDetailAttribute', $this->Attributes);
        if (isset($this->Images)) $o['Images'] = JsonConverters::toArray('ImageInfo', $this->Images);
        if (isset($this->HasImages)) $o['HasImages'] = $this->HasImages;
        if (isset($this->IsActiveeHoldback)) $o['IsActiveeHoldback'] = $this->IsActiveeHoldback;
        if (isset($this->CustomerAcct)) $o['CustomerAcct'] = $this->CustomerAcct;
        if (isset($this->AvailableForSTR)) $o['AvailableForSTR'] = $this->AvailableForSTR;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class InventoryDetailSubstitute implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var string|null */
        public ?string $Model=null,

        // @DataMember
        /** @var string|null */
        public ?string $Sku=null,

        // @DataMember
        /** @var string|null */
        public ?string $Mfg=null,

        // @DataMember
        /** @var string|null */
        public ?string $Description=null,

        // @DataMember
        /** @var float */
        public float $Price=0.0,

        // @DataMember
        /** @var float */
        public float $AvailableQty=0.0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Model'])) $this->Model = $o['Model'];
        if (isset($o['Sku'])) $this->Sku = $o['Sku'];
        if (isset($o['Mfg'])) $this->Mfg = $o['Mfg'];
        if (isset($o['Description'])) $this->Description = $o['Description'];
        if (isset($o['Price'])) $this->Price = $o['Price'];
        if (isset($o['AvailableQty'])) $this->AvailableQty = $o['AvailableQty'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Model)) $o['Model'] = $this->Model;
        if (isset($this->Sku)) $o['Sku'] = $this->Sku;
        if (isset($this->Mfg)) $o['Mfg'] = $this->Mfg;
        if (isset($this->Description)) $o['Description'] = $this->Description;
        if (isset($this->Price)) $o['Price'] = $this->Price;
        if (isset($this->AvailableQty)) $o['AvailableQty'] = $this->AvailableQty;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class InventoryDetailByLocation implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var int */
        public int $SaqPk=0,

        // @DataMember
        /** @var LocationInfo|null */
        public ?LocationInfo $LocationInfo=null,

        // @DataMember
        /** @var array<InventoryDetailBySerial>|null */
        public ?array $Serials=null,

        // @DataMember
        /** @var array<InventoryDetailSubstitute>|null */
        public ?array $Substitutes=null,

        // @DataMember
        /** @var float */
        public float $Retail=0.0,

        // @DataMember
        /** @var float */
        public float $OurPrice=0.0,

        // @DataMember
        /** @var float|null */
        public ?float $SalePrice=null,

        // @DataMember
        /** @var string|null */
        public ?string $SaleInfo=null,

        // @DataMember
        /** @var float */
        public float $PriceA=0.0,

        // @DataMember
        /** @var float */
        public float $PriceB=0.0,

        // @DataMember
        /** @var float */
        public float $PriceC=0.0,

        // @DataMember
        /** @var float */
        public float $MinPrice=0.0,

        // @DataMember
        /** @var float */
        public float $ActiveEPrice=0.0,

        // @DataMember
        /** @var float */
        public float $CustomerPrice=0.0,

        // @DataMember
        /** @var bool|null */
        public ?bool $AllowPriceChange=null,

        // @DataMember
        /** @var float */
        public float $Qty=0.0,

        // @DataMember
        /** @var float */
        public float $QtyAvail=0.0,

        // @DataMember
        /** @var float */
        public float $ActiveeHoldbackQty=0.0,

        // @DataMember
        /** @var int */
        public int $ReorderMin=0,

        // @DataMember
        /** @var int */
        public int $ReorderMax=0,

        // @DataMember
        /** @var float|null */
        public ?float $AverageCost=null,

        // @DataMember
        /** @var float|null */
        public ?float $WeightedCost=null,

        // @DataMember
        /** @var string|null */
        public ?string $Locator=null,

        // @DataMember
        /** @var string|null */
        public ?string $SelectionCode=null,

        // @DataMember
        /** @var string|null */
        public ?string $SelectionCodeDescription=null,

        // @DataMember
        /** @var float */
        public float $Spiff=0.0,

        // @DataMember
        /** @var float|null */
        public ?float $CurrentSpotCheckQty=null,

        // @DataMember
        /** @var float */
        public float $QtyOut=0.0,

        // @DataMember
        /** @var float */
        public float $QtyOnOrder=0.0,

        // @DataMember
        /** @var float */
        public float $AvailableForSTR=0.0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['SaqPk'])) $this->SaqPk = $o['SaqPk'];
        if (isset($o['LocationInfo'])) $this->LocationInfo = JsonConverters::from('LocationInfo', $o['LocationInfo']);
        if (isset($o['Serials'])) $this->Serials = JsonConverters::fromArray('InventoryDetailBySerial', $o['Serials']);
        if (isset($o['Substitutes'])) $this->Substitutes = JsonConverters::fromArray('InventoryDetailSubstitute', $o['Substitutes']);
        if (isset($o['Retail'])) $this->Retail = $o['Retail'];
        if (isset($o['OurPrice'])) $this->OurPrice = $o['OurPrice'];
        if (isset($o['SalePrice'])) $this->SalePrice = $o['SalePrice'];
        if (isset($o['SaleInfo'])) $this->SaleInfo = $o['SaleInfo'];
        if (isset($o['PriceA'])) $this->PriceA = $o['PriceA'];
        if (isset($o['PriceB'])) $this->PriceB = $o['PriceB'];
        if (isset($o['PriceC'])) $this->PriceC = $o['PriceC'];
        if (isset($o['MinPrice'])) $this->MinPrice = $o['MinPrice'];
        if (isset($o['ActiveEPrice'])) $this->ActiveEPrice = $o['ActiveEPrice'];
        if (isset($o['CustomerPrice'])) $this->CustomerPrice = $o['CustomerPrice'];
        if (isset($o['AllowPriceChange'])) $this->AllowPriceChange = $o['AllowPriceChange'];
        if (isset($o['Qty'])) $this->Qty = $o['Qty'];
        if (isset($o['QtyAvail'])) $this->QtyAvail = $o['QtyAvail'];
        if (isset($o['ActiveeHoldbackQty'])) $this->ActiveeHoldbackQty = $o['ActiveeHoldbackQty'];
        if (isset($o['ReorderMin'])) $this->ReorderMin = $o['ReorderMin'];
        if (isset($o['ReorderMax'])) $this->ReorderMax = $o['ReorderMax'];
        if (isset($o['AverageCost'])) $this->AverageCost = $o['AverageCost'];
        if (isset($o['WeightedCost'])) $this->WeightedCost = $o['WeightedCost'];
        if (isset($o['Locator'])) $this->Locator = $o['Locator'];
        if (isset($o['SelectionCode'])) $this->SelectionCode = $o['SelectionCode'];
        if (isset($o['SelectionCodeDescription'])) $this->SelectionCodeDescription = $o['SelectionCodeDescription'];
        if (isset($o['Spiff'])) $this->Spiff = $o['Spiff'];
        if (isset($o['CurrentSpotCheckQty'])) $this->CurrentSpotCheckQty = $o['CurrentSpotCheckQty'];
        if (isset($o['QtyOut'])) $this->QtyOut = $o['QtyOut'];
        if (isset($o['QtyOnOrder'])) $this->QtyOnOrder = $o['QtyOnOrder'];
        if (isset($o['AvailableForSTR'])) $this->AvailableForSTR = $o['AvailableForSTR'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->SaqPk)) $o['SaqPk'] = $this->SaqPk;
        if (isset($this->LocationInfo)) $o['LocationInfo'] = JsonConverters::to('LocationInfo', $this->LocationInfo);
        if (isset($this->Serials)) $o['Serials'] = JsonConverters::toArray('InventoryDetailBySerial', $this->Serials);
        if (isset($this->Substitutes)) $o['Substitutes'] = JsonConverters::toArray('InventoryDetailSubstitute', $this->Substitutes);
        if (isset($this->Retail)) $o['Retail'] = $this->Retail;
        if (isset($this->OurPrice)) $o['OurPrice'] = $this->OurPrice;
        if (isset($this->SalePrice)) $o['SalePrice'] = $this->SalePrice;
        if (isset($this->SaleInfo)) $o['SaleInfo'] = $this->SaleInfo;
        if (isset($this->PriceA)) $o['PriceA'] = $this->PriceA;
        if (isset($this->PriceB)) $o['PriceB'] = $this->PriceB;
        if (isset($this->PriceC)) $o['PriceC'] = $this->PriceC;
        if (isset($this->MinPrice)) $o['MinPrice'] = $this->MinPrice;
        if (isset($this->ActiveEPrice)) $o['ActiveEPrice'] = $this->ActiveEPrice;
        if (isset($this->CustomerPrice)) $o['CustomerPrice'] = $this->CustomerPrice;
        if (isset($this->AllowPriceChange)) $o['AllowPriceChange'] = $this->AllowPriceChange;
        if (isset($this->Qty)) $o['Qty'] = $this->Qty;
        if (isset($this->QtyAvail)) $o['QtyAvail'] = $this->QtyAvail;
        if (isset($this->ActiveeHoldbackQty)) $o['ActiveeHoldbackQty'] = $this->ActiveeHoldbackQty;
        if (isset($this->ReorderMin)) $o['ReorderMin'] = $this->ReorderMin;
        if (isset($this->ReorderMax)) $o['ReorderMax'] = $this->ReorderMax;
        if (isset($this->AverageCost)) $o['AverageCost'] = $this->AverageCost;
        if (isset($this->WeightedCost)) $o['WeightedCost'] = $this->WeightedCost;
        if (isset($this->Locator)) $o['Locator'] = $this->Locator;
        if (isset($this->SelectionCode)) $o['SelectionCode'] = $this->SelectionCode;
        if (isset($this->SelectionCodeDescription)) $o['SelectionCodeDescription'] = $this->SelectionCodeDescription;
        if (isset($this->Spiff)) $o['Spiff'] = $this->Spiff;
        if (isset($this->CurrentSpotCheckQty)) $o['CurrentSpotCheckQty'] = $this->CurrentSpotCheckQty;
        if (isset($this->QtyOut)) $o['QtyOut'] = $this->QtyOut;
        if (isset($this->QtyOnOrder)) $o['QtyOnOrder'] = $this->QtyOnOrder;
        if (isset($this->AvailableForSTR)) $o['AvailableForSTR'] = $this->AvailableForSTR;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class InventoryDetailByVariant implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var int */
        public int $SkuPk=0,

        // @DataMember
        /** @var string|null */
        public ?string $Sku=null,

        // @DataMember
        /** @var float|null */
        public ?float $VendorCost=null,

        // @DataMember
        /** @var string|null */
        public ?string $VendorName=null,

        // @DataMember
        /** @var array<InventoryDetailAttribute>|null */
        public ?array $Attributes=null,

        // @DataMember
        /** @var array<InventoryDetailByLocation>|null */
        public ?array $LocationDetails=null,

        // @DataMember
        /** @var array<ImageInfo>|null */
        public ?array $Images=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $HasImages=null,

        // @DataMember
        /** @var array<string>|null */
        public ?array $Barcodes=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['SkuPk'])) $this->SkuPk = $o['SkuPk'];
        if (isset($o['Sku'])) $this->Sku = $o['Sku'];
        if (isset($o['VendorCost'])) $this->VendorCost = $o['VendorCost'];
        if (isset($o['VendorName'])) $this->VendorName = $o['VendorName'];
        if (isset($o['Attributes'])) $this->Attributes = JsonConverters::fromArray('InventoryDetailAttribute', $o['Attributes']);
        if (isset($o['LocationDetails'])) $this->LocationDetails = JsonConverters::fromArray('InventoryDetailByLocation', $o['LocationDetails']);
        if (isset($o['Images'])) $this->Images = JsonConverters::fromArray('ImageInfo', $o['Images']);
        if (isset($o['HasImages'])) $this->HasImages = $o['HasImages'];
        if (isset($o['Barcodes'])) $this->Barcodes = JsonConverters::fromArray('string', $o['Barcodes']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->SkuPk)) $o['SkuPk'] = $this->SkuPk;
        if (isset($this->Sku)) $o['Sku'] = $this->Sku;
        if (isset($this->VendorCost)) $o['VendorCost'] = $this->VendorCost;
        if (isset($this->VendorName)) $o['VendorName'] = $this->VendorName;
        if (isset($this->Attributes)) $o['Attributes'] = JsonConverters::toArray('InventoryDetailAttribute', $this->Attributes);
        if (isset($this->LocationDetails)) $o['LocationDetails'] = JsonConverters::toArray('InventoryDetailByLocation', $this->LocationDetails);
        if (isset($this->Images)) $o['Images'] = JsonConverters::toArray('ImageInfo', $this->Images);
        if (isset($this->HasImages)) $o['HasImages'] = $this->HasImages;
        if (isset($this->Barcodes)) $o['Barcodes'] = JsonConverters::toArray('string', $this->Barcodes);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class AddOnDetail implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var int */
        public int $SadPk=0,

        // @DataMember
        /** @var int */
        public int $SkuPk=0,

        // @DataMember
        /** @var int */
        public int $CatPk=0,

        // @DataMember
        /** @var int */
        public int $SubPk=0,

        // @DataMember
        /** @var string|null */
        public ?string $Item=null,

        // @DataMember
        /** @var string|null */
        public ?string $Description=null,

        // @DataMember
        /** @var float */
        public float $Price=0.0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['SadPk'])) $this->SadPk = $o['SadPk'];
        if (isset($o['SkuPk'])) $this->SkuPk = $o['SkuPk'];
        if (isset($o['CatPk'])) $this->CatPk = $o['CatPk'];
        if (isset($o['SubPk'])) $this->SubPk = $o['SubPk'];
        if (isset($o['Item'])) $this->Item = $o['Item'];
        if (isset($o['Description'])) $this->Description = $o['Description'];
        if (isset($o['Price'])) $this->Price = $o['Price'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->SadPk)) $o['SadPk'] = $this->SadPk;
        if (isset($this->SkuPk)) $o['SkuPk'] = $this->SkuPk;
        if (isset($this->CatPk)) $o['CatPk'] = $this->CatPk;
        if (isset($this->SubPk)) $o['SubPk'] = $this->SubPk;
        if (isset($this->Item)) $o['Item'] = $this->Item;
        if (isset($this->Description)) $o['Description'] = $this->Description;
        if (isset($this->Price)) $o['Price'] = $this->Price;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class ActiveEInfo implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var string|null */
        public ?string $Dimension=null,

        // @DataMember
        /** @var string|null */
        public ?string $WebDescription=null,

        // @DataMember
        /** @var string|null */
        public ?string $Summary=null,

        // @DataMember
        /** @var string|null */
        public ?string $SETitle=null,

        // @DataMember
        /** @var string|null */
        public ?string $SEDescription=null,

        // @DataMember
        /** @var string|null */
        public ?string $SEKeywords=null,

        // @DataMember
        /** @var string|null */
        public ?string $SEAltText=null,

        // @DataMember
        /** @var string|null */
        public ?string $SEHtmlFreeText=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $Unpublished=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $FreeShipping=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $IsFeatured=null,

        // @DataMember
        /** @var array<int>|null */
        public ?array $WebCategoryIds=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Dimension'])) $this->Dimension = $o['Dimension'];
        if (isset($o['WebDescription'])) $this->WebDescription = $o['WebDescription'];
        if (isset($o['Summary'])) $this->Summary = $o['Summary'];
        if (isset($o['SETitle'])) $this->SETitle = $o['SETitle'];
        if (isset($o['SEDescription'])) $this->SEDescription = $o['SEDescription'];
        if (isset($o['SEKeywords'])) $this->SEKeywords = $o['SEKeywords'];
        if (isset($o['SEAltText'])) $this->SEAltText = $o['SEAltText'];
        if (isset($o['SEHtmlFreeText'])) $this->SEHtmlFreeText = $o['SEHtmlFreeText'];
        if (isset($o['Unpublished'])) $this->Unpublished = $o['Unpublished'];
        if (isset($o['FreeShipping'])) $this->FreeShipping = $o['FreeShipping'];
        if (isset($o['IsFeatured'])) $this->IsFeatured = $o['IsFeatured'];
        if (isset($o['WebCategoryIds'])) $this->WebCategoryIds = JsonConverters::fromArray('int', $o['WebCategoryIds']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Dimension)) $o['Dimension'] = $this->Dimension;
        if (isset($this->WebDescription)) $o['WebDescription'] = $this->WebDescription;
        if (isset($this->Summary)) $o['Summary'] = $this->Summary;
        if (isset($this->SETitle)) $o['SETitle'] = $this->SETitle;
        if (isset($this->SEDescription)) $o['SEDescription'] = $this->SEDescription;
        if (isset($this->SEKeywords)) $o['SEKeywords'] = $this->SEKeywords;
        if (isset($this->SEAltText)) $o['SEAltText'] = $this->SEAltText;
        if (isset($this->SEHtmlFreeText)) $o['SEHtmlFreeText'] = $this->SEHtmlFreeText;
        if (isset($this->Unpublished)) $o['Unpublished'] = $this->Unpublished;
        if (isset($this->FreeShipping)) $o['FreeShipping'] = $this->FreeShipping;
        if (isset($this->IsFeatured)) $o['IsFeatured'] = $this->IsFeatured;
        if (isset($this->WebCategoryIds)) $o['WebCategoryIds'] = JsonConverters::toArray('int', $this->WebCategoryIds);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class InventoryDetailResponse extends BaseResponse implements JsonSerializable
{
    /**
     * @param BaseResponseResult|null $Status
     */
    public function __construct(
        ?BaseResponseResult $Status=null,
        // @DataMember
        /** @var int */
        public int $SadPk=0,

        // @DataMember
        /** @var string|null */
        public ?string $InvType=null,

        // @DataMember
        /** @var string|null */
        public ?string $Model=null,

        // @DataMember
        /** @var string|null */
        public ?string $Description=null,

        // @DataMember
        /** @var string|null */
        public ?string $Mfg=null,

        // @DataMember
        /** @var int */
        public int $Category=0,

        // @DataMember
        /** @var string|null */
        public ?string $CategoryDescription=null,

        // @DataMember
        /** @var int */
        public int $SubCategory=0,

        // @DataMember
        /** @var string|null */
        public ?string $SubCategoryDescription=null,

        // @DataMember
        /** @var string|null */
        public ?string $SelectionCode=null,

        // @DataMember
        /** @var string|null */
        public ?string $SelectionCodeDescription=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $SellSerialsOnline=null,

        // @DataMember
        /** @var string|null */
        public ?string $Notes=null,

        // @DataMember
        /** @var array<ImageInfo>|null */
        public ?array $Images=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $HasImages=null,

        // @DataMember
        /** @var array<InventoryDetailByVariant>|null */
        public ?array $VariantDetails=null,

        // @DataMember
        /** @var array<AddOnDetail>|null */
        public ?array $AddOns=null,

        // @DataMember
        /** @var ActiveEInfo|null */
        public ?ActiveEInfo $ActiveEInfo=null,

        // @DataMember
        /** @var float */
        public float $Weight=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $Unit=null,

        // @DataMember
        /** @var float */
        public float $ShipCharge=0.0
    ) {
        parent::__construct($Status);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['SadPk'])) $this->SadPk = $o['SadPk'];
        if (isset($o['InvType'])) $this->InvType = $o['InvType'];
        if (isset($o['Model'])) $this->Model = $o['Model'];
        if (isset($o['Description'])) $this->Description = $o['Description'];
        if (isset($o['Mfg'])) $this->Mfg = $o['Mfg'];
        if (isset($o['Category'])) $this->Category = $o['Category'];
        if (isset($o['CategoryDescription'])) $this->CategoryDescription = $o['CategoryDescription'];
        if (isset($o['SubCategory'])) $this->SubCategory = $o['SubCategory'];
        if (isset($o['SubCategoryDescription'])) $this->SubCategoryDescription = $o['SubCategoryDescription'];
        if (isset($o['SelectionCode'])) $this->SelectionCode = $o['SelectionCode'];
        if (isset($o['SelectionCodeDescription'])) $this->SelectionCodeDescription = $o['SelectionCodeDescription'];
        if (isset($o['SellSerialsOnline'])) $this->SellSerialsOnline = $o['SellSerialsOnline'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['Images'])) $this->Images = JsonConverters::fromArray('ImageInfo', $o['Images']);
        if (isset($o['HasImages'])) $this->HasImages = $o['HasImages'];
        if (isset($o['VariantDetails'])) $this->VariantDetails = JsonConverters::fromArray('InventoryDetailByVariant', $o['VariantDetails']);
        if (isset($o['AddOns'])) $this->AddOns = JsonConverters::fromArray('AddOnDetail', $o['AddOns']);
        if (isset($o['ActiveEInfo'])) $this->ActiveEInfo = JsonConverters::from('ActiveEInfo', $o['ActiveEInfo']);
        if (isset($o['Weight'])) $this->Weight = $o['Weight'];
        if (isset($o['Unit'])) $this->Unit = $o['Unit'];
        if (isset($o['ShipCharge'])) $this->ShipCharge = $o['ShipCharge'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->SadPk)) $o['SadPk'] = $this->SadPk;
        if (isset($this->InvType)) $o['InvType'] = $this->InvType;
        if (isset($this->Model)) $o['Model'] = $this->Model;
        if (isset($this->Description)) $o['Description'] = $this->Description;
        if (isset($this->Mfg)) $o['Mfg'] = $this->Mfg;
        if (isset($this->Category)) $o['Category'] = $this->Category;
        if (isset($this->CategoryDescription)) $o['CategoryDescription'] = $this->CategoryDescription;
        if (isset($this->SubCategory)) $o['SubCategory'] = $this->SubCategory;
        if (isset($this->SubCategoryDescription)) $o['SubCategoryDescription'] = $this->SubCategoryDescription;
        if (isset($this->SelectionCode)) $o['SelectionCode'] = $this->SelectionCode;
        if (isset($this->SelectionCodeDescription)) $o['SelectionCodeDescription'] = $this->SelectionCodeDescription;
        if (isset($this->SellSerialsOnline)) $o['SellSerialsOnline'] = $this->SellSerialsOnline;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->Images)) $o['Images'] = JsonConverters::toArray('ImageInfo', $this->Images);
        if (isset($this->HasImages)) $o['HasImages'] = $this->HasImages;
        if (isset($this->VariantDetails)) $o['VariantDetails'] = JsonConverters::toArray('InventoryDetailByVariant', $this->VariantDetails);
        if (isset($this->AddOns)) $o['AddOns'] = JsonConverters::toArray('AddOnDetail', $this->AddOns);
        if (isset($this->ActiveEInfo)) $o['ActiveEInfo'] = JsonConverters::to('ActiveEInfo', $this->ActiveEInfo);
        if (isset($this->Weight)) $o['Weight'] = $this->Weight;
        if (isset($this->Unit)) $o['Unit'] = $this->Unit;
        if (isset($this->ShipCharge)) $o['ShipCharge'] = $this->ShipCharge;
        return empty($o) ? new class(){} : $o;
    }
}

/** @description InventoryDetailRequires active-e Inventory Service */
// @DataContract
class InventoryDetailRequest extends BaseSecureRequest implements JsonSerializable
{
    /**
     * @param string $ApiKey
     * @param string|null $OAuthToken
     * @param string|null $Token
     * @param string|null $DeviceId
     * @param string $AppId
     */
    public function __construct(
        string $ApiKey='',
        ?string $OAuthToken=null,
        ?string $Token=null,
        ?string $DeviceId=null,
        string $AppId='',
        // @DataMember
        /** @var int|null */
        public ?int $Pk=null,

        // @DataMember
        /** @var string|null */
        public ?string $PkType=null,

        // @DataMember
        /** @var string|null */
        public ?string $Model=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $SkipImages=null,

        // @DataMember
        /** @var bool|null */
        public ?bool $IncludeSerialInfo=null,

        // @DataMember
        /** @var int|null */
        public ?int $CustomerAcct=null
    ) {
        parent::__construct($ApiKey,$OAuthToken,$Token,$DeviceId,$AppId);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['Pk'])) $this->Pk = $o['Pk'];
        if (isset($o['PkType'])) $this->PkType = $o['PkType'];
        if (isset($o['Model'])) $this->Model = $o['Model'];
        if (isset($o['SkipImages'])) $this->SkipImages = $o['SkipImages'];
        if (isset($o['IncludeSerialInfo'])) $this->IncludeSerialInfo = $o['IncludeSerialInfo'];
        if (isset($o['CustomerAcct'])) $this->CustomerAcct = $o['CustomerAcct'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->Pk)) $o['Pk'] = $this->Pk;
        if (isset($this->PkType)) $o['PkType'] = $this->PkType;
        if (isset($this->Model)) $o['Model'] = $this->Model;
        if (isset($this->SkipImages)) $o['SkipImages'] = $this->SkipImages;
        if (isset($this->IncludeSerialInfo)) $o['IncludeSerialInfo'] = $this->IncludeSerialInfo;
        if (isset($this->CustomerAcct)) $o['CustomerAcct'] = $this->CustomerAcct;
        return empty($o) ? new class(){} : $o;
    }
}

PHP InventoryDetailRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other

HTTP + OTHER

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: text/jsonl
Content-Type: text/jsonl
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: text/jsonl
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"}}