Admin API: Mail
Operations on mail in the Odudu admin API, one section each. Every request carries a bearer token; the index says which audience it needs and how a refusal is shaped.
GET /admin/tenants/{tenant}/mail
Requires the "manage-tenant" capability.
The tenant’s outgoing mail, most recent first: queued, retrying, sent, or failed once every attempt is spent, with its attempts and the relay’s last error. Never the body, which carries a sign-in link. The recipient is masked, wherever it appears, unless the caller also holds view-users.
Path parameters
| Name | Type | Required | Details |
|---|---|---|---|
tenant | string | yes | The tenant being administered, addressed by name. |
Query parameters
| Name | Type | Required | Details |
|---|---|---|---|
cursor | string | no | The next value of the previous page, to continue after it. |
limit | integer | no | How many items to return. A value over 200 is treated as 200; the default is 50. Constraints: at least 1. |
status | string | no | Constraints: one of queued, retrying, sent, failed. |
Responses
200 OK
Body: application/json
| Field | Type | Required | Details |
|---|---|---|---|
items | array of object | yes | The entries of this answer. |
items[] | object | yes | |
items[].id | string | yes | The message’s identifier, a UUID. |
items[].to | string | yes | The recipient’s address. Masked, with to_masked true, unless the caller may read subjects. |
items[].to_masked | boolean | yes | True when to is masked because the caller may not read subjects. |
items[].subject | string | yes | The message’s subject line. Its body is never returned, because it carries a link that signs somebody in. |
items[].status | string | yes | Constraints: one of queued, retrying, sent, failed. |
items[].attempts | integer | yes | Constraints: at least 0. |
items[].last_error | string or null | yes | What the last failed attempt answered, or null if none has failed. |
items[].created_at | string | yes | When the message was queued. |
items[].next_attempt_at | string | yes | When the sender will try it next. |
items[].sent_at | string or null | yes | When it was delivered, or null if it has not been. |
next | string | no | An opaque cursor for the next page; absent on the last page. |
401 RFC 9457 problem details
Body: application/problem+json, an RFC 9457 problem document described under problem details.
403 RFC 9457 problem details
Body: application/problem+json, an RFC 9457 problem document described under problem details.
Documentation coverage: 12 of 15 fields described (80%).