using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using Top.Api.Util;

namespace Top.Api.Request
{
    /// <summary>
    /// TOP API: taobao.tbk.dg.material.optional.upgrade
    /// </summary>
    public class TbkDgMaterialOptionalUpgradeRequest : BaseTopRequest<Top.Api.Response.TbkDgMaterialOptionalUpgradeResponse>
    {
        /// <summary>
        /// 推广位id，mm_xxx_xxx_12345678三段式的最后一段数字（登录pub.alimama.com推广管理-推广位管理中查询）
        /// </summary>
        public Nullable<long> AdzoneId { get; set; }

        /// <summary>
        /// 1-动态ID转链场景，2-消费者比价场景（不填默认为1）；场景id使用说明参考《淘宝客新商品ID升级》白皮书：https://www.yuque.com/taobaolianmengguanfangxiaoer/zmig94/tfyt0pahmlpzu2ud
        /// </summary>
        public string BizSceneId { get; set; }

        /// <summary>
        /// 商品筛选-后台类目ID。用,分割，最大10个
        /// </summary>
        public string Cat { get; set; }

        /// <summary>
        /// 智能匹配-设备号加密类型：MD5；使用智能推荐请先签署协议https://pub.alimama.com/fourth/protocol/common.htm?key=hangye_laxin
        /// </summary>
        public string DeviceEncrypt { get; set; }

        /// <summary>
        /// 智能匹配-设备号类型：IMEI，或者IDFA，或者UTDID（UTDID不支持MD5加密），或者OAID；使用智能推荐请先签署协议https://pub.alimama.com/fourth/protocol/common.htm?key=hangye_laxin
        /// </summary>
        public string DeviceType { get; set; }

        /// <summary>
        /// 智能匹配-设备号加密后的值（MD5加密需32位小写）；使用智能推荐请先签署协议https://pub.alimama.com/fourth/protocol/common.htm?key=hangye_laxin
        /// </summary>
        public string DeviceValue { get; set; }

        /// <summary>
        /// 商品筛选-预估到手价范围上限。单位：元
        /// </summary>
        public Nullable<long> EndPrice { get; set; }

        /// <summary>
        /// 商品筛选-淘客收入比率上限(商品佣金比率+补贴比率)。如：1234表示12.34%
        /// </summary>
        public Nullable<long> EndTkRate { get; set; }

        /// <summary>
        /// 是否获取前N件佣金信息 0否，1是，其他值否
        /// </summary>
        public Nullable<long> GetTopnRate { get; set; }

        /// <summary>
        /// 优惠券筛选-是否有优惠券。true表示该商品有优惠券，false或不设置表示不限
        /// </summary>
        public Nullable<bool> HasCoupon { get; set; }

        /// <summary>
        /// 商品筛选-好评率是否高于行业均值。True表示大于等于，false或不设置表示不限
        /// </summary>
        public Nullable<bool> IncludeGoodRate { get; set; }

        /// <summary>
        /// 商品筛选-成交转化是否高于行业均值。True表示大于等于，false或不设置表示不限
        /// </summary>
        public Nullable<bool> IncludePayRate30 { get; set; }

        /// <summary>
        /// 商品筛选-退款率是否低于行业均值。True表示大于等于，false或不设置表示不限
        /// </summary>
        public Nullable<bool> IncludeRfdRate { get; set; }

        /// <summary>
        /// ip参数影响邮费获取，如果不传或者传入不准确，邮费无法精准提供
        /// </summary>
        public string Ip { get; set; }

        /// <summary>
        /// 商品筛选-是否海外商品。true表示属于海外商品，false或不设置表示不限
        /// </summary>
        public Nullable<bool> IsOverseas { get; set; }

        /// <summary>
        /// 商品筛选-是否天猫商品。true表示属于天猫商品，false或不设置表示不限
        /// </summary>
        public Nullable<bool> IsTmall { get; set; }

        /// <summary>
        /// 商品筛选-所在地
        /// </summary>
        public string Itemloc { get; set; }

        /// <summary>
        /// 物料id，不传时默认物料material_id=80309；如果直接对消费者投放，可使用官方个性化算法优化的搜索物料material_id=17004（注意：若物料id=17004没查询到结果则出系统默认物料id=80309的查询结果）
        /// </summary>
        public Nullable<long> MaterialId { get; set; }

        /// <summary>
        /// 线报内容筛选—内容生产截止时间，13毫秒时间戳
        /// </summary>
        public string MgcEndTime { get; set; }

        /// <summary>
        /// 线报内容筛选—内容生产开始时间，13毫秒时间戳
        /// </summary>
        public string MgcStartTime { get; set; }

        /// <summary>
        /// 线报状态筛选，0-全部 1-过期 2-实时生效 3-未来生效 不传默认过滤有效
        /// </summary>
        public string MgcStatus { get; set; }

        /// <summary>
        /// 商品筛选-是否包邮。true表示包邮，false或不设置表示不限
        /// </summary>
        public Nullable<bool> NeedFreeShipment { get; set; }

        /// <summary>
        /// 商品筛选-是否加入消费者保障。true表示加入，false或不设置表示不限
        /// </summary>
        public Nullable<bool> NeedPrepay { get; set; }

        /// <summary>
        /// 商品筛选-牛皮癣程度。取值：1不限，2无，3轻微
        /// </summary>
        public Nullable<long> NpxLevel { get; set; }

        /// <summary>
        /// 第几页，默认：１
        /// </summary>
        public Nullable<long> PageNo { get; set; }

        /// <summary>
        /// 页大小，默认20，1~100
        /// </summary>
        public Nullable<long> PageSize { get; set; }

