diff --git a/NBXplorer.Client/ExplorerClient.cs b/NBXplorer.Client/ExplorerClient.cs index de6bd02f..d319d269 100644 --- a/NBXplorer.Client/ExplorerClient.cs +++ b/NBXplorer.Client/ExplorerClient.cs @@ -549,7 +549,11 @@ public GenerateWalletResponse GenerateWallet(GenerateWalletRequest request = nul public Task CreateGroupAsync(CancellationToken cancellationToken = default) { - return SendAsync(HttpMethod.Post, null, $"v1/groups", cancellationToken); + return CreateGroupAsync(null, cancellationToken); + } + public Task CreateGroupAsync(CreateGroupRequest request, CancellationToken cancellationToken = default) + { + return SendAsync(HttpMethod.Post, request, $"v1/groups", cancellationToken); } public Task GetGroupAsync(string groupId, CancellationToken cancellationToken = default) { diff --git a/NBXplorer.Client/Models/GroupInformation.cs b/NBXplorer.Client/Models/GroupInformation.cs index 136b5ee5..957ec330 100644 --- a/NBXplorer.Client/Models/GroupInformation.cs +++ b/NBXplorer.Client/Models/GroupInformation.cs @@ -1,10 +1,12 @@ using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; namespace NBXplorer.Models { + + public class CreateGroupRequest + { + public string GroupId { get; set; } + } public class GroupChild { [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] diff --git a/NBXplorer.Tests/UnitTest1.Groups.cs b/NBXplorer.Tests/UnitTest1.Groups.cs index 4b02dc93..ca6af188 100644 --- a/NBXplorer.Tests/UnitTest1.Groups.cs +++ b/NBXplorer.Tests/UnitTest1.Groups.cs @@ -15,7 +15,11 @@ public partial class UnitTest1 public async Task CanCRUDGroups() { using var tester = ServerTester.Create(); + var guid = Guid.NewGuid().ToString(); + var g222 = await tester.Client.CreateGroupAsync(new CreateGroupRequest() { GroupId = guid }); + Assert.Equal(g222.GroupId, guid); var g1 = await tester.Client.CreateGroupAsync(); + void AssertG1Empty() { Assert.NotNull(g1.GroupId); diff --git a/NBXplorer/Controllers/GroupsController.cs b/NBXplorer/Controllers/GroupsController.cs index ded1441d..9e03dd7c 100644 --- a/NBXplorer/Controllers/GroupsController.cs +++ b/NBXplorer/Controllers/GroupsController.cs @@ -30,9 +30,9 @@ public GroupsController( public NBXplorerNetworkProvider NetworkProvider { get; } [HttpPost(CommonRoutes.BaseGroupEndpoint)] - public async Task CreateGroup() + public async Task CreateGroup([FromBody] CreateGroupRequest request) { - var group = GroupTrackedSource.Generate(); + var group = string.IsNullOrEmpty(request?.GroupId)? GroupTrackedSource.Generate(): new GroupTrackedSource(request.GroupId); await using var conn = await ConnectionFactory.CreateConnection(); await conn.ExecuteAsync(Repository.WalletInsertQuery, Repository.GetWalletKey(group)); return base.Ok(ToGroupInfo(group)); diff --git a/docs/API.md b/docs/API.md index 970a326b..3bb4863d 100644 --- a/docs/API.md +++ b/docs/API.md @@ -1284,7 +1284,12 @@ Create a new empty group. `HTTP POST v1/groups` -No body required +Optional request body: +```json +{ + "groupId": "yourGroupId" +} +``` Response