Thông tin chung

HTTP Status Code

Bởi vì Web Service thiết kế theo phương pháp Restful API dựa trên HTTPS nên các response trả về từ web service đều là HTTP Response, do đó, kèm theo HTTP Status Code. Dưới đây là các status code thường gặp trong HTTP Response của Hubport.

HTTP Status Code khi request thành công

HTTP StatusÝ nghĩa
200OK - Request đã được xử lý thành công. Đây là status code mặc định cho hầu hết request GET để truy xuất dữ liệu.
201Created - Tài nguyên, đối tượng dữ liệu đã được tạo thành công. Đây là status code mặc định cho hầu hết request POST để tạo dữ liệu mới.
204No Content - Tài nguyên của bạn đã được xóa thành công. Đây là status code mặc định cho hầu hết request DELETE để xóa dữ liệu đã có.

HTTP Status Code khi request thất bại / có lỗi

HTTP StatusÝ nghĩa
400Bad Request - Request không hợp lệ hoặc bị lỗi khi trao đổi dữ liệu với trình duyệt.
401Unauthorized - Access Token của bạn hết hạn hoặc không hợp lệ.
402Payment Required - Tính năng yêu cầu gói dịch vụ cao hơn gói hiện tại của cửa hàng.
403Forbidden - Bạn không được quyền truy cập tài nguyên này (thiếu quyền, cửa hàng đang bị khoá...).
404Not Found - Tài nguyên bạn muốn truy xuất không tồn tại hoặc đã bị xóa.
405Method Not Allowed - Đường dẫn bạn truy cập không tồn tại.
422Unprocessable Entity - Dữ liệu của bạn gửi lên không hợp lệ hoặc bị lỗi.
429Too Many Requests - Bạn gửi request quá nhanh và đã bị giới hạn truy cập. Xem thêm phần Rate Limit.
500Internal Server Error - Hệ thống Server đang có vấn đề hoặc không truy cập được.
503Service Unavailable - Hệ thống tạm thời không truy cập được, có thể là chúng tôi đang bảo trì hoăc bị sự cố. Hãy vui lòng thử lại sau.

Định dạng response lỗi

Khi có lỗi, response body là JSON với key error chứa danh sách mã lỗi. Một số lỗi có thêm key detail mô tả chi tiết:

{
  "error": ["error_company_locked"],
  "detail": { "reason": "suspended", "state": "suspended" }
}

Riêng lỗi Rate Limit (429) trả về body là mảng mã lỗi: ["error_rate_limit_exceed"].

Một số lỗi 4xx thường gặp khi gửi request

Phần lớn bạn bị các lỗi này là do khi gửi yêu cầu lên bị thiếu thông tin, các thông tin này đều được mô tả trong phần hướng dẫn của từng web service. Do đó, bạn cần đối chiếu kỹ đặc tả nếu phát hiện bị lỗi khi gửi yêu cầu, và các yêu cầu này thường là phương thức POST hoặc PUT để tạo hoặc cập nhật thông tin nào đó.

Lỗi xác thực bằng User Login Token (JWT)

HTTP StatusError CodeÝ nghĩa
401error_jwt_is_requiredThiếu JWT trong request (API yêu cầu xác thực).
401error_jwt_hash_not_foundJWT gửi lên không tồn tại hoặc sai định dạng (lưu ý: không thêm tiền tố Bearer).
400error_jwt_blacklistedJWT đã bị vô hiệu: đã đăng xuất, đã đổi sang công ty khác hoặc phiên đã bị thu hồi. Cần đăng nhập lại.
400error_jwt_expiredJWT đã hết hạn sử dụng. Cần đăng nhập lại.
401error_tenant_domain_not_foundGọi API qua một tên miền không thuộc cửa hàng nào.
401error_tenant_domain_not_match_jwtGọi API qua tên miền riêng của một cửa hàng nhưng JWT thuộc cửa hàng khác.

Lỗi xác thực bằng API Key