        /// <summary>
        /// 1-自购省，2-推广赚（代理模式专属ID，代理模式必填，非代理模式不用填写该字段）
        /// </summary>
        public string PromotionType { get; set; }

        /// <summary>
        /// 商品筛选-查询词；注意：使用标题精准搜索时，若无消费者比价场景ID2权限，当搜索结果只有一个商品时则出参不再提供商品推广链接和商品id字段，若搜索结果仍有多个商品，则正常出参。同时无消费者比价场景ID2权限，q参数也不再支持入参淘宝复制的商品链接进行搜索查询，仅支持入参含新商品id的淘宝客推广链接如uland链接进行搜索查询(场景id使用说明参考《淘宝客新商品ID升级》白皮书：https://www.yuque.com/taobaolianmengguanfangxiaoer/zmig94/tfyt0pahmlpzu2ud)
        /// </summary>
        public string Q { get; set; }

        /// <summary>
        /// 渠道关系ID，仅适用于渠道推广场景
        /// </summary>
        public string RelationId { get; set; }

        /// <summary>
        /// 排序_des（降序），排序_asc（升序），销量（total_sales），淘客收入比率（tk_rate），营销计划佣金（tk_mkt_rate）， 累计推广量（tk_total_sales），总支出佣金（tk_total_commi），预估到价格（final_promotion_price），匹配分（match）
        /// </summary>
        public string Sort { get; set; }

        /// <summary>
        /// 会员运营ID
        /// </summary>
        public string SpecialId { get; set; }

        /// <summary>
        /// 商品筛选-店铺dsr评分。筛选大于等于当前设置的店铺dsr评分的商品0-50000之间
        /// </summary>
        public Nullable<long> StartDsr { get; set; }

        /// <summary>
        /// 商品筛选-预估到手价范围下限。单位：元
        /// </summary>
        public Nullable<long> StartPrice { get; set; }

        /// <summary>
        /// 商品筛选-淘客收入比率下限(商品佣金比率+补贴比率)。如：1234表示12.34%
        /// </summary>
        public Nullable<long> StartTkRate { get; set; }

        /// <summary>
        /// 人群ID，仅适用于物料评估场景material_id=41377
        /// </summary>
        public Nullable<long> UcrowdId { get; set; }

        /// <summary>
        /// 物料评估-商品列表
        /// </summary>
        public string UcrowdRankItems { get; set; }

        public List<UcrowdrankitemsDomain> UcrowdRankItems_ { set { this.UcrowdRankItems = TopUtils.ObjectToJson(value); } } 

        #region ITopRequest Members

        public override string GetApiName()
        {
            return "taobao.tbk.dg.material.optional.upgrade";
        }

        public override IDictionary<string, string> GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("adzone_id", this.AdzoneId);
            parameters.Add("biz_scene_id", this.BizSceneId);
            parameters.Add("cat", this.Cat);
            parameters.Add("device_encrypt", this.DeviceEncrypt);
            parameters.Add("device_type", this.DeviceType);
            parameters.Add("device_value", this.DeviceValue);
            parameters.Add("end_price", this.EndPrice);
            parameters.Add("end_tk_rate", this.EndTkRate);
            parameters.Add("get_topn_rate", this.GetTopnRate);
            parameters.Add("has_coupon", this.HasCoupon);
            parameters.Add("include_good_rate", this.IncludeGoodRate);
            parameters.Add("include_pay_rate_30", this.IncludePayRate30);
            parameters.Add("include_rfd_rate", this.IncludeRfdRate);
            parameters.Add("ip", this.Ip);
            parameters.Add("is_overseas", this.IsOverseas);
            parameters.Add("is_tmall", this.IsTmall);
            parameters.Add("itemloc", this.Itemloc);
            parameters.Add("material_id", this.MaterialId);
            parameters.Add("mgc_end_time", this.MgcEndTime);
            parameters.Add("mgc_start_time", this.MgcStartTime);
            parameters.Add("mgc_status", this.MgcStatus);
            parameters.Add("need_free_shipment", this.NeedFreeShipment);
            parameters.Add("need_prepay", this.NeedPrepay);
            parameters.Add("npx_level", this.NpxLevel);
            parameters.Add("page_no", this.PageNo);
            parameters.Add("page_size", this.PageSize);
            parameters.Add("promotion_type", this.PromotionType);
            parameters.Add("q", this.Q);
            parameters.Add("relation_id", this.RelationId);
            parameters.Add("sort", this.Sort);
            parameters.Add("special_id", this.SpecialId);
            parameters.Add("start_dsr", this.StartDsr);
            parameters.Add("start_price", this.StartPrice);
            parameters.Add("start_tk_rate", this.StartTkRate);
            parameters.Add("ucrowd_id", this.UcrowdId);
            parameters.Add("ucrowd_rank_items", this.UcrowdRankItems);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }

        public override void Validate()
        {
            RequestValidator.ValidateRequired("adzone_id", this.AdzoneId);
        }

	/// <summary>
/// UcrowdrankitemsDomain Data Structure.
/// </summary>
[Serializable]

public class UcrowdrankitemsDomain : TopObject
{
	        /// <summary>
	        /// 物料评估-商品佣金率，如：1234表示12.34%，material_id=41377时选填
	        /// </summary>
	        [XmlElement("commirate")]
	        public Nullable<long> Commirate { get; set; }
	
	        /// <summary>
	        /// 物料评估-商品ID，material_id=41377时必填
	        /// </summary>
	        [XmlElement("item_id")]
	        public string ItemId { get; set; }
	
	        /// <summary>
	        /// 物料评估-商品价格，单位：元，material_id=41377时选填
	        /// </summary>
	        [XmlElement("price")]
	        public string Price { get; set; }
}

        #endregion
    }
}
