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