From 1c8274dcb4177163dcf2e537a3b9f5facb13e3a4 Mon Sep 17 00:00:00 2001 From: Alex Shchyhol Date: Tue, 8 Sep 2026 11:05:42 +0200 Subject: [PATCH 1/2] add deleteSubAccount to the sub accounts api --- .../io/mailtrap/api/subaccounts/SubAccounts.java | 13 +++++++++++++ .../mailtrap/api/subaccounts/SubAccountsImpl.java | 9 +++++++++ .../api/subaccounts/SubAccountsImplTest.java | 12 +++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/mailtrap/api/subaccounts/SubAccounts.java b/src/main/java/io/mailtrap/api/subaccounts/SubAccounts.java index 69e16de..4220704 100644 --- a/src/main/java/io/mailtrap/api/subaccounts/SubAccounts.java +++ b/src/main/java/io/mailtrap/api/subaccounts/SubAccounts.java @@ -26,4 +26,17 @@ public interface SubAccounts { */ SubAccount createSubAccount(long organizationId, CreateSubAccountRequest request); + /** + * Delete a sub account from the specified organization. + * Requires sub account management permissions for the organization. + *

+ * Deletion is permanent and removes all sub account data. Deleting the last sub account + * of an organization deletes the organization as well. A repeated call for the same + * sub account fails with 404. Rate limit – 10 requests per minute per organization. + * + * @param organizationId unique organization ID + * @param subAccountId unique sub account ID + */ + void deleteSubAccount(long organizationId, long subAccountId); + } diff --git a/src/main/java/io/mailtrap/api/subaccounts/SubAccountsImpl.java b/src/main/java/io/mailtrap/api/subaccounts/SubAccountsImpl.java index dd64994..d69961f 100644 --- a/src/main/java/io/mailtrap/api/subaccounts/SubAccountsImpl.java +++ b/src/main/java/io/mailtrap/api/subaccounts/SubAccountsImpl.java @@ -34,4 +34,13 @@ public SubAccount createSubAccount(final long organizationId, final CreateSubAcc SubAccount.class ); } + + @Override + public void deleteSubAccount(final long organizationId, final long subAccountId) { + httpClient.delete( + String.format(apiHost + "/api/organizations/%d/sub_accounts/%d", organizationId, subAccountId), + new RequestData(), + Void.class + ); + } } diff --git a/src/test/java/io/mailtrap/api/subaccounts/SubAccountsImplTest.java b/src/test/java/io/mailtrap/api/subaccounts/SubAccountsImplTest.java index 39b685a..ecf759e 100644 --- a/src/test/java/io/mailtrap/api/subaccounts/SubAccountsImplTest.java +++ b/src/test/java/io/mailtrap/api/subaccounts/SubAccountsImplTest.java @@ -14,12 +14,14 @@ import java.util.List; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; class SubAccountsImplTest extends BaseTest { private final long organizationId = 1001L; + private final long subAccountId = 12345L; private SubAccounts api; @@ -30,7 +32,10 @@ public void init() { "GET", null, "api/subaccounts/getSubAccountsResponse.json"), DataMock.build(Constants.GENERAL_HOST + "/api/organizations/" + organizationId + "/sub_accounts", - "POST", "api/subaccounts/createSubAccountRequest.json", "api/subaccounts/createSubAccountResponse.json") + "POST", "api/subaccounts/createSubAccountRequest.json", "api/subaccounts/createSubAccountResponse.json"), + + DataMock.build(Constants.GENERAL_HOST + "/api/organizations/" + organizationId + "/sub_accounts/" + subAccountId, + "DELETE", null, null) )); final MailtrapConfig testConfig = new MailtrapConfig.Builder() @@ -61,4 +66,9 @@ void test_createSubAccount() { assertEquals(12347L, response.getId()); assertEquals("New Team Account", response.getName()); } + + @Test + void test_deleteSubAccount() { + assertDoesNotThrow(() -> api.deleteSubAccount(organizationId, subAccountId)); + } } \ No newline at end of file From 38f96de4948ff26351bb3dfa26c1f97c21f4fe0f Mon Sep 17 00:00:00 2001 From: Alex Shchyhol Date: Tue, 8 Sep 2026 11:05:42 +0200 Subject: [PATCH 2/2] delete the created sub account in the sub accounts example --- .../mailtrap/examples/organizations/SubAccountsExample.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/java/io/mailtrap/examples/organizations/SubAccountsExample.java b/examples/java/io/mailtrap/examples/organizations/SubAccountsExample.java index 9587883..bda7691 100644 --- a/examples/java/io/mailtrap/examples/organizations/SubAccountsExample.java +++ b/examples/java/io/mailtrap/examples/organizations/SubAccountsExample.java @@ -26,5 +26,9 @@ public static void main(String[] args) { final var createdSubAccount = client.organizationsApi().subAccounts() .createSubAccount(ORGANIZATION_ID, createRequest); System.out.println(createdSubAccount); + + // Permanent – removes all sub account data. Deleting the last sub account deletes the organization. + client.organizationsApi().subAccounts().deleteSubAccount(ORGANIZATION_ID, createdSubAccount.getId()); + System.out.println("Sub account " + createdSubAccount.getId() + " deleted"); } } \ No newline at end of file