# Ca lấy hàng

## Endpoint

| Môi trường | URL |
| --- | --- |
| Production | `https://online-gateway.ghn.vn/shiip/public-api/v2/shift/date` |
| Staging | `https://dev-online-gateway.ghn.vn/shiip/public-api/v2/shift/date` |

**Method**: `GET`

## Headers

| Header | Bắt buộc | Mô tả |
| --- | --- | --- |
| `Token` | Có | Token của shop (do GHN cấp) — [lấy token](https://developer.ghn.vn/vi/docs/token/get-token.md) |

## Tham số

API này **không nhận tham số** — không có body, không có query string.

## Ví dụ Request

```bash
curl -X GET https://dev-online-gateway.ghn.vn/shiip/public-api/v2/shift/date \
  -H "Token: 5c1d8a9e-2f4b-11ed-..."
```

## Response

### Thành công (HTTP 200)

_Lấy từ một lần gọi thật trên môi trường Staging._

```json
{
  "code": 200,
  "message": "Success",
  "data": [
    {
      "id": 2,
      "title": "Ca lấy 15-07-2026 (12h00 - 18h00)",
      "from_time": 43200,
      "to_time": 64800
    },
    {
      "id": 3,
      "title": "Ca lấy 16-07-2026 (7h00 - 12h00)",
      "from_time": 111600,
      "to_time": 129600
    },
    {
      "id": 4,
      "title": "Ca lấy 16-07-2026 (12h00 - 18h00)",
      "from_time": 129600,
      "to_time": 151200
    }
  ]
}
```

### Các trường Response

| Trường | Kiểu | Mô tả |
| --- | --- | --- |
| `code` | Int | Mã HTTP (`200` nếu thành công) |
| `message` | String | Thông báo kết quả (`Success`) |
| `data` | Object[] | Danh sách ca lấy hàng khả dụng |
| `data[].id` | Int | Mã ca — truyền vào `pick_shift` khi tạo đơn. Mã được sinh theo ngày, **không phải enum cố định**: luôn gọi lấy danh sách hiện tại và không hard-code |
| `data[].title` | String | Nhãn ca (trả về bằng tiếng Việt): ngày lấy + khung giờ |
| `data[].from_time` | Int | Thời điểm bắt đầu ca, tính bằng giây kể từ 00:00 hôm nay (ví dụ `43200` là 12:00 hôm nay; giá trị lớn hơn `86400` rơi vào các ngày sau) |
| `data[].to_time` | Int | Thời điểm kết thúc ca, cùng đơn vị và mốc với `from_time` |

### Lỗi — thiếu token (HTTP 401)

_Lấy từ một lần gọi thật trên môi trường Staging._

```json
{
  "code": 401,
  "message": "Authorization header is required!",
  "data": null
}
```

## Bảng mã lỗi

| Điều kiện | HTTP | Ý nghĩa |
| --- | --- | --- |
| `Authorization header is required!` | 401 | Thiếu header `Token` |
| IP không được phép | 401 | Tài khoản của bạn có whitelist IP và request đến từ IP khác |
| `SERVER_ERROR_COMMON` | 500 | Lỗi hệ thống |