HTTP StatusError CodeÝ nghĩa
400error_api_invalidHeader Authorization không đúng định dạng apikey:apisecret.
400error_apikey_invalidAPI Key / API Secret không đúng.
400error_companyapp_data_invalid_or_not_enableAPI Key không ở trạng thái hoạt động (ví dụ đã bị khoá).
400error_company_plan_not_allow_companyappGói dịch vụ của cửa hàng không hỗ trợ kết nối bằng API Key.
400error_company_not_found_from_companyappKhông tìm thấy cửa hàng sở hữu API Key.

Lỗi phân quyền, gói dịch vụ và trạng thái cửa hàng

HTTP StatusError CodeÝ nghĩa
403error_role_not_availableNhân viên không có quyền thực hiện thao tác. detail.role là mã quyền còn thiếu.
403error_company_lockedCửa hàng đang bị khoá (bị tạm ngưng hoặc đã xoá). Xem chi tiết bên dưới.
403error_module_disabledModule chứa API này chưa được bật cho cửa hàng (ví dụ cửa hàng không dùng module Sa bàn kho 3D, Phòng khám, Đào tạo...). detail.module là mã module, detail.module_id là mã số. Liên hệ Hubport nếu cần bật. Xem chi tiết bên dưới.
403error_impersonation_readonlyPhiên đăng nhập hiện tại là phiên hỗ trợ chỉ đọc của nhân viên Hubport, không được phép tạo / sửa / xoá dữ liệu.
402error_feature_requires_planTính năng chưa có trong gói dịch vụ hiện tại của cửa hàng. detail.feature là mã tính năng cần nâng gói (ví dụ connector.marketplace - đồng bộ sàn TMĐT, connector.social - kết nối mạng xã hội / inbox, custom_domain - tên miền riêng cho website).
422error_quota_limit_exceedĐã vượt quá số lượng tối đa cho phép của gói dịch vụ (ví dụ số cửa hàng, kho, API Key, dung lượng file...).
429error_rate_limit_exceedGửi request quá nhanh. Xem Rate Limit.

Lỗi error_company_locked

Trả về khi cửa hàng của JWT / API Key đang bị khoá:

{
  "error": ["error_company_locked"],
  "detail": {
    "reason": "suspended",
    "state": "suspended"
  }
}
TrườngMô tả
detail.stateTrạng thái cửa hàng: suspended (bị tạm ngưng), soft_deleted (đã xoá, còn có thể khôi phục), hard_deleted (đã xoá vĩnh viễn)
detail.reasonLý do khoá (với suspended có thể là mô tả lý do tạm ngưng)

Khi cửa hàng bị khoá, hầu hết API đều trả lỗi này, chỉ còn một số API phục vụ tài khoản vẫn dùng được như: Đăng xuất, Thông tin người dùng hiện tại (/v1/usersessions/me...), Đổi công ty đang làm việc. Khi đăng nhập vào cửa hàng bị khoá, API đăng nhập cũng trả 403 error_company_locked.

Lỗi error_module_disabled

Trả về khi API thuộc một module chưa được bật cho cửa hàng của JWT / API Key:

{
  "error": ["error_module_disabled"],
  "detail": { "module": "warehouse3d", "module_id": 9400 }
}

Một số API đọc mà POS dùng khi bán hàng không báo lỗi mà trả 200 với danh sách rỗng và field module_disabled (ví dụ GET /v1/flashsales/by-product/{id} khi shop không dùng module Khuyến mãi); các API tính khuyến mãi của đơn (/v1/promotionengines/*, /v1/promotionchecks/*) trả "không có khuyến mãi" để đơn vẫn tạo được với giá gốc.

Lỗi này không phụ thuộc gói dịch vụ (khác 402 error_feature_requires_plan): nâng gói không bật được module. Các API khác của cửa hàng vẫn dùng bình thường. Module được bật lại thì API dùng được ngay ở request kế tiếp.

Các lỗi chung khác: 404 error_not_found (không tìm thấy dữ liệu / đường dẫn), 405 error_method_not_allowed (đường dẫn có nhưng không hỗ trợ phương thức HTTP này), 422 error_not_permission (không có quyền với dữ liệu này). Đường dẫn API không tồn tại trả 404 error_not_found dạng JSON kèm header CORS như mọi API (trình duyệt đọc được mã lỗi thay vì báo lỗi CORS).

On this page