// <auto-generated />
//
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
//    using QuickType;
//
//    var getinventory = Getinventory.FromJson(jsonString);

namespace QuickType
{
    using System;
    using System.Collections.Generic;

    using System.Globalization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;

    public partial class Getinventory
    {
        [JsonProperty("invtStartCriteria", NullValueHandling = NullValueHandling.Ignore)]
        public InvtStartCriteria InvtStartCriteria { get; set; }

        [JsonProperty("invtStopCriteria", NullValueHandling = NullValueHandling.Ignore)]
        public StopCriteria InvtStopCriteria { get; set; }

        [JsonProperty("antennaInvtSpecs", NullValueHandling = NullValueHandling.Ignore)]
        public AntennaInvtSpec[] AntennaInvtSpecs { get; set; }

        [JsonProperty("reportSpec", NullValueHandling = NullValueHandling.Ignore)]
        public ReportSpec ReportSpec { get; set; }

        [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)]
        public string Status { get; set; }

        [JsonProperty("owner", NullValueHandling = NullValueHandling.Ignore)]
        public string Owner { get; set; }

        [JsonProperty("CLASS", NullValueHandling = NullValueHandling.Ignore)]
        public string Class { get; set; }

        [JsonProperty("CMD", NullValueHandling = NullValueHandling.Ignore)]
        public string Cmd { get; set; }

        [JsonProperty("RESULT", NullValueHandling = NullValueHandling.Ignore)]
        public string Result { get; set; }

        [JsonProperty("DESC")]
        public object Desc { get; set; }

