Xác thực API
XCaphe API sử dụng JWT Bearer token. Token được cấp sau khi đăng nhập thành công.
Base URL:
https://api.xcaphe.vnĐăng nhập (Staff/Manager)
POST /auth/login
Content-Type: application/jsonRequest body:
{
"phone": "0912345678",
"pin": "1234",
"orgSlug": "the-brew"
}Response 200 OK:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"staff": {
"id": "uuid",
"name": "Nguyễn Văn A",
"role": "manager",
"branchId": "uuid-or-null"
}
}Response 401 Unauthorized:
{ "error": "Số điện thoại hoặc PIN không đúng" }Sử dụng token
Thêm token vào header Authorization của mọi request:
GET /orders
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Token hết hạn
Token staff có hiệu lực 30 ngày. Khi hết hạn, API trả về 401. Client cần redirect người dùng về trang đăng nhập.
⚠️
Không lưu token trong localStorage nếu bạn xây dựng ứng dụng nhúng public. Dùng httpOnly cookie hoặc secure storage.
Lấy thông tin người dùng hiện tại
GET /auth/me
Authorization: Bearer <token>Response:
{
"id": "uuid",
"name": "Nguyễn Văn A",
"role": "manager",
"orgId": "uuid",
"branchId": "uuid"
}Headers bổ sung
| Header | Mô tả |
|---|---|
X-Org-ID | ID tổ chức (tùy chọn, override từ JWT) |
X-Branch-ID | ID chi nhánh (tùy chọn) |
X-Session-ID | Session ID của khách hàng (dùng cho customer API) |
Rate limiting
API có rate limit 100 requests/phút per IP. Nếu vượt quá, API trả về:
HTTP 429 Too Many Requests
Retry-After: 30