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
}
}