API Docs

REST + WebSocket API cho tempmail. Base URL được nhúng vào frontend lúc build.

Base URLhttps://temp.destiny-mmo.com

publicPublic API

GET/api/domains

Liệt kê domain đã xác minh, hiển thị với IP của bạn (IP-gated).

Response

[
  { "domain": "mail.example.com", "verified": true, "addedAt": "...", "mxVerifiedAt": "..." }
]
GET/api/domains?all=1

Liệt kê tất cả domain (verified + pending). Công khai.

Response

[
  { "domain": "mail.example.com", "verified": false, "allowedIPs": [] }
]
GET/api/domains/{domain}

Chi tiết một domain.

Response

{ "domain": "mail.example.com", "verified": true }
POST/api/domains

Thêm domain mới (chưa xác minh).

Request body

{ "domain": "mail.example.com" }

Response

{ "status": "added" }
POST/api/domains/{domain}/verify

Kiểm tra MX của domain trỏ tới server. Trả verified true/false.

Response

{ "verified": true }
POST/api/inboxes

Tạo inbox. localpart để trống = ngẫu nhiên. Domain phải verified + hiển thị với IP của bạn.

Request body

{ "localpart": "john", "domain": "mail.example.com" }

Response

{ "address": "john@mail.example.com" }
GET/api/inboxes/{address}/emails

Liệt kê email trong inbox (tối đa 50, không kèm body/attachments).

Response

[
  { "id": "abc", "inboxAddress": "john@...", "from": "...", "to": "...", "subject": "...", "receivedAt": "..." }
]
GET/api/emails/{id}

Lấy toàn bộ nội dung một email (text, html, attachments base64).

Response

{ "id": "...", "text": "...", "html": "...", "attachments": [{ "filename": "...", "contentType": "...", "encoding": "base64", "data": "..." }] }
DELETE/api/inboxes/{address}

Xoá toàn bộ email trong inbox.

Response

{ "status": "cleared" }
WS/api/ws/{address}

WebSocket realtime — server đẩy TextMessage (JSON email) khi inbox nhận được mail mới. Ping mỗi 30s.

Response

wss://temp.destiny-mmo.com/api/ws/{address}
→ server push: { "id": "...", "subject": "...", ... }

admin_panel_settingsAdmin API

Yêu cầu cookie session từ POST /admin/login. Tất cả endpoint dưới đây đều cần xác thực.

POST/admin/login

Đăng nhập admin. Trả cookie session (HttpOnly, 24h).

Request body

{ "password": "..." }

Response

{ "status": "ok" }
POST/admin/logout

Đăng xuất, xoá cookie session.

Response

{ "status": "ok" }
GET/admin/domains🔒 admin

Liệt kê tất cả domain (yêu cầu session admin).

Response

[ { "domain": "...", "verified": true, "allowedIPs": ["1.2.3.4"] } ]
POST/admin/domains🔒 admin

Thêm domain (yêu cầu session admin).

Request body

{ "domain": "mail.example.com" }

Response

{ "status": "added" }
POST/admin/domains/{domain}/verify🔒 admin

Xác minh MX (admin, ép buộc).

Response

{ "verified": true }
PUT/admin/domains/{domain}/ips🔒 admin

Đặt danh sách IP được phép dùng domain (riêng tư). Để trống = công khai.

Request body

{ "ips": ["1.2.3.4", "5.6.7.8"] }

Response

{ "status": "updated", "ips": ["1.2.3.4"] }
DELETE/admin/domains/{domain}🔒 admin

Xoá domain.

Response

{ "status": "deleted" }
GET/admin/inboxes🔒 admin

Liệt kê toàn bộ inbox.

Response

[ { "address": "...", "domain": "...", "createdAt": "...", "expiresAt": "..." } ]
GET/admin/inboxes/{address}/emails🔒 admin

Liệt kê email trong inbox (admin, đầy đủ).

Response

[ { "id": "...", "subject": "...", ... } ]
DELETE/admin/inboxes/{address}🔒 admin

Xoá inbox và toàn bộ email.

Response

{ "status": "deleted" }

Lưu ý