Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ description: "New features, improvements, and fixes across the Sendmux platform.
rss: true
---

<Update label="4 August 2026" tags={["Bug fixes"]} rss={{ title: "Domain deletion now recovers safely from interruptions" }}>
## 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.

</Update>

<Update label="31 July 2026" tags={["Bug fixes"]} rss={{ title: "Your new team setup now recovers from interrupted Amazon SES requests" }}>
## Bug fixes

Expand Down
31 changes: 30 additions & 1 deletion openapi-app.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": [
Expand Down Expand Up @@ -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": {
Expand Down
36 changes: 35 additions & 1 deletion postman/sendmux-management.postman_collection.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
]
},
Expand Down Expand Up @@ -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"
},
{
Expand Down