Moonborn — API · admin
Send weekly digest email for a user (admin/cron entrypoint, Tier-1 Turn 235)
Per-user digest: scans unread notifications (max controlled by `notifications.digest.max_unread_items` config), sends summary email via Resend (when wired). Use case fail-soft: 0 unread → sent=false (no email dispatched). Advisory lock 1009 — duplicate emails when two pods tick prevented. Cron cadence: daily/weekly, single-user Tier-1 skeleton (multi-user fan-out Tier-2).
POST/v1/admin/notifications/send-digestscope · Bearer (API key or session JWT)
Query parameters
| Field | Type | Description |
|---|---|---|
| userIdreq | string | |
| emailAddressreq | string |
Responses
200Digest sent (or 0-unread skip)
400Missing userId/emailAddress
Body
| Field | Type | Description |
|---|---|---|
| errorreq | object | |
| error.codereq | string | |
| error.messagereq | string |
403Forbidden — platform admin only
Body
| Field | Type | Description |
|---|---|---|
| errorreq | object | |
| error.codereq | string | |
| error.messagereq | string |
503Digest cron entry point not wired
Body
| Field | Type | Description |
|---|---|---|
| errorreq | object | |
| error.codereq | string | |
| error.messagereq | string |
Examples
cURL
curl -X POST https://api.moonborn.co/v1/admin/notifications/send-digest \ -H "Authorization: Bearer $MOONBORN_API_KEY"
TypeScript
import Moonborn from '@moonborn/sdk';
const client = new Moonborn({ apiKey: process.env.MOONBORN_API_KEY });
const result = await client.admin.adminSendUserDigest();Python
import os from moonborn import Moonborn client = Moonborn(api_key=os.environ["MOONBORN_API_KEY"]) result = client.admin.admin_send_user_digest()