diff --git a/proto/Employees/Employee.proto b/proto/Employees/Employee.proto index 61f651fb..7268b280 100644 --- a/proto/Employees/Employee.proto +++ b/proto/Employees/Employee.proto @@ -11,6 +11,7 @@ message Employee required string Position = 3; required bool CanBeInvitedForChat = 4; optional Timestamp CreationTimestamp = 5; + optional EmployeeExternalIdentity ExternalIdentity = 6; } message EmployeePermissions { @@ -31,3 +32,8 @@ message EmployeeList { repeated Employee Employees = 1; required int32 TotalCount = 2; } + +message EmployeeExternalIdentity { + optional string ExternalId = 1; + optional string Email = 2; +} diff --git a/proto/Employees/EmployeeToCreate.proto b/proto/Employees/EmployeeToCreate.proto index 3e20876b..70699855 100644 --- a/proto/Employees/EmployeeToCreate.proto +++ b/proto/Employees/EmployeeToCreate.proto @@ -14,6 +14,7 @@ message EmployeeToCreateCredentials { optional EmployeeToCreateByLogin Login = 1; optional EmployeeToCreateByCertificate Certificate = 2; + optional EmployeeToCreateBySsoProvider SsoProvider = 3; } message EmployeeToCreateByLogin { @@ -27,3 +28,10 @@ message EmployeeToCreateByCertificate optional string AccessBasis = 2; optional string Email = 3; } + +message EmployeeToCreateBySsoProvider +{ + required string Email = 1; + optional FullName FullName = 2; + required string ProviderId = 3; +} diff --git a/src/ComDiadocApi.cs b/src/ComDiadocApi.cs index 4c55dbdc..9115532e 100644 --- a/src/ComDiadocApi.cs +++ b/src/ComDiadocApi.cs @@ -762,6 +762,7 @@ FileContent GetContent( int contentType = 0); Employee GetEmployee(string authToken, string boxId, string userId); + EmployeeList GetEmployeesByExternalId(string authToken, string boxId, string externalId); EmployeeList GetEmployees(string authToken, string boxId, int page = 0, int count = 0); Employee CreateEmployee(string authToken, string boxId, [MarshalAs(UnmanagedType.IDispatch)] object employeeToCreate); Employee UpdateEmployee(string authToken, string boxId, string userId, [MarshalAs(UnmanagedType.IDispatch)] object employeeToUpdate); @@ -1166,6 +1167,11 @@ public Employee GetEmployee(string authToken, string boxId, string userId) return diadoc.GetEmployee(authToken, boxId, userId); } + public EmployeeList GetEmployeesByExternalId(string authToken, string boxId, string externalId) + { + return diadoc.GetEmployeesByExternalId(authToken, boxId, externalId); + } + public EmployeeList GetEmployees(string authToken, string boxId, int page = 0, int count = 0) { return diadoc.GetEmployees( diff --git a/src/DiadocApi.Async.cs b/src/DiadocApi.Async.cs index accceeec..2a613735 100644 --- a/src/DiadocApi.Async.cs +++ b/src/DiadocApi.Async.cs @@ -799,7 +799,7 @@ public Task GetDocumentsAsync(string authToken, DocumentsFilter fi { return diadocHttpApi.GetDocumentsAsync(authToken, filter); } - + public Task GetDocumentsV4Async(string authToken, string boxId, GetDocumentsV4Request request) { return diadocHttpApi.GetDocumentsV4Async(authToken, boxId, request); @@ -1640,6 +1640,14 @@ public Task GetEmployeeAsync(string authToken, string boxId, string us return diadocHttpApi.GetEmployeeAsync(authToken, boxId, userId); } + public Task GetEmployeesByExternalIdAsync(string authToken, string boxId, string externalId) + { + if (authToken == null) throw new ArgumentNullException("authToken"); + if (boxId == null) throw new ArgumentNullException("boxId"); + if (externalId == null) throw new ArgumentNullException("externalId"); + return diadocHttpApi.GetEmployeesByExternalIdAsync(authToken, boxId, externalId); + } + public Task GetEmployeesAsync(string authToken, string boxId, int? page, int? count) { if (authToken == null) throw new ArgumentNullException("authToken"); diff --git a/src/DiadocApi.cs b/src/DiadocApi.cs index 879ad5d0..00635f45 100644 --- a/src/DiadocApi.cs +++ b/src/DiadocApi.cs @@ -1793,6 +1793,14 @@ public Employee GetEmployee(string authToken, string boxId, string userId) return diadocHttpApi.GetEmployee(authToken, boxId, userId); } + public EmployeeList GetEmployeesByExternalId(string authToken, string boxId, string externalId) + { + if (authToken == null) throw new ArgumentNullException("authToken"); + if (boxId == null) throw new ArgumentNullException("boxId"); + if (externalId == null) throw new ArgumentNullException("externalId"); + return diadocHttpApi.GetEmployeesByExternalId(authToken, boxId, externalId); + } + public EmployeeList GetEmployees(string authToken, string boxId, int? page, int? count) { if (authToken == null) throw new ArgumentNullException("authToken"); diff --git a/src/DiadocHttpApi.Employees.Async.cs b/src/DiadocHttpApi.Employees.Async.cs index d44ce399..e66dee77 100644 --- a/src/DiadocHttpApi.Employees.Async.cs +++ b/src/DiadocHttpApi.Employees.Async.cs @@ -15,6 +15,14 @@ public Task GetEmployeeAsync(string authToken, string boxId, string us return PerformHttpRequestAsync(authToken, "GET", queryString.BuildPathAndQuery()); } + public Task GetEmployeesByExternalIdAsync(string authToken, string boxId, string externalId) + { + var queryString = new PathAndQueryBuilder("/GetEmployeesByExternalId"); + queryString.AddParameter("boxId", boxId); + queryString.AddParameter("externalId", externalId); + return PerformHttpRequestAsync(authToken, "GET", queryString.BuildPathAndQuery()); + } + public Task GetEmployeesAsync(string authToken, string boxId, int? page, int? count) { var queryString = new PathAndQueryBuilder("/GetEmployees"); @@ -70,4 +78,4 @@ public Task GetMyEmployeeAsync(string authToken, string boxId) return PerformHttpRequestAsync(authToken, "GET", queryString.BuildPathAndQuery()); } } -} \ No newline at end of file +} diff --git a/src/DiadocHttpApi.Employees.cs b/src/DiadocHttpApi.Employees.cs index d7a90f45..53f15b62 100644 --- a/src/DiadocHttpApi.Employees.cs +++ b/src/DiadocHttpApi.Employees.cs @@ -14,6 +14,14 @@ public Employee GetEmployee(string authToken, string boxId, string userId) return PerformHttpRequest(authToken, "GET", queryString.BuildPathAndQuery()); } + public EmployeeList GetEmployeesByExternalId(string authToken, string boxId, string externalId) + { + var queryString = new PathAndQueryBuilder("/GetEmployeesByExternalId"); + queryString.AddParameter("boxId", boxId); + queryString.AddParameter("externalId", externalId); + return PerformHttpRequest(authToken, "GET", queryString.BuildPathAndQuery()); + } + public EmployeeList GetEmployees(string authToken, string boxId, int? page, int? count) { var queryString = new PathAndQueryBuilder("/GetEmployees"); diff --git a/src/IDiadocApi.cs b/src/IDiadocApi.cs index 5511ccdd..a8e754e6 100644 --- a/src/IDiadocApi.cs +++ b/src/IDiadocApi.cs @@ -471,6 +471,7 @@ byte[] ParseTitleXml( DetectTitleResponse DetectDocumentTitles(string authToken, string boxId, byte[] content); FileContent GetContent(string authToken, string typeNamedId, string function, string version, int titleIndex, XsdContentType contentType = default(XsdContentType)); Employee GetEmployee(string authToken, string boxId, string userId); + EmployeeList GetEmployeesByExternalId(string authToken, string boxId, string externalId); EmployeeList GetEmployees(string authToken, string boxId, int? page, int? count); Employee CreateEmployee(string authToken, string boxId, EmployeeToCreate employeeToCreate); Employee UpdateEmployee(string authToken, string boxId, string userId, EmployeeToUpdate employeeToUpdate); @@ -1002,6 +1003,7 @@ Task WaitAcquireCounteragentResultV2Async( [Obsolete("In order to download XSD schema use the link provided in DocumentTitle.XsdUrl")] Task GetContentAsync(string authToken, string typeNamedId, string function, string version, int titleIndex, XsdContentType contentType = default(XsdContentType)); Task GetEmployeeAsync(string authToken, string boxId, string userId); + Task GetEmployeesByExternalIdAsync(string authToken, string boxId, string externalId); Task GetEmployeesAsync(string authToken, string boxId, int? page, int? count); Task CreateEmployeeAsync(string authToken, string boxId, EmployeeToCreate employeeToCreate); Task UpdateEmployeeAsync(string authToken, string boxId, string userId, EmployeeToUpdate employeeToUpdate); diff --git a/src/Proto/Employees/Employee.proto.cs b/src/Proto/Employees/Employee.proto.cs index 985fb9e9..7eabbdbe 100644 --- a/src/Proto/Employees/Employee.proto.cs +++ b/src/Proto/Employees/Employee.proto.cs @@ -55,6 +55,15 @@ public Diadoc.Api.Proto.Timestamp CreationTimestamp get { return _CreationTimestamp; } set { _CreationTimestamp = value; } } + + private Diadoc.Api.Proto.Employees.EmployeeExternalIdentity _ExternalIdentity = null; + [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name=@"ExternalIdentity", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public Diadoc.Api.Proto.Employees.EmployeeExternalIdentity ExternalIdentity + { + get { return _ExternalIdentity; } + set { _ExternalIdentity = value; } + } private global::ProtoBuf.IExtension extensionObject; global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } @@ -162,4 +171,32 @@ public int TotalCount { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } } + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EmployeeExternalIdentity")] + public partial class EmployeeExternalIdentity : global::ProtoBuf.IExtensible + { + public EmployeeExternalIdentity() {} + + + private string _ExternalId = ""; + [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"ExternalId", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string ExternalId + { + get { return _ExternalId; } + set { _ExternalId = value; } + } + + private string _Email = ""; + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"Email", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue("")] + public string Email + { + get { return _Email; } + set { _Email = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + } \ No newline at end of file diff --git a/src/Proto/Employees/EmployeeToCreate.proto.cs b/src/Proto/Employees/EmployeeToCreate.proto.cs index 1ccd2e4a..fb9854c8 100644 --- a/src/Proto/Employees/EmployeeToCreate.proto.cs +++ b/src/Proto/Employees/EmployeeToCreate.proto.cs @@ -75,6 +75,15 @@ public Diadoc.Api.Proto.Employees.EmployeeToCreateByCertificate Certificate get { return _Certificate; } set { _Certificate = value; } } + + private Diadoc.Api.Proto.Employees.EmployeeToCreateBySsoProvider _SsoProvider = null; + [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"SsoProvider", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public Diadoc.Api.Proto.Employees.EmployeeToCreateBySsoProvider SsoProvider + { + get { return _SsoProvider; } + set { _SsoProvider = value; } + } private global::ProtoBuf.IExtension extensionObject; global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } @@ -141,4 +150,37 @@ public string Email { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } } + [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EmployeeToCreateBySsoProvider")] + public partial class EmployeeToCreateBySsoProvider : global::ProtoBuf.IExtensible + { + public EmployeeToCreateBySsoProvider() {} + + private string _Email; + [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"Email", DataFormat = global::ProtoBuf.DataFormat.Default)] + public string Email + { + get { return _Email; } + set { _Email = value; } + } + + private Diadoc.Api.Proto.FullName _FullName = null; + [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"FullName", DataFormat = global::ProtoBuf.DataFormat.Default)] + [global::System.ComponentModel.DefaultValue(null)] + public Diadoc.Api.Proto.FullName FullName + { + get { return _FullName; } + set { _FullName = value; } + } + private string _ProviderId; + [global::ProtoBuf.ProtoMember(3, IsRequired = true, Name=@"ProviderId", DataFormat = global::ProtoBuf.DataFormat.Default)] + public string ProviderId + { + get { return _ProviderId; } + set { _ProviderId = value; } + } + private global::ProtoBuf.IExtension extensionObject; + global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) + { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); } + } + } \ No newline at end of file