From d9f2927b7661fa91d2e6ec8733f1b02755a8db2f Mon Sep 17 00:00:00 2001 From: Roshan Jonnalagadda Date: Tue, 4 Aug 2026 11:27:51 +1000 Subject: [PATCH] docs: document durable domain deletion Sync the Management API snapshot and generated collection with Sendmux 34e171b9, and publish the user-facing recovery fix. --- changelog.mdx | 9 +++++ openapi-app.json | 31 +++++++++++++++- ...sendmux-management.postman_collection.json | 36 ++++++++++++++++++- 3 files changed, 74 insertions(+), 2 deletions(-) diff --git a/changelog.mdx b/changelog.mdx index b2086a6..a57a474 100644 --- a/changelog.mdx +++ b/changelog.mdx @@ -4,6 +4,15 @@ description: "New features, improvements, and fixes across the Sendmux platform. rss: true --- + + ## Bug fixes + +Temporary interruptions no longer lose domain deletion work. Sendmux retries it, and repeating the delete request reuses the same operation. + +Domain-wide filter updates are now blocked while deletion is in progress, preventing an older request from restoring rules after cleanup. If deletion needs more time, the Management API returns a clear retry response. + + + ## Bug fixes diff --git a/openapi-app.json b/openapi-app.json index ab64b66..72dbd9e 100644 --- a/openapi-app.json +++ b/openapi-app.json @@ -8457,6 +8457,35 @@ } }, "description": "Domain still has active mailboxes (error code `conflict`)." + }, + "500": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiError" + } + } + }, + "description": "Unexpected server error." + }, + "503": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiError" + } + } + }, + "description": "Deletion is temporarily unavailable; retry after the indicated delay.", + "headers": { + "Retry-After": { + "description": "Seconds to wait before retrying.", + "schema": { + "example": 30, + "type": "integer" + } + } + } } }, "security": [ @@ -8848,7 +8877,7 @@ } } }, - "description": "`If-Match` ETag does not match the server's current version, or the domain is send-only." + "description": "`If-Match` ETag does not match the server's current version, the domain is send-only, or deletion is in progress." }, "413": { "content": { diff --git a/postman/sendmux-management.postman_collection.json b/postman/sendmux-management.postman_collection.json index fea4f70..f440647 100644 --- a/postman/sendmux-management.postman_collection.json +++ b/postman/sendmux-management.postman_collection.json @@ -581,6 +581,40 @@ ], "name": "Domain still has active mailboxes (error code `conflict`).", "status": "Conflict" + }, + { + "_postman_previewlanguage": "json", + "body": "", + "code": 500, + "cookie": [], + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "name": "Unexpected server error.", + "status": "Internal Server Error" + }, + { + "_postman_previewlanguage": "json", + "body": "", + "code": 503, + "cookie": [], + "header": [ + { + "description": "Seconds to wait before retrying.", + "disabled": true, + "key": "Retry-After", + "value": "30" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "name": "Deletion is temporarily unavailable; retry after the indicated delay.", + "status": "Service Unavailable" } ] }, @@ -1293,7 +1327,7 @@ "value": "application/json" } ], - "name": "`If-Match` ETag does not match the server's current version, or the domain is send-only.", + "name": "`If-Match` ETag does not match the server's current version, the domain is send-only, or deletion is in progress.", "status": "Conflict" }, {