# Mã trạng thái

> Các mã trạng thái HTTP do Fleetwork API trả về.

Source: https://docs.fleetwork.vn/vi/introduction/status-codes

## Mã thành công

| Mã | Ý nghĩa | Mô tả |
|---|---|---|
| `200` | OK | Request thành công |
| `201` | Created | Tài nguyên đã được tạo |
| `204` | No Content | Request thành công, không có body trả về |

## Mã lỗi phía client

| Mã | Ý nghĩa | Mô tả |
|---|---|---|
| `400` | Bad Request | Tham số không hợp lệ hoặc JSON sai định dạng |
| `401` | Unauthorized | Thiếu/sai API Key hoặc không có quyền truy cập module |
| `403` | Forbidden | Không đủ quyền |
| `404` | Not Found | Tài nguyên không tồn tại |
| `409` | Conflict | Xung đột trạng thái tài nguyên (ví dụ: trùng lặp) |
| `422` | Unprocessable | Xác thực dữ liệu thất bại |
| `429` | Too Many Requests | Vượt giới hạn tốc độ hoặc hạn mức |

## Mã lỗi phía server

| Mã | Ý nghĩa | Mô tả |
|---|---|---|
| `500` | Internal Error | Có lỗi xảy ra ở phía chúng tôi |
| `502` | Bad Gateway | Lỗi dịch vụ phía trên |
| `503` | Service Unavailable | Tạm ngừng hoạt động |

## Định dạng Response lỗi

Mọi lỗi đều trả về cùng một cấu trúc JSON nhất quán:

```json
{
  "code": "BAD_REQUEST",
  "message": "The field 'name' is required.",
  "data": null
}
```

### Ví dụ 401 Unauthorized

```json
{
  "error": "unauthorized",
  "message": "No access to module: Driving Alert",
  "status": "Invalid - No Active Modules",
  "errors": ["API key does not have access to module: Driving Alert"],
  "warnings": []
}
```

### 429 Vượt Giới hạn tốc độ

```json
{
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded: 10 requests per second",
  "limit": 10,
  "reset_at": "2026-04-15T09:31:00Z",
  "retry_after": "2026-04-15T09:31:00Z"
}
```

### 429 Vượt Hạn mức

```json
{
  "error": "quota_exceeded",
  "message": "Monthly quota exceeded",
  "limit": 100000,
  "used": 100001
}
```
