Đặc tả Kỹ thuật API

API Thông báo Email
EMAIL
Phiên bản1.0
Base URLhttps://api.example.com/v1
Hệ thốngHệ thống Xác thực
ModuleEMAIL - Thông báo Email
Ngày tạo2026-08-05
Tác giảNam Nguyen
SRS liên quanSRS Thông báo Email

Mục lục

1. Tổng quan

1.1 Yêu cầu được giải quyết

Yêu cầu SRSEndpoint API
FR-001 Gửi Email Xác minhRabbitMQ: verification.email
FR-002 Gửi lại Email Xác minhRabbitMQ: verification.email
FR-003 Theo dõi Giao EmailPOST /api/webhooks/email/delivered
FR-004 Ghi log Sự kiện EmailRabbitMQ: log.events

1.2 Nguyên tắc API

1.3 Xác thực

Các endpoint webhook yêu cầu xác thực chữ ký.

X-Webhook-Signature: HMAC-SHA256 của request body

2. Định dạng Phản hồi

2.1 Phản hồi Thành công

{
  "success": true,
  "data": { ... },
  "meta": {
    "requestId": "req-abc-123",
    "timestamp": "2026-07-24T10:30:00Z"
  }
}

2.2 Phản hồi Lỗi

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Dữ liệu đầu vào không hợp lệ",
    "details": [
      { "field": "email", "message": "Định dạng email không hợp lệ" }
    ]
  }
}

3. Mã lỗi

HTTP StatusMã lỗiMô tả
400EMAIL_001Địa chỉ email không hợp lệ
400EMAIL_002Không tìm thấy mẫu email
502EMAIL_003Lỗi nhà cung cấp - giao email thất bại
429EMAIL_004Vượt quá giới hạn tốc độ
401EMAIL_005Chữ ký webhook không hợp lệ

4. Giới hạn Tốc độ

Loại EndpointYêu cầu/phútBurst
Endpoint webhook10050
Gửi email (mỗi người dùng)52

5. Endpoints

5.1 Endpoint Webhook

POST /api/webhooks/email/delivered FR-003

Nhận callback trạng thái giao email từ nhà cung cấp email.

Yêu cầu:

{
  "verification_id": "string (bắt buộc)",
  "status": "delivered | failed (bắt buộc)",
  "provider_message_id": "string (bắt buộc)",
  "error_message": "string | null (tùy chọn)"
}

Phản hồi 200:

{
  "success": true,
  "message": "Webhook đã được xử lý"
}

Phản hồi 400:

{
  "success": false,
  "error": "Payload webhook không hợp lệ"
}

6. Phân trang

Tất cả endpoint danh sách hỗ trợ phân trang offset.

GET /email/logs?page=2&limit=20

7. Sự kiện Webhook

7.1 Hàng đợi RabbitMQ

verification.email

Hàng đợi cho yêu cầu xác minh email từ module AUTH.

Sự kiệnNgười gửiMô tả
verification.email.requestedAUTHNgười dùng yêu cầu xác minh email
verification.email.resentAUTHNgười dùng gửi lại xác minh email

Định dạng Tin nhắn

{
  "user_id": "uuid",
  "email": "string",
  "channel": "email",
  "otp": "string",
  "verification_id": "string"
}

log.events

Hàng đợi để gửi sự kiện giao email đến module Logger.

Sự kiệnNgười gửiMô tả
email.event.loggedEMAILSự kiện giao email (đã gửi, đã giao, thất bại)

8. Nhật ký Thay đổi

NgàyPhiên bảnThay đổi
2026-07-241.0.0Phát hành ban đầu