catch-all inbox — index, archive, blocklist, send
| received | from | subject |
|---|
| sent | to | subject |
|---|
| address | reason | blocked at |
|---|
CF catch-all mailbox — inbound/outbound email index, archive, blocklist, and outbound send.
Base URL: https://mail.lishuyu.app — paths below are relative to it.
| method | path | auth | purpose |
|---|---|---|---|
POST | /api/ingest | ingest token or PAT/JWT (write) | record an email (worker ingest); archives raw MIME to OSS |
POST | /api/notify | ingest token or PAT/JWT (write) | push a notification to the owner via the bus |
GET | /api/emails | PAT/JWT (read) | list/search the index — filters: q, direction, from_addr, blocked, limit, offset |
GET | /api/emails/{id} | PAT/JWT (read) | one email + a presigned .eml download_url |
GET | /api/sender/{address}/history | ingest token or PAT/JWT (read) | recent emails from a sender + whether it is blocked |
POST | /api/blocklist | ingest token or PAT/JWT (write) | block a sender (archived but silent) |
GET | /api/blocklist | PAT/JWT (read) | list blocked senders |
DELETE | /api/blocklist/{address} | PAT/JWT (write) | unblock a sender |
POST | /api/send | PAT/JWT (write) | send an email via emailservice; archives a copy |
This is a personal inbox: reads/writes need the owner's phm_jwt cookie (sign in at auth.lishuyu.app) or an admin Authorization: Bearer <PAT>. The catch-all worker writes via a dedicated MAILBOX_INGEST_TOKEN. All timestamps are UTC.
Other platform services: GET https://registry.lishuyu.app/llm.txt (public how-to), or authenticate and query GET https://registry.lishuyu.app/api/services/discover/{capability} to find a capability, then call that service directly.