        [JsonProperty("RID", NullValueHandling = NullValueHandling.Ignore)]
        public long? Rid { get; set; }
    }

    public partial class AntennaInvtSpec
    {
        [JsonProperty("ID", NullValueHandling = NullValueHandling.Ignore)]
        public long? Id { get; set; }

        [JsonProperty("antennas", NullValueHandling = NullValueHandling.Ignore)]
        public long?[] Antennas { get; set; }

        [JsonProperty("antennaConfigs", NullValueHandling = NullValueHandling.Ignore)]
        public AntennaConfig[] AntennaConfigs { get; set; }

        [JsonProperty("antennaStopCriteria", NullValueHandling = NullValueHandling.Ignore)]
        public StopCriteria AntennaStopCriteria { get; set; }

        [JsonProperty("tagRssiFilter_10ths", NullValueHandling = NullValueHandling.Ignore)]
        public TagRssiFilter10Ths TagRssiFilter10Ths { get; set; }
    }

    public partial class AntennaConfig
    {
        [JsonProperty("antennaID", NullValueHandling = NullValueHandling.Ignore)]
        public long? AntennaId { get; set; }

        [JsonProperty("antennaError", NullValueHandling = NullValueHandling.Ignore)]
        public long? AntennaError { get; set; }

        [JsonProperty("connected", NullValueHandling = NullValueHandling.Ignore)]
        public bool? Connected { get; set; }

        [JsonProperty("rfTransmitter", NullValueHandling = NullValueHandling.Ignore)]
        public RfTransmitter RfTransmitter { get; set; }

        [JsonProperty("dtic", NullValueHandling = NullValueHandling.Ignore)]
        public Dtic Dtic { get; set; }

        [JsonProperty("sequence", NullValueHandling = NullValueHandling.Ignore)]
        public Sequence Sequence { get; set; }

        [JsonProperty("C1G2InventoryCommand", NullValueHandling = NullValueHandling.Ignore)]
        public C1G2InventoryCommand C1G2InventoryCommand { get; set; }
    }

    public partial class C1G2InventoryCommand
    {
        [JsonProperty("C1G2SingulationSpec", NullValueHandling = NullValueHandling.Ignore)]
        public C1G2SingulationSpec C1G2SingulationSpec { get; set; }
    }

    public partial class C1G2SingulationSpec
    {
        [JsonProperty("C1G2SingulationSessionAndAction", NullValueHandling = NullValueHandling.Ignore)]
        public C1G2SingulationSessionAndAction C1G2SingulationSessionAndAction { get; set; }

        [JsonProperty("C1G2SingulationControl", NullValueHandling = NullValueHandling.Ignore)]
        public C1G2SingulationControl C1G2SingulationControl { get; set; }
    }

    public partial class C1G2SingulationControl
    {
        [JsonProperty("singulationAlgorithm", NullValueHandling = NullValueHandling.Ignore)]
        public SingulationAlgorithm SingulationAlgorithm { get; set; }

        [JsonProperty("singulationAlgorithmParameters", NullValueHandling = NullValueHandling.Ignore)]
        public SingulationAlgorithmParameters SingulationAlgorithmParameters { get; set; }
    }

    public partial class SingulationAlgorithm
    {
        [JsonProperty("algorithm", NullValueHandling = NullValueHandling.Ignore)]
        public long? Algorithm { get; set; }
    }

    public partial class SingulationAlgorithmParameters
    {
        [JsonProperty("algorithm", NullValueHandling = NullValueHandling.Ignore)]
        public long? Algorithm { get; set; }

        [JsonProperty("qValue", NullValueHandling = NullValueHandling.Ignore)]
        public long? QValue { get; set; }

        [JsonProperty("qMinValue", NullValueHandling = NullValueHandling.Ignore)]
        public long? QMinValue { get; set; }

        [JsonProperty("qMaxValue", NullValueHandling = NullValueHandling.Ignore)]
        public long? QMaxValue { get; set; }

        [JsonProperty("retryCount", NullValueHandling = NullValueHandling.Ignore)]
        public long? RetryCount { get; set; }

        [JsonProperty("thresholdMultiplier", NullValueHandling = NullValueHandling.Ignore)]
        public long? ThresholdMultiplier { get; set; }

        [JsonProperty("toggleTarget", NullValueHandling = NullValueHandling.Ignore)]
        public bool? ToggleTarget { get; set; }

        [JsonProperty("repeatUntilNoTags", NullValueHandling = NullValueHandling.Ignore)]
        public bool? RepeatUntilNoTags { get; set; }
    }

    public partial class C1G2SingulationSessionAndAction
    {
        [JsonProperty("sessionID", NullValueHandling = NullValueHandling.Ignore)]
        public long? SessionId { get; set; }

        [JsonProperty("C1G2TagInventoryStateAwareSingulationAction", NullValueHandling = NullValueHandling.Ignore)]
        public C1G2TagInventoryStateAwareSingulationAction C1G2TagInventoryStateAwareSingulationAction { get; set; }
    }

    public partial class C1G2TagInventoryStateAwareSingulationAction
    {
        [JsonProperty("I", NullValueHandling = NullValueHandling.Ignore)]
        public long? I { get; set; }

        [JsonProperty("S", NullValueHandling = NullValueHandling.Ignore)]
        public long? S { get; set; }
    }

    public partial class Dtic
    {
        [JsonProperty("dwellTime", NullValueHandling = NullValueHandling.Ignore)]
        public long? DwellTime { get; set; }

        [JsonProperty("inventoryCycles", NullValueHandling = NullValueHandling.Ignore)]
        public long? InventoryCycles { get; set; }
    }

    public partial class RfTransmitter
    {
        [JsonProperty("channelIndex", NullValueHandling = NullValueHandling.Ignore)]
        public long? ChannelIndex { get; set; }

        [JsonProperty("transmitPowerIndex", NullValueHandling = NullValueHandling.Ignore)]
        public long? TransmitPowerIndex { get; set; }
    }

    public partial class Sequence
    {
        [JsonProperty("sequence", NullValueHandling = NullValueHandling.Ignore)]
        public long? SequenceSequence { get; set; }
    }

    public partial class StopCriteria
    {
        [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
        public long? Type { get; set; }

        [JsonProperty("duration_milsec", NullValueHandling = NullValueHandling.Ignore)]
        public long? DurationMilsec { get; set; }

        [JsonProperty("triggerGPI")]
        public TriggerGpi TriggerGpi { get; set; }

        [JsonProperty("tagObservation", NullValueHandling = NullValueHandling.Ignore)]
        public TagObservation TagObservation { get; set; }
    }

    public partial class TagObservation
    {
        [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
        public long? Type { get; set; }

        [JsonProperty("numTags", NullValueHandling = NullValueHandling.Ignore)]
        public long? NumTags { get; set; }

        [JsonProperty("numAttempts", NullValueHandling = NullValueHandling.Ignore)]
        public long? NumAttempts { get; set; }

        [JsonProperty("timeIdle_milsec", NullValueHandling = NullValueHandling.Ignore)]
        public long? TimeIdleMilsec { get; set; }

        [JsonProperty("timeout_milsec", NullValueHandling = NullValueHandling.Ignore)]
        public long? TimeoutMilsec { get; set; }
    }

    public partial class TriggerGpi
    {
        [JsonProperty("port", NullValueHandling = NullValueHandling.Ignore)]
        public long? Port { get; set; }

        [JsonProperty("evtGPI", NullValueHandling = NullValueHandling.Ignore)]
        public bool? EvtGpi { get; set; }

        [JsonProperty("timeout_milsec", NullValueHandling = NullValueHandling.Ignore)]
        public long? TimeoutMilsec { get; set; }
    }

    public partial class TagRssiFilter10Ths
    {
        [JsonProperty("from", NullValueHandling = NullValueHandling.Ignore)]
        public long? From { get; set; }

        [JsonProperty("to", NullValueHandling = NullValueHandling.Ignore)]
        public long? To { get; set; }
    }

    public partial class InvtStartCriteria
    {
        [JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
        public long? Type { get; set; }

        [JsonProperty("offset_milsec", NullValueHandling = NullValueHandling.Ignore)]
        public long? OffsetMilsec { get; set; }

        [JsonProperty("period_milsec", NullValueHandling = NullValueHandling.Ignore)]
        public long? PeriodMilsec { get; set; }

        [JsonProperty("triggerGPI", NullValueHandling = NullValueHandling.Ignore)]
        public TriggerGpi TriggerGpi { get; set; }
    }

    public partial class ReportSpec
    {
        [JsonProperty("reportCriteriaType", NullValueHandling = NullValueHandling.Ignore)]
        public long? ReportCriteriaType { get; set; }

        [JsonProperty("N", NullValueHandling = NullValueHandling.Ignore)]
        public long? N { get; set; }

        [JsonProperty("reportSelector", NullValueHandling = NullValueHandling.Ignore)]
        public ReportSelector ReportSelector { get; set; }
    }

    public partial class ReportSelector
    {
        [JsonProperty("antennaID", NullValueHandling = NullValueHandling.Ignore)]
        public bool? AntennaId { get; set; }

        [JsonProperty("antennaInvtSpecID", NullValueHandling = NullValueHandling.Ignore)]
        public bool? AntennaInvtSpecId { get; set; }

        [JsonProperty("rssiRaw", NullValueHandling = NullValueHandling.Ignore)]
        public bool? RssiRaw { get; set; }

        [JsonProperty("timeFirstSeen", NullValueHandling = NullValueHandling.Ignore)]
        public bool? TimeFirstSeen { get; set; }

        [JsonProperty("timeLastSeen", NullValueHandling = NullValueHandling.Ignore)]
        public bool? TimeLastSeen { get; set; }

        [JsonProperty("count", NullValueHandling = NullValueHandling.Ignore)]
        public bool? Count { get; set; }

        [JsonProperty("tagID", NullValueHandling = NullValueHandling.Ignore)]
        public bool? TagId { get; set; }

        [JsonProperty("pc", NullValueHandling = NullValueHandling.Ignore)]
        public bool? Pc { get; set; }
    }

    public partial class Getinventory
    {
        public static Getinventory FromJson(string json) => JsonConvert.DeserializeObject<Getinventory>(json, QuickType.Converter.Settings);
    }
}
