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"
},
{