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 
 | 
{ 
 | 
    /// <summary> 
 | 
    /// TOP API: dingtalk.oapi.v2.user.update 
 | 
    /// </summary> 
 | 
    public class OapiV2UserUpdateRequest : BaseDingTalkRequest<DingTalk.Api.Response.OapiV2UserUpdateResponse> 
 | 
    { 
 | 
        /// <summary> 
 | 
        /// 修改本组织专属帐号时可指定头像MediaId。只支持参考jpg/png,生成方法 https://developers.dingtalk.com/document/app/upload-media-files 
 | 
        /// </summary> 
 | 
        public string AvatarMediaId { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 所属部门id列表 
 | 
        /// </summary> 
 | 
        public string DeptIdList { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 汇报线架构-员工所在的部门链信 
 | 
        /// </summary> 
 | 
        public string DeptName { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 员工在对应的部门中的排序。 
 | 
        /// </summary> 
 | 
        public string DeptOrderList { get; set; } 
 | 
  
 | 
        public List<DeptOrderDomain> DeptOrderList_ { set { this.DeptOrderList = TopUtils.ObjectToJson(value); } }  
 | 
  
 | 
        /// <summary> 
 | 
        /// 部门内任职 
 | 
        /// </summary> 
 | 
        public string DeptPositionList { get; set; } 
 | 
  
 | 
        public List<DeptPositionDomain> DeptPositionList_ { set { this.DeptPositionList = TopUtils.ObjectToJson(value); } }  
 | 
  
 | 
        /// <summary> 
 | 
        /// 员工在对应的部门中的职位。 
 | 
        /// </summary> 
 | 
        public string DeptTitleList { get; set; } 
 | 
  
 | 
        public List<DeptTitleDomain> DeptTitleList_ { set { this.DeptTitleList = TopUtils.ObjectToJson(value); } }  
 | 
  
 | 
        /// <summary> 
 | 
        /// 员工邮箱,长度最大50个字符。企业内必须唯一,不可重复。 
 | 
        /// </summary> 
 | 
        public string Email { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 专属帐号手机号 
 | 
        /// </summary> 
 | 
        public string ExclusiveMobile { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 手机号验证状态 
 | 
        /// </summary> 
 | 
        public string ExclusiveMobileVerifyStatus { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 更新自定义字段列表 
 | 
        /// </summary> 
 | 
        public string ExtAttrs { get; set; } 
 | 
  
 | 
        public List<EmpExtAttrDomain> ExtAttrs_ { set { this.ExtAttrs = TopUtils.ObjectToJson(value); } }  
 | 
  
 | 
        /// <summary> 
 | 
        /// 自定义字段更新模式,0-覆盖方式  1-追加方式  (默认是覆盖) 
 | 
        /// </summary> 
 | 
        public Nullable<long> ExtAttrsUpdateMode { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 扩展属性,长度最大2000个字符。可以设置多种属性(手机上最多显示10个扩展属性,具体显示哪些属性,请到OA管理后台->设置->通讯录信息设置和OA管理后台->设置->手机端显示信息设置)。 该字段的值支持链接类型填写,同时链接支持变量通配符自动替换,目前支持通配符有:userid,corpid。示例: [工位地址](http://www.dingtalk.com?userid=#userid#&corpid=#corpid#) 
 | 
        /// </summary> 
 | 
        public string Extension { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 企业内昵称(花名) 
 | 
        /// </summary> 
 | 
        public string FlowerName { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 强制更新的字段,支持清空指定的字段,使用逗号分隔。目前支持字段:manager_userid 
 | 
        /// </summary> 
 | 
        public string ForceUpdateFields { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 自定义性别字段 
 | 
        /// </summary> 
 | 
        public string Gender { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 汇报线架构-是否有下属 
 | 
        /// </summary> 
 | 
        public Nullable<bool> HasSubordinate { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 是否号码隐藏。隐藏手机号后,手机号在个人资料页隐藏,但仍可对其发DING、发起钉钉免费商务电话。 
 | 
        /// </summary> 
 | 
        public Nullable<bool> HideMobile { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 入职时间,Unix时间戳,单位ms。 
 | 
        /// </summary> 
 | 
        public Nullable<long> HiredDate { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 重置专属帐号密码 
 | 
        /// </summary> 
 | 
        public string InitPassword { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 员工工号,长度最大50个字符。 
 | 
        /// </summary> 
 | 
        public string JobNumber { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 语言 
 | 
        /// </summary> 
 | 
        public string Language { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 是否外包员工 
 | 
        /// </summary> 
 | 
        public Nullable<bool> Limited { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 修改专属帐号登录名 
 | 
        /// </summary> 
 | 
        public string LoginId { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 直属主管 
 | 
        /// </summary> 
 | 
        public string ManagerUserid { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 手机号码,企业内必须唯一,不可重复。如果是国际号码,请使用+xx-xxxxxx的格式 
 | 
        /// </summary> 
 | 
        public string Mobile { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 员工名称,长度最大80个字符。 
 | 
        /// </summary> 
 | 
        public string Name { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 修改本组织专属帐号时可指定昵称 
 | 
        /// </summary> 
 | 
        public string Nickname { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 员工的企业邮箱,长度最大100个字符。员工的企业邮箱已开通,才能增加此字段。 
 | 
        /// </summary> 
 | 
        public string OrgEmail { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 企业邮箱类型(profession:标准版,base:基础版) 
 | 
        /// </summary> 
 | 
        public string OrgEmailType { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 备注,长度最大2000个字符。 
 | 
        /// </summary> 
 | 
        public string Remark { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 是否高管模式。开启后,手机号码对所有员工隐藏。普通员工无法对其发DING、发起钉钉免费商务电话。高管之间不受影响。 
 | 
        /// </summary> 
 | 
        public Nullable<bool> SeniorMode { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 分机号,长度最大50个字符。企业内必须唯一,不可重复 
 | 
        /// </summary> 
 | 
        public string Telephone { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 职位,长度最大200个字符。 
 | 
        /// </summary> 
 | 
        public string Title { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 员工id,长度最大64个字符。员工在当前企业内的唯一标识。如果不传,服务器将自动生成一个userid。创建后不可修改,企业内必须唯一。 
 | 
        /// </summary> 
 | 
        public string Userid { get; set; } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 办公地点,长度最大100个字符。 
 | 
        /// </summary> 
 | 
        public string WorkPlace { get; set; } 
 | 
  
 | 
        #region IDingTalkRequest Members 
 | 
  
 | 
        public override string GetApiName() 
 | 
        { 
 | 
            return "dingtalk.oapi.v2.user.update"; 
 | 
        } 
 | 
  
 | 
        public override string GetApiCallType() 
 | 
        { 
 | 
            return DingTalkConstants.CALL_TYPE_OAPI; 
 | 
        } 
 | 
  
 | 
        public override IDictionary<string, string> GetParameters() 
 | 
        { 
 | 
            TopDictionary parameters = new TopDictionary(); 
 | 
            parameters.Add("avatarMediaId", this.AvatarMediaId); 
 | 
            parameters.Add("dept_id_list", this.DeptIdList); 
 | 
            parameters.Add("dept_name", this.DeptName); 
 | 
            parameters.Add("dept_order_list", this.DeptOrderList); 
 | 
            parameters.Add("dept_position_list", this.DeptPositionList); 
 | 
            parameters.Add("dept_title_list", this.DeptTitleList); 
 | 
            parameters.Add("email", this.Email); 
 | 
            parameters.Add("exclusive_mobile", this.ExclusiveMobile); 
 | 
            parameters.Add("exclusive_mobile_verify_status", this.ExclusiveMobileVerifyStatus); 
 | 
            parameters.Add("ext_attrs", this.ExtAttrs); 
 | 
            parameters.Add("ext_attrs_update_mode", this.ExtAttrsUpdateMode); 
 | 
            parameters.Add("extension", this.Extension); 
 | 
            parameters.Add("flower_name", this.FlowerName); 
 | 
            parameters.Add("force_update_fields", this.ForceUpdateFields); 
 | 
            parameters.Add("gender", this.Gender); 
 | 
            parameters.Add("has_subordinate", this.HasSubordinate); 
 | 
            parameters.Add("hide_mobile", this.HideMobile); 
 | 
            parameters.Add("hired_date", this.HiredDate); 
 | 
            parameters.Add("init_password", this.InitPassword); 
 | 
            parameters.Add("job_number", this.JobNumber); 
 | 
            parameters.Add("language", this.Language); 
 | 
            parameters.Add("limited", this.Limited); 
 | 
            parameters.Add("loginId", this.LoginId); 
 | 
            parameters.Add("manager_userid", this.ManagerUserid); 
 | 
            parameters.Add("mobile", this.Mobile); 
 | 
            parameters.Add("name", this.Name); 
 | 
            parameters.Add("nickname", this.Nickname); 
 | 
            parameters.Add("org_email", this.OrgEmail); 
 | 
            parameters.Add("org_email_type", this.OrgEmailType); 
 | 
            parameters.Add("remark", this.Remark); 
 | 
            parameters.Add("senior_mode", this.SeniorMode); 
 | 
            parameters.Add("telephone", this.Telephone); 
 | 
            parameters.Add("title", this.Title); 
 | 
            parameters.Add("userid", this.Userid); 
 | 
            parameters.Add("work_place", this.WorkPlace); 
 | 
            if (this.otherParams != null) 
 | 
            { 
 | 
                parameters.AddAll(this.otherParams); 
 | 
            } 
 | 
            return parameters; 
 | 
        } 
 | 
  
 | 
        public override void Validate() 
 | 
        { 
 | 
            RequestValidator.ValidateMaxListSize("dept_id_list", this.DeptIdList, 300); 
 | 
            RequestValidator.ValidateObjectMaxListSize("dept_order_list", this.DeptOrderList, 100); 
 | 
            RequestValidator.ValidateObjectMaxListSize("dept_position_list", this.DeptPositionList, 999); 
 | 
            RequestValidator.ValidateObjectMaxListSize("dept_title_list", this.DeptTitleList, 100); 
 | 
            RequestValidator.ValidateMaxLength("email", this.Email, 50); 
 | 
            RequestValidator.ValidateObjectMaxListSize("ext_attrs", this.ExtAttrs, 999); 
 | 
            RequestValidator.ValidateMaxListSize("force_update_fields", this.ForceUpdateFields, 999); 
 | 
            RequestValidator.ValidateMinValue("hired_date", this.HiredDate, 1); 
 | 
            RequestValidator.ValidateMaxLength("job_number", this.JobNumber, 50); 
 | 
            RequestValidator.ValidateMaxLength("language", this.Language, 6); 
 | 
            RequestValidator.ValidateMaxLength("name", this.Name, 80); 
 | 
            RequestValidator.ValidateMaxLength("org_email", this.OrgEmail, 100); 
 | 
            RequestValidator.ValidateMaxLength("remark", this.Remark, 2000); 
 | 
            RequestValidator.ValidateMaxLength("telephone", this.Telephone, 50); 
 | 
            RequestValidator.ValidateMaxLength("title", this.Title, 200); 
 | 
            RequestValidator.ValidateRequired("userid", this.Userid); 
 | 
            RequestValidator.ValidateMaxLength("userid", this.Userid, 64); 
 | 
            RequestValidator.ValidateMaxLength("work_place", this.WorkPlace, 100); 
 | 
        } 
 | 
  
 | 
    /// <summary> 
 | 
/// DeptOrderDomain Data Structure. 
 | 
/// </summary> 
 | 
[Serializable] 
 | 
  
 | 
public class DeptOrderDomain : TopObject 
 | 
{ 
 | 
            /// <summary> 
 | 
            /// 部门id 
 | 
            /// </summary> 
 | 
            [XmlElement("dept_id")] 
 | 
            public Nullable<long> DeptId { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 员工在部门中的排序。 
 | 
            /// </summary> 
 | 
            [XmlElement("order")] 
 | 
            public Nullable<long> Order { get; set; } 
 | 
} 
 | 
  
 | 
    /// <summary> 
 | 
/// DeptTitleDomain Data Structure. 
 | 
/// </summary> 
 | 
[Serializable] 
 | 
  
 | 
public class DeptTitleDomain : TopObject 
 | 
{ 
 | 
            /// <summary> 
 | 
            /// 部门id 
 | 
            /// </summary> 
 | 
            [XmlElement("dept_id")] 
 | 
            public Nullable<long> DeptId { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 员工在部门中的职位。 
 | 
            /// </summary> 
 | 
            [XmlElement("title")] 
 | 
            public string Title { get; set; } 
 | 
} 
 | 
  
 | 
    /// <summary> 
 | 
/// DeptPositionDomain Data Structure. 
 | 
/// </summary> 
 | 
[Serializable] 
 | 
  
 | 
public class DeptPositionDomain : TopObject 
 | 
{ 
 | 
            /// <summary> 
 | 
            /// 部门id 
 | 
            /// </summary> 
 | 
            [XmlElement("dept_id")] 
 | 
            public Nullable<long> DeptId { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 是否主任职(需要有且只有一个主任职) 
 | 
            /// </summary> 
 | 
            [XmlElement("is_main")] 
 | 
            public Nullable<bool> IsMain { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 部门内直属主管员工id 
 | 
            /// </summary> 
 | 
            [XmlElement("manager_userid")] 
 | 
            public string ManagerUserid { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 员工在部门中的职位,长度最大200个字符。 
 | 
            /// </summary> 
 | 
            [XmlElement("title")] 
 | 
            public string Title { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 办公地点,长度最大100个字符。 
 | 
            /// </summary> 
 | 
            [XmlElement("work_place")] 
 | 
            public string WorkPlace { get; set; } 
 | 
} 
 | 
  
 | 
    /// <summary> 
 | 
/// EmpExtAttrValueDomain Data Structure. 
 | 
/// </summary> 
 | 
[Serializable] 
 | 
  
 | 
public class EmpExtAttrValueDomain : TopObject 
 | 
{ 
 | 
            /// <summary> 
 | 
            /// 自定义字段图片值 
 | 
            /// </summary> 
 | 
            [XmlArray("images")] 
 | 
            [XmlArrayItem("string")] 
 | 
            public List<string> Images { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 自定义字段文本值 
 | 
            /// </summary> 
 | 
            [XmlElement("text")] 
 | 
            public string Text { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 自定义字段链接值 
 | 
            /// </summary> 
 | 
            [XmlElement("url")] 
 | 
            public string Url { get; set; } 
 | 
} 
 | 
  
 | 
    /// <summary> 
 | 
/// EmpExtAttrDomain Data Structure. 
 | 
/// </summary> 
 | 
[Serializable] 
 | 
  
 | 
public class EmpExtAttrDomain : TopObject 
 | 
{ 
 | 
            /// <summary> 
 | 
            /// 自定义字段编码 
 | 
            /// </summary> 
 | 
            [XmlElement("code")] 
 | 
            public string Code { get; set; } 
 | 
     
 | 
            /// <summary> 
 | 
            /// 更新自定义字段值 
 | 
            /// </summary> 
 | 
            [XmlElement("value")] 
 | 
            public EmpExtAttrValueDomain Value { get; set; } 
 | 
} 
 | 
  
 | 
        #endregion 
 | 
    } 
 | 
} 
 |