# Định dạng phản hồi chung

Tất cả các phản hồi API MoreLogin đều tuân theo định dạng JSON tiêu chuẩn.

## Cấu trúc phản hồi

```json
{
  "code": 0,
  "msg": null,
  "data": {},
  "requestId": "unique-request-id"
}
```

| trường | Loại | Mô tả |
|  --- | --- | --- |
| `code` | `integer` | Mã kết quả `0` = thành công, các giá trị khác biểu thị lỗi |
| `msg` | `chuỗi | vô giá trị` | Thông báo lỗi. `null` khi thành công |
| `data` | `đối tượng | mảng | vô giá trị` | Tải trọng phản hồi. Cấu trúc thay đổi theo điểm cuối |
| `requestId` | `string` | Mã định danh yêu cầu duy nhất. Bao gồm điều này khi liên hệ với bộ phận hỗ trợ |


## Phản hồi thành công

```json
{
  "code": 0,
  "msg": null,
  "data": {
    "id": 1234567890
  },
  "requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

## Phản hồi lỗi

```json
{
  "code": 99001,
  "msg": "Invalid parameters",
  "data": null,
  "requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

## Phản hồi được phân trang

Danh sách các điểm cuối trả về dữ liệu được phân trang theo định dạng sau:

```json
{
  "code": 0,
  "msg": null,
  "data": {
    "total": 100,
    "current": 1,
    "pages": 10,
    "dataList": [
      { ... },
      { ... }
    ]
  },
  "requestId": "..."
}
```

| trường | Mô tả |
|  --- | --- |
| `total` | Tổng số hồ sơ |
| `current` | Số trang hiện tại |
| `pages` | Tổng số trang |
| `dataList` | Mảng bản ghi cho trang hiện tại |


## Mã trạng thái HTTP

| Trạng thái | Mô tả |
|  --- | --- |
| `200` | Yêu cầu được xử lý thành công (kiểm tra trường `code` để biết kết quả kinh doanh) |
| `401` | Trái phép - mã thông báo truy cập không hợp lệ hoặc hết hạn |
| `403` | Bị cấm - không đủ quyền |
| `429` | Quá nhiều yêu cầu - vượt quá giới hạn tốc độ |
| `500` | Lỗi máy chủ nội bộ - liên hệ với bộ phận hỗ trợ |


> **Mẹo**: Luôn kiểm tra trường `code` trong nội dung phản hồi chứ không chỉ mã trạng thái HTTP. Trạng thái HTTP `200` có `code: 99001` có nghĩa là yêu cầu đã được nhận nhưng xác thực không thành công.