using System.Text.Json.Serialization;
using System.Collections.Generic;
using Topsdk.Util;

namespace Topsdk.Top.Ability425.Request;

public class TaobaoTbkScPublisherInfoGetRequest : AbstractTopApiRequest
{

    /*
        渠道独占 - 渠道关系ID
            */
    private long? relationId;


    /*
        第几页，下标从0开始
         默认值:1    */
    private long? pageNo;


    /*
        每页大小
         默认值:10    */
    private long? pageSize;


    /*
        类型，必选 1:渠道信息；2:会员信息
            */
    private long? infoType;


    /*
        备案的场景：common（通用备案），etao（一淘备案），minietao（一淘小程序备案），offlineShop（线下门店备案），offlinePerson（线下个人备案）。如不填默认common。查询会员信息只需填写common即可
            */
    private string? relationApp;


    /*
        会员独占 - 会员运营ID
            */
    private string? specialId;


    /*
        淘宝客外部用户标记，如自身系统账户ID；微信ID等
            */
    private string? externalId;


    /*
        1-微信、2-微博、3-抖音、4-快手、5-QQ，0-其他；默认为0
         默认值:0    */
    private long? externalType;


    [JsonPropertyName("relation_id")]
    public long? RelationId
    {
        get => relationId;
        set => this.relationId = value;
    }

    [JsonPropertyName("page_no")]
    public long? PageNo
    {
        get => pageNo;
        set => this.pageNo = value;
    }

    [JsonPropertyName("page_size")]
    public long? PageSize
    {
        get => pageSize;
        set => this.pageSize = value;
    }

    [JsonPropertyName("info_type")]
    public long? InfoType
    {
        get => infoType;
        set => this.infoType = value;
    }

    [JsonPropertyName("relation_app")]
    public string? RelationApp
    {
        get => relationApp;
        set => this.relationApp = value;
    }

    [JsonPropertyName("special_id")]
    public string? SpecialId
    {
        get => specialId;
        set => this.specialId = value;
    }

    [JsonPropertyName("external_id")]
    public string? ExternalId
    {
        get => externalId;
        set => this.externalId = value;
    }

    [JsonPropertyName("external_type")]
    public long? ExternalType
    {
        get => externalType;
        set => this.externalType = value;
    }



    public override IDictionary<string, string> ToRequestParam()
    {
        IDictionary<string, string> requestParam = new Dictionary<string, string>();
        if(this.relationId != null)
        {
            requestParam.Add("relation_id",TopUtils.ConvertBasicType(this.relationId));
        }
        if(this.pageNo != null)
        {
            requestParam.Add("page_no",TopUtils.ConvertBasicType(this.pageNo));
        }
        if(this.pageSize != null)
        {
            requestParam.Add("page_size",TopUtils.ConvertBasicType(this.pageSize));
        }
        if(this.infoType != null)
        {
            requestParam.Add("info_type",TopUtils.ConvertBasicType(this.infoType));
        }
        if(this.relationApp != null)
        {
            requestParam.Add("relation_app",TopUtils.ConvertBasicType(this.relationApp));
        }
        if(this.specialId != null)
        {
            requestParam.Add("special_id",TopUtils.ConvertBasicType(this.specialId));
        }
        if(this.externalId != null)
        {
            requestParam.Add("external_id",TopUtils.ConvertBasicType(this.externalId));
        }
        if(this.externalType != null)
        {
            requestParam.Add("external_type",TopUtils.ConvertBasicType(this.externalType));
        }
        return requestParam;
    }

    public override IDictionary<string, TopFileItem> ToFileParam()
    {
        IDictionary<string, TopFileItem> fileParam = new Dictionary<string, TopFileItem>();
        return fileParam;
    }

    public override string GetApiCode()
    {
        return "taobao.tbk.sc.publisher.info.get";
    }

}

