Skip to main content

Overview

TenantCore periodically checks every mailbox with a provisioned send limit policy against its last 24 hours of send activity, blocking mailboxes that exceed their limit and unblocking ones that have fallen back under it. Every decision is logged. Use the audit log to debug delivery issues or monitor send volume trends. Use the manual trigger to force a check immediately — for example, right after changing a limit — instead of waiting for the next scheduled pass.

Trigger enforcement

Runs an enforcement pass immediately for one tenant, instead of waiting for the scheduled sweep.
This checks the last 24 hours of send activity for every mailbox with a provisioned limit policy, blocks any mailbox that has exceeded its limit, and unblocks any previously-blocked mailbox that has fallen back under it. Every decision is recorded and appears in List enforcement events immediately after this call returns. This talks to Exchange for every managed mailbox in the tenant and can take longer than a typical request on a tenant with many mailboxes. There is no async job handle — the response is only returned once the pass completes. Path parameters Example request
Example response — mailboxes checked
Example response — nothing to enforce
A "skipped" status is not an error — it means there was nothing to enforce yet, either because no mailbox has a provisioned limit policy (see Set enforcement) or the tenant has no TenantCore-managed mailboxes at all. A "partial_success" status means enforcement ran but one or more mailboxes hit an error — check the errors array for which ones and why. Errors

List enforcement events

Returns enforcement events across all your tenants, ordered by most recent first. Supports filtering by tenant and action type, and pagination.
Query parameters
Events themselves can carry more action_taken values than the action filter accepts — see Event fields below. already_blocked, checked, block_failed, and unblock_failed all appear in the data but cannot currently be passed as an action filter value; a filter value outside blocked/unblocked is silently ignored and returns unfiltered results.
Example request — all events
Example request — blocks only for a specific tenant
Example request — paginated
Example response
Response fields

Event fields

action_taken values

Pagination

Use limit and offset to page through large result sets. The total field in the response tells you how many matching events exist across all pages.

Errors