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

Tham chiếu API

7 phút đọc

Tài liệu tương tác chính thức của Ferry được sinh trực tiếp từ hệ thống máy chủ và cập nhật liên tục tại giao diện Scalar UI. Trang này hướng dẫn bạn cách mở tài liệu, hiểu cách gom nhóm các API nghiệp vụ và cách thử nghiệm gọi API trực tiếp.

Hệ thống cung cấp ba cổng tài liệu tương tác phục vụ từng đối tượng tích hợp khác nhau:

Cổng tài liệuDành cho aiGiao diệnĐặc điểm xác thực
/docsĐối tác tích hợp và tra cứu danh mục công khaiScalar UITrộn cả route công khai lẫn route cần API Key
/internal/docsDashboard Ferry và Dashboard đại lýScalar UIĐòi hỏi JWT người dùng; API Key đối tác không gọi được
/admin/docsĐội ngũ vận hành hệ thống FerrySwagger UIĐòi hỏi quyền quản trị viên nội bộ

Các cổng tài liệu nằm ngay sau tên miền máy chủ API của từng môi trường (ví dụ https://api.ferry.vn/docs). Khi tích hợp trên môi trường thử nghiệm UAT, bạn mở cổng tài liệu trên tên miền UAT tương ứng; xem thêm tại Môi trường.

Bộ tạo tài liệu của hệ thống dùng chung nhãn công khai cho cả tầng dữ liệu danh mục (không cần xác thực) và tầng nghiệp vụ đối tác (cần API Key).

Hệ quả đối tác cần lưu ý trên Scalar:

  • Không có phân biệt thị giác: Giao diện không có biểu tượng ổ khóa riêng hoặc chia nhóm riêng để nhận biết route nào cần khóa API và route nào mở tự do. Đối tác đối chiếu tại Tổng quan bề mặt tích hợp để nắm ranh giới chính xác.
  • Thấy trên Scalar chưa chắc gọi được: Một số route hiển thị trên /docs (như nhóm gửi Zalo ZNS) sẽ luôn trả về HTTP 403 đối với khóa API do chưa được cấp quyền cho vai khóa API.
  • Không thấy trên Scalar chưa chắc không tồn tại: Một số endpoint nếu bị quên gắn nhãn tài liệu có thể vắng mặt trên giao diện nhưng máy chủ vẫn tiếp nhận và xử lý bình thường.

Thay vì tra cứu endpoint rời rạc, bạn nên điều hướng theo các nhóm nghiệp vụ (tag) hiển thị ở mục lục bên trái của Scalar:

  • Tra cứu chuyến và ghế trống: Nhóm Voyages (tìm chuyến theo bến và ngày, lịch chạy), Boat Layout (sơ đồ ghế và tình trạng từng ghế), Voyage Counts (số lượng chỗ còn trống), Routes (danh mục tuyến), Locations (danh mục bến), Operators (danh sách hãng tàu).
  • Giá vé và ưu đãi: Nhóm Ticket Price Additions (phụ phí, markup đại lý, kiểm tra phụ phí theo chuyến), Vouchers (kiểm tra và áp dụng mã giảm giá).
  • Đặt vé và hành khách: Nhóm Bookings (tạo booking mới, xác nhận xuất vé, xem chi tiết booking), Customers (thông tin khách hàng gắn với đơn).
  • Đơn hàng và vé điện tử: Nhóm Orders (tra cứu thông tin chi tiết từng chặng đơn bên trong booking), Bookings (tải lại tệp vé điện tử đã xuất).
  • Thanh toán và số dư: Nhóm Transactions (nhật ký biến động số dư và giao dịch), Debt Ledgers (theo dõi công nợ tổ chức), Organizations (hạn mức tín dụng và phương thức nạp tiền).
  • Hủy vé và hoàn tiền: Nhóm Cancel Ticket Requests (tạo và theo dõi yêu cầu hủy vé).

Xử lý nút Authorize và gọi thử trên Scalar

Phần tiêu đề “Xử lý nút Authorize và gọi thử trên Scalar”

Mọi endpoint nghiệp vụ dành cho đối tác đều yêu cầu xác thực bằng API Key qua header:

Authorization: Bearer <API_KEY>

Bốn bước xử lý vòng qua khi gặp lỗi xác thực trên Scalar:

  1. Thử nghiệm trên nhóm Voyages trước: Điền khóa vào nút Authorize rồi gọi thử một endpoint tra cứu chuyến. Nếu thành công, khóa API của bạn hoàn toàn chính xác.
  2. Điền header thủ công tại endpoint: Tại các mục bị lỗi 401 (như Bookings), chuyển đến phần Headers của chính endpoint đó trên giao diện Scalar và tự thêm header Authorization với giá trị Bearer <API_KEY>.
  3. Chuyển sang công cụ HTTP độc lập: Sử dụng các công cụ như Postman hoặc mã nguồn client của bạn với header Authorization chuẩn để kiểm tra hành vi thực tế của máy chủ.
  4. Báo Ferry để cập nhật khai báo: Thông báo cho đội ngũ hỗ trợ của Ferry để điều chỉnh lại nhãn bảo mật trên giao diện tài liệu.
Giới hạnThực tế trên giao diệnHướng dẫn cho đối tác
Tải tệp mô tả OpenAPINút tải tệp đặc tả (JSON/YAML) bị tắtLiên hệ Ferry nếu cần tệp schema để sinh mã client tự động (SDK)
Tự động sinh mã clientNút sinh mã mẫu trên giao diện bị tắtXây dựng client HTTP dựa trên cấu trúc trường được mô tả
Ghi nhớ phiên làm việcTính năng lưu khóa bị tắt ngoài môi trường phát triểnCần nhập lại API Key mỗi khi tải lại trang trình duyệt
Hiểu nhầmThực tếHệ quả
Nhập khóa vào Authorize bị 401 nghĩa là khóa hỏngTên lược đồ bảo mật bị khai lệch ở nhóm BookingsYêu cầu cấp lại khóa vô ích, mất thời gian tích hợp
Không thấy endpoint trên Scalar là hệ thống không cóEndpoint quên gắn nhãn tài liệu sẽ vắng mặt trên UIĐánh giá sai năng lực hệ thống; hãy hỏi trực tiếp Ferry
Thấy endpoint trên Scalar nghĩa là gọi được bằng API KeyCổng /docs gom cả route cần quyền nội bộ đặc thùLệnh gọi trả về HTTP 403 do thiếu quyền vai khóa
Cổng /internal/docs có thể dùng cho đối tácCổng này phục vụ Dashboard và bắt buộc xác thực bằng JWTGọi bằng API Key luôn bị từ chối truy cập
Tải tệp OpenAPI spec trực tiếp từ Scalar để sinh SDKNút tải tệp đặc tả bị tắt trên giao diệnCần yêu cầu Ferry cung cấp tệp schema trực tiếp
TrangNội dung liên quan
Tổng quan bề mặt tích hợpPhân biệt ranh giới giữa các tầng API và các nhóm chức năng
Xác thực bằng API keyQuy cách cấp phát, sử dụng và bảo mật API Key
Quy ước chungĐịnh dạng dữ liệu, phân trang, lọc và quy tắc gọi API
Tra chuyến và chỗ trốngTrình tự tra cứu chuyến và lấy sơ đồ ghế
Luồng đặt véQuy trình tạo booking và xác nhận xuất vé hoàn chỉnh