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

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

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

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

        [JsonProperty("tagOps", NullValueHandling = NullValueHandling.Ignore)]
        public TagOp[] TagOps { 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; }

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

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

    public partial class Retry
    {
        [JsonProperty("retry")]
        public long RetryRetry { get; set; }

        [JsonProperty("delay")]
        public long Delay { get; set; }
    }

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

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

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

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

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

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

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

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

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

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

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

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

        [JsonProperty("password", NullValueHandling = NullValueHandling.Ignore)]
        public uint? Password { get; set; }

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

        [JsonProperty("data")]
        public short[] Data { get; set; }

        [JsonProperty("lockPayLoads")]
        public LockPayLoad[] LockPayLoads { get; set; }
    }

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

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

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

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

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

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

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

}
