Bỏ qua để đến nội dung

Giới hạn, phản hồi & mã lỗi

API cho đối tácAdd-on
Tính năng này thuộc gói Add-on

Bạn vẫn đọc được đầy đủ hướng dẫn bên dưới. Khi cần bật, nhắn Zalo OA GoHost — CS sẽ giúp trong 1 ngày làm việc.

Mặc định mỗi API key được 60 request trong mỗi phút (cửa sổ cố định theo phút). Vượt giới hạn nhận 429 RATE_LIMIT_001; đợi số giây trong header Retry-After rồi gọi lại. Cần giới hạn cao hơn: liên hệ GoHost.

Mọi phản hồi đã qua bước xác thực đều có ba header (lỗi 401 thì không có):

HeaderNghĩa
X-RateLimit-LimitSố request tối đa mỗi phút của key
X-RateLimit-RemainingSố request còn lại trong phút hiện tại
X-RateLimit-ResetThời điểm (Unix timestamp) chắc chắn được gọi lại — có thể muộn hơn đầu phút kế tiếp

Khi vượt, phản hồi 429 có thêm Retry-After và body gồm limit, remaining, reset_at, retry_after.

Thành công, một bản ghi:

{ "success": true, "data": { "id": "…", "…": "…" } }

Trường id là mã của bản ghi (ví dụ mã đặt phòng), không phải id nội bộ của GoHost.

Thành công, danh sách. Danh sách cơ sở, loại phòng, nguồn đặt, dịch vụ… trả data là mảng, không phân trang. Riêng danh sách đặt phòng và lịch sử gửi webhook có thêm pagination:

{
"success": true,
"data": [ { "id": "…" } ],
"pagination": {
"current_page": 1, "per_page": 10, "total": 42, "last_page": 5,
"from": 1, "to": 10,
"links": { "first": "…", "last": "…", "prev": null, "next": "…" }
}
}

Tham số phân trang: page, per_page (mặc định 10). Riêng Get Bookings: bắt buộc start_date và end_date (lọc theo ngày nhận phòng, tối đa 30 ngày), per_page từ 1 đến 50.

Lỗi (một số lỗi 500 khi tạo / xác nhận / thêm thanh toán / huỷ đơn chỉ có message, không có error_code):

{ "success": false, "message": "…", "error_code": "AUTH_002" }

Lỗi dữ liệu đầu vào trả 422, message là lỗi đầu tiên, errors liệt kê lỗi theo từng trường:

{ "success": false, "message": "…", "errors": { "checkout_date": ["…"] } }

Một số endpoint đọc trả kết quả cache, nên thay đổi trên GoHost có thể chậm vài phút mới thấy qua API:

EndpointCache
Danh sách cơ sở5 phút
Tìm cơ sở còn phòng1 phút
Quốc gia, tỉnh/thành, phường/xã7 ngày
Nguồn đặt, phương thức thanh toán, dịch vụ10 phút
Loại phòng, tìm phòng trống, đặt phòngKhông cache
MãHTTPNghĩaCách xử lý
AUTH_001401Thiếu header Authorization hoặc sai định dạngGửi Bearer {api_key}:{api_secret}
AUTH_002401Sai key/secret, key đã bị tắt hoặc hết hạnKiểm lại secret; liên hệ GoHost nếu key bị tắt
AUTH_006403Key không có scope cần cho endpointXem required_scope, xin GoHost thêm scope
RATE_LIMIT_001429Vượt giới hạn request mỗi phút (hoặc hệ thống đếm giới hạn tạm lỗi — request bị chặn để an toàn)Đợi Retry-After giây
RATE_LIMIT_002, AUTH_005500Lỗi cấu hình phía GoHostBáo GoHost kèm thời điểm gọi
TENANT_001–TENANT_0044xxtenant_id sai, không tồn tại, khác tổ chức, hoặc cơ sở tạm ngưngXem Xác thực & API key
TENANT_006404Không tìm thấy cơ sởKiểm tenant_id
BOOKING_001400 / 500Thao tác đặt phòng thất bạiĐọc message; 500 là lỗi bất ngờ — báo GoHost kèm thời điểm gọi
BOOKING_002400Dịch vụ không hợp lệ khi cập nhật đặt phòng (rooms[].services)Lấy mã dịch vụ từ Get Services List
BOOKING_ROOM_INVALID_STATUS422Trạng thái phòng/đơn không cho phép thao tác (kèm checkin_status, booking_status)Kiểm trạng thái trước khi gọi
BOOKING_CHECKOUT_UNBALANCED422Cơ sở yêu cầu thanh toán đủ trước khi trả phòng; kèm balance (> 0 còn nợ, < 0 trả thừa)Thêm thanh toán rồi trả phòng
INVOICE_NO_PRIMARY_GUEST422Gửi thông tin hoá đơn khi đơn chưa có khách chínhThêm khách chính trước
WEBHOOK_001422URL webhook không hợp lệ hoặc đã đăng kýXem Webhook
WEBHOOK_002422Tên sự kiện không hợp lệDùng sự kiện trong bảng của bài Webhook
WEBHOOK_003422Đã đủ 5 endpoint đang bậtTắt hoặc xoá bớt endpoint
WEBHOOK_004404Không tìm thấy endpointKiểm code của endpoint
WEBHOOK_005409API key đã bị thu hồi, không bật lại endpoint đượcLiên hệ GoHost
—422Dữ liệu đầu vào saiXem errors
Bài này có giúp được bạn không?