diff --git a/src/ApiGenerator/Configuration/CodeConfiguration.cs b/src/ApiGenerator/Configuration/CodeConfiguration.cs index 0c1a319d8ed..982af949aa7 100644 --- a/src/ApiGenerator/Configuration/CodeConfiguration.cs +++ b/src/ApiGenerator/Configuration/CodeConfiguration.cs @@ -66,7 +66,6 @@ public static class CodeConfiguration "cluster.delete_component_template.json", "cluster.get_component_template.json", "cluster.put_component_template.json", - "security.get_builtin_privileges.json", "transform.delete_transform.json", "transform.get_transform.json", "transform.get_transform_stats.json", diff --git a/src/Nest/Descriptors.Security.cs b/src/Nest/Descriptors.Security.cs index e2bd7b89915..ae7c1531dfb 100644 --- a/src/Nest/Descriptors.Security.cs +++ b/src/Nest/Descriptors.Security.cs @@ -274,6 +274,14 @@ public partial class GetApiKeyDescriptor : RequestDescriptorBase Qs("username", username); } + ///Descriptor for GetBuiltinPrivileges https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + public partial class GetBuiltinPrivilegesDescriptor : RequestDescriptorBase, IGetBuiltinPrivilegesRequest + { + internal override ApiUrls ApiUrls => ApiUrlsLookups.SecurityGetBuiltinPrivileges; + // values part of the url path + // Request parameters + } + ///Descriptor for GetPrivileges https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-privileges.html public partial class GetPrivilegesDescriptor : RequestDescriptorBase, IGetPrivilegesRequest { diff --git a/src/Nest/ElasticClient.Security.cs b/src/Nest/ElasticClient.Security.cs index 543598bf5e3..18c6fb508a8 100644 --- a/src/Nest/ElasticClient.Security.cs +++ b/src/Nest/ElasticClient.Security.cs @@ -325,6 +325,30 @@ internal SecurityNamespace(ElasticClient client): base(client) /// public Task GetApiKeyAsync(IGetApiKeyRequest request, CancellationToken ct = default) => DoRequestAsync(request, request.RequestParameters, ct); /// + /// GET request to the security.get_builtin_privileges API, read more about this API online: + /// + /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + /// + public GetBuiltinPrivilegesResponse GetBuiltinPrivileges(Func selector = null) => GetBuiltinPrivileges(selector.InvokeOrDefault(new GetBuiltinPrivilegesDescriptor())); + /// + /// GET request to the security.get_builtin_privileges API, read more about this API online: + /// + /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + /// + public Task GetBuiltinPrivilegesAsync(Func selector = null, CancellationToken ct = default) => GetBuiltinPrivilegesAsync(selector.InvokeOrDefault(new GetBuiltinPrivilegesDescriptor()), ct); + /// + /// GET request to the security.get_builtin_privileges API, read more about this API online: + /// + /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + /// + public GetBuiltinPrivilegesResponse GetBuiltinPrivileges(IGetBuiltinPrivilegesRequest request) => DoRequest(request, request.RequestParameters); + /// + /// GET request to the security.get_builtin_privileges API, read more about this API online: + /// + /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + /// + public Task GetBuiltinPrivilegesAsync(IGetBuiltinPrivilegesRequest request, CancellationToken ct = default) => DoRequestAsync(request, request.RequestParameters, ct); + /// /// GET request to the security.get_privileges API, read more about this API online: /// /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-privileges.html diff --git a/src/Nest/Requests.Security.cs b/src/Nest/Requests.Security.cs index a3db7b0ee38..56afc1a5ccb 100644 --- a/src/Nest/Requests.Security.cs +++ b/src/Nest/Requests.Security.cs @@ -490,6 +490,20 @@ public string Username } } + [InterfaceDataContract] + public partial interface IGetBuiltinPrivilegesRequest : IRequest + { + } + + ///Request for GetBuiltinPrivileges https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + public partial class GetBuiltinPrivilegesRequest : PlainRequestBase, IGetBuiltinPrivilegesRequest + { + protected IGetBuiltinPrivilegesRequest Self => this; + internal override ApiUrls ApiUrls => ApiUrlsLookups.SecurityGetBuiltinPrivileges; + // values part of the url path + // Request parameters + } + [InterfaceDataContract] public partial interface IGetPrivilegesRequest : IRequest { diff --git a/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesRequest.cs b/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesRequest.cs new file mode 100644 index 00000000000..5e0242151ea --- /dev/null +++ b/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesRequest.cs @@ -0,0 +1,9 @@ +namespace Nest +{ + [MapsApi("security.get_builtin_privileges.json")] + public partial interface IGetBuiltinPrivilegesRequest { } + + public partial class GetBuiltinPrivilegesRequest { } + + public partial class GetBuiltinPrivilegesDescriptor { } +} diff --git a/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesResponse.cs b/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesResponse.cs new file mode 100644 index 00000000000..efda62f35ad --- /dev/null +++ b/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesResponse.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using System.Runtime.Serialization; +using Elasticsearch.Net; +using Elasticsearch.Net.Utf8Json; + +namespace Nest +{ + [DataContract] + public class GetBuiltinPrivilegesResponse : ResponseBase + { + [DataMember(Name = "cluster")] + public IReadOnlyCollection Cluster { get; internal set; } = EmptyReadOnly.Collection; + + [DataMember(Name = "index")] + public IReadOnlyCollection Index { get; internal set; } = EmptyReadOnly.Collection; + } +} diff --git a/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs new file mode 100644 index 00000000000..4141c32fa1a --- /dev/null +++ b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs @@ -0,0 +1,42 @@ +using System; +using Elastic.Xunit.XunitPlumbing; +using Elasticsearch.Net; +using Nest; +using Tests.Core.Extensions; +using Tests.Core.ManagedElasticsearch.Clusters; +using Tests.Framework.EndpointTests; +using Tests.Framework.EndpointTests.TestState; + +namespace Tests.XPack.Security.GetBuiltinPrivileges +{ + [SkipVersion("<7.7.0", "Introduced in 7.7.0")] + public class GetBuiltinPrivilegesApiTests + : ApiIntegrationTestBase + { + public GetBuiltinPrivilegesApiTests(XPackCluster cluster, EndpointUsage usage) : base(cluster, usage) { } + + protected override bool ExpectIsValid => true; + protected override int ExpectStatusCode => 200; + + protected override Func Fluent => d => d; + protected override HttpMethod HttpMethod => HttpMethod.GET; + + protected override GetBuiltinPrivilegesRequest Initializer => new GetBuiltinPrivilegesRequest(); + + protected override bool SupportsDeserialization => false; + + protected override string UrlPath => $"/_security/privilege/_builtin"; + + protected override LazyResponses ClientUsage() => Calls( + (client, f) => client.Security.GetBuiltinPrivileges(f), + (client, f) => client.Security.GetBuiltinPrivilegesAsync(f), + (client, r) => client.Security.GetBuiltinPrivileges(r), + (client, r) => client.Security.GetBuiltinPrivilegesAsync(r) + ); + + protected override GetBuiltinPrivilegesDescriptor NewDescriptor() => new GetBuiltinPrivilegesDescriptor(); + + protected override void ExpectResponse(GetBuiltinPrivilegesResponse response) => response.ShouldBeValid(); + } +} diff --git a/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesUrlTests.cs b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesUrlTests.cs new file mode 100644 index 00000000000..e2e2a074f49 --- /dev/null +++ b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesUrlTests.cs @@ -0,0 +1,18 @@ +using System.Threading.Tasks; +using Elastic.Xunit.XunitPlumbing; +using Nest; +using Tests.Framework.EndpointTests; +using static Tests.Framework.EndpointTests.UrlTester; + +namespace Tests.XPack.Security.GetBuiltinPrivileges +{ + public class GetBuiltinPrivilegesUrlTests : UrlTestsBase + { + [U] public override async Task Urls() => + await GET("/_security/privilege/_builtin") + .Fluent(c => c.Security.GetBuiltinPrivileges()) + .Request(c => c.Security.GetBuiltinPrivileges(new GetBuiltinPrivilegesRequest())) + .FluentAsync(c => c.Security.GetBuiltinPrivilegesAsync()) + .RequestAsync(c => c.Security.GetBuiltinPrivilegesAsync(new GetBuiltinPrivilegesRequest())); + } +}