# Lấy Ticket

> Lấy chi tiết một ticket hỗ trợ theo mã ticket.

## Endpoint

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

**Method**: `GET`

## Headers

| Header | Bắt buộc | Mô tả |
| --- | --- | --- |
| `Token` | Có | Token của shop (do GHN cấp). Tài khoản của bạn còn phải có quyền ticket — [lấy token](https://developer.ghn.vn/vi/docs/token/get-token.md) |
| `ShopId` | Không | Shop ID (số nguyên). Mặc định là shop chính của tài khoản. Ticket chỉ xem được khi thuộc tài khoản của shop được phân giải — để xem ticket của shop khác shop mặc định, hãy gửi `ShopId` của shop đó |

## Tham số

- **ticket_id** (Int): Mã ticket do [Tạo Ticket](https://developer.ghn.vn/vi/docs/ticket/create.md) trả về. Truyền dưới dạng query parameter. Phải trỏ tới ticket đang tồn tại và thuộc tài khoản của shop đang thao tác, nếu không sẽ trả HTTP 404

## Ví dụ Request

```bash
curl -X GET "https://dev-online-gateway.ghn.vn/shiip/public-api/ticket/detail?ticket_id=1234567" \
  -H "Token: 5c1d8a9e-2f4b-11ed-..." \
  -H "ShopId: 92837"
```

## Response

`data` là object ticket. `conversations` chỉ chứa các phản hồi **công khai** — các ghi chú nội bộ đã được lọc bỏ.

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

```json
{
  "code": 200,
  "message": "Success",
  "data": {
    "id": 1234567,
    "type": "Tư vấn",
    "reason": "Cần tư vấn thời gian giao hàng",
    "order_code": "LADH94",
    "description": "Cần tư vấn thời gian giao hàng",
    "status": "Chờ KH phản hồi",
    "status_id": 2,
    "client_id": "2509893",
    "shop_id": "196560",
    "created_at": "2026-07-15T04:49:47Z",
    "created_by": 45678,
    "updated_at": "2026-07-15T05:10:00Z",
    "conversations": [
      {
        "body": "Bên mình giao trong khung 8h-12h, bạn thấy phù hợp không?",
        "from_email": "cskh@ghn.vn",
        "user_id": 45678,
        "created_at": "2026-07-15T05:10:00Z",
        "updated_at": "2026-07-15T05:10:00Z"
      }
    ],
    "attachments": []
  }
}
```

### 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.id` | Int | Mã ticket |
| `data.type` | String | Loại ticket:<br>`Tư vấn`: yêu cầu tư vấn<br>`Khiếu nại`: khiếu nại<br>`Hối Giao/Lấy/Trả hàng`: hối giao / lấy / trả hàng<br>`Thay đổi thông tin`: thay đổi thông tin đơn |
| `data.reason` | String | Lý do ticket (bỏ qua khi rỗng) |
| `data.order_code` | String | Mã đơn của ticket |
| `data.description` | String | Nội dung ticket |
| `data.status` | String | Nhãn trạng thái tiếng Việt tương ứng `status_id` |
| `data.status_id` | Int | Trạng thái ticket:<br>`1`: `Đang xử lý`<br>`2`: `Chờ KH phản hồi`<br>`3`: `Hoàn thành` |
| `data.client_id` | String | Client ID sở hữu ticket (bỏ qua khi rỗng) |
| `data.shop_id` | String | Shop mà ticket thuộc về (bỏ qua khi rỗng) |
| `data.created_at` | String | Thời điểm tạo (RFC 3339) |
| `data.created_by` | Int | User ID nội bộ được ghi nhận là người yêu cầu |
| `data.updated_at` | String | Thời điểm cập nhật cuối (RFC 3339) |
| `data.conversations` | Object[] | Các phản hồi công khai |
| `data.conversations[].body` | String | Nội dung phản hồi |
| `data.conversations[].from_email` | String | Nhãn email người gửi (bỏ qua khi rỗng) |
| `data.conversations[].user_id` | Int | User ID nội bộ của người viết (bỏ qua khi bằng `0`) |
| `data.conversations[].attachments` | Array | Danh sách file đính kèm (bỏ qua khi rỗng) |
| `data.conversations[].cc_emails` | String[] | Danh sách CC (bỏ qua khi rỗng) |
| `data.conversations[].bcc_emails` | String[] | Danh sách BCC (bỏ qua khi rỗng) |
| `data.conversations[].created_at` | String | Thời điểm tạo phản hồi |
| `data.conversations[].updated_at` | String | Thời điểm cập nhật cuối của phản hồi |
| `data.attachments` | Array | Danh sách file đính kèm ở cấp ticket |

> **NOTE**
> Theo dõi `status_id` để chăm sóc tiếp: hãy phản hồi khi giá trị là `2` (chờ khách phản hồi).

### Lỗi — không tìm thấy ticket (HTTP 404)

_Lấy từ một lần gọi thật trên môi trường Staging (mã ticket không tồn tại)._

```json
{
  "code": 404,
  "message": "Không tìm thấy thông tin ticket này",
  "data": null
}
```

> **NOTE**
> Cùng mã 404 này cũng trả về khi hệ thống hỗ trợ của GHN không trả lời được truy vấn — hãy coi là "không tồn tại **hoặc** tạm thời không khả dụng" và thử lại một lần trước khi kết luận ticket đã mất.

## Bảng mã lỗi

| Điều kiện | HTTP | Ý nghĩa |
| --- | --- | --- |
| Thiếu `ticket_id` | 400 | Thiếu tham số bắt buộc `ticket_id` |
| Không tìm thấy ticket (`Không tìm thấy thông tin ticket này`) | 404 | Ticket không tồn tại, hoặc truy vấn backend tạm thời thất bại |
| Không có quyền (`Bạn không có quyền xem ticket này`) | 403 | Ticket không thuộc tài khoản của shop đang thao tác |
| Không có quyền ticket (`Bạn không có quyền thực hiện thao tác...`) | 403 | Tài khoản của bạn thiếu quyền ticket — liên hệ GHN |
