using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using Top.Api.Util;
using Top.Api;
using Top.Api.DingTalk;
namespace DingTalk.Api.Request
{
    /// 
    /// TOP API: dingtalk.oapi.edu.class.listbyteacher
    /// 
    public class OapiEduClassListbyteacherRequest : BaseDingTalkRequest
    {
        /// 
        /// 过滤入参
        /// 
        public string FilterParam { get; set; }
        public OpenClassParamDomain FilterParam_ { set { this.FilterParam = TopUtils.ObjectToJson(value); } } 
        /// 
        /// 是否跨组织查询
        /// 
        public Nullable QueryFromAllOrgs { get; set; }
        /// 
        /// 返回的扩展信息设置(不支持跨组织)
        /// 
        public string RetExtFields { get; set; }
        public OpenEduSelectClassExtFieldsDomain RetExtFields_ { set { this.RetExtFields = TopUtils.ObjectToJson(value); } } 
        /// 
        /// 用户ID
        /// 
        public string Userid { get; set; }
        #region IDingTalkRequest Members
        public override string GetApiName()
        {
            return "dingtalk.oapi.edu.class.listbyteacher";
        }
        public override string GetApiCallType()
        {
            return DingTalkConstants.CALL_TYPE_OAPI;
        }
        public override IDictionary GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("filter_param", this.FilterParam);
            parameters.Add("queryFromAllOrgs", this.QueryFromAllOrgs);
            parameters.Add("ret_ext_fields", this.RetExtFields);
            parameters.Add("userid", this.Userid);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }
        public override void Validate()
        {
        }
	/// 
/// OpenClassParamDomain Data Structure.
/// 
[Serializable]
public class OpenClassParamDomain : TopObject
{
	        /// 
	        /// 群类型
	        /// 
	        [XmlElement("group_type")]
	        public string GroupType { get; set; }
	
	        /// 
	        /// 角色
	        /// 
	        [XmlElement("role")]
	        public string Role { get; set; }
}
	/// 
/// OpenEduSelectClassExtFieldsDomain Data Structure.
/// 
[Serializable]
public class OpenEduSelectClassExtFieldsDomain : TopObject
{
	        /// 
	        /// 返回群信息
	        /// 
	        [XmlElement("ret_conversation_list")]
	        public Nullable RetConversationList { get; set; }
}
        #endregion
    }
}