using Newtonsoft.Json;

namespace Nop.Plugin.Tax.Avalara.ItemClassificationAPI;

public class ItemClassificationModel
{

    public ItemClassificationModel()
    {
        ClassificationParameters = new List<ClassificationParameters>();
        Parameters = new List<ClassificationParameters>();
    }

    /// <summary>
    /// A unique id generated by Avalara Classification System
    /// </summary>
    [JsonProperty(PropertyName = "id", NullValueHandling = NullValueHandling.Ignore)]
    public int? Id { get; set; }

    /// <summary>
    /// The unique ID number of the company that owns this item
    /// </summary>
    /// <remarks>
    /// Required
    /// </remarks>
    [JsonProperty(PropertyName = "companyId")]
    public int CompanyId { get; set; }

    /// <summary>
    /// A unique code representing this item. It’s recommended to use the SKU number
    /// </summary>
    /// <remarks>
    /// Required
    /// </remarks>
    [JsonProperty(PropertyName = "itemCode")]
    public string ItemCode { get; set; }

    /// <summary>
    /// Use the parentCode to group product variants. Variants are a group of similar items that only differ from one another by product details like size, color, material, pattern, age group or size
    /// </summary>
    [JsonProperty(PropertyName = "parentCode")]
    public string ParentCode { get; set; }

    /// <summary>
    /// A short description of the product. It’s also referred as product title or name
    /// </summary>
    /// <remarks>
    /// Required
    /// </remarks>
    [JsonProperty(PropertyName = "description")]
    public string Description { get; set; }

    /// <summary>
    /// A long description of the product
    /// </summary>
    [JsonProperty(PropertyName = "summary")]
    public string Summary { get; set; }

    /// <summary>
    /// Product category breadcrumbs. This is the full path to the category where item is included. Categories should be separated by >
    /// </summary>
    /// <remarks>
    /// Required
    /// </remarks>
    [JsonProperty(PropertyName = "itemGroup")]
    public string ItemGroup { get; set; }

    /// <summary>
    /// classificationParameters
    /// </summary>
    [JsonProperty(PropertyName = "classificationParameters")]
    public List<ClassificationParameters> ClassificationParameters { get; set; }

    /// <summary>
    /// parameters
    /// </summary>
    [JsonProperty(PropertyName = "parameters")]
    public List<ClassificationParameters> Parameters { get; set; }
}