Pre-Confirm Price
# 1. Tổng quan
- Action URL:
/api/v1/bamboo/flight/confirm-price - Đặc tả chi tiết: Swagger Link (opens new window)
- Mô tả:
Tính năng này cho phép xác nhận giá vé và thông tin chuyến bay trước khi đặt Bamboo Airways.
# 2. Hướng dẫn sử dụng
- Thực hiện request từ thông tin mã máy bay để confirm.
- Gửi POST tới API action URL để nhận về kết quả confirm.
- Nhận về response và xử lý dữ liệu ở phía ứng dụng của đại lý.
# 3. Parameters
# Bảng mô tả Parameters
| Thuộc tính | Bắt buộc | Kiểu dữ liệu | Mô tả |
|---|---|---|---|
'x-api-token' | Có | String | Token API (F10) |
'x-api-password' | Có | String | Mật khẩu API (F10) |
'x-api-account' | Có | String | Tài khoản API (F10) |
# 3. Request Body
# 3.1 Ví dụ Request Body
{
"pax_types": [
{
"type": "ADULT",
"count": 1
}
],
"itinerary_details": [
{
"flight_segment_group_id": 1,
"segment_id": 1,
"flight_number": "201",
"flight_date": "2025-10-25",
"board_point": "HAN",
"off_point": "SGN",
"booking_class": "N",
"carrier_code": "QH",
"fare_basis": "NES0F"
}
],
"trip_type": "OW",
"point_of_purchase": "VND",
"air_booking_id": "FLN202510241044561761277496445323734"
}
# pax_types
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
| pax_types | 'array<object>' | Danh sách loại khách và số lượng. |
| pax_types[].type | 'string (enum)' | Loại khách: ADULT/CHILD/INFANT… |
| pax_types[].count | 'number (integer)' | Số lượng của loại khách tương ứng. |
# itinerary_details – ItineraryDetailDto
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
| itinerary_details | 'array<object>' | Chi tiết hành trình. |
| itinerary_details[].flight_segment_group_id | 'number (integer)' | ID nhóm đoạn chuyến bay. |
| itinerary_details[].segment_id | 'number (integer)' | ID đoạn chuyến bay. |
| itinerary_details[].flight_number | 'number \| string' | Số hiệu chuyến bay. |
| itinerary_details[].flight_date | 'string (YYYY-MM-DD)' | Ngày bay. |
| itinerary_details[].board_point | 'string (IATA-3)' | Sân bay đi. |
| itinerary_details[].off_point | 'string (IATA-3)' | Sân bay đến. |
| itinerary_details[].booking_class | 'string' | Hạng đặt chỗ. |
| itinerary_details[].carrier_code | 'string (IATA-2)' | Mã hãng bay. |
| itinerary_details[].fare_basis | 'string' | Cơ sở giá vé (fare basis code). |
# Trường khác
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
| trip_type | 'string (enum)' | Loại chuyến bay (OW/RT/MC…). |
| point_of_purchase | 'string' | Điểm mua hàng/kênh hoặc mã tiền tệ ghi nhận tại điểm mua. |
| air_booking_id | 'string' | ID đặt chỗ bay. |
# 5. Response
# 5.1 Ví dụ Response
{
"StatusCode": 200,
"Timestamp": "2025-10-24T03:47:21.907Z",
"Path": "/api/v1/bamboo/flight/pre-confirm-price",
"Message": "Xác nhận giá vé trước khi đặt Bamboo Airways thành công",
"Data": {
"Error": null,
"pnr_on_hold": false,
"last_modified_datetime": "",
"itinerary": [
{
"flight_segment_group_id": 1,
"segment_id": 1,
"carrier_code": "QH",
"flight_number": "201",
"flight_date": "2025-10-25",
"board_point": "HAN",
"off_point": "SGN",
"booking_class": "N",
"fare_basis": "NES0F",
"is_international": false
}
],
"ssr_details": null,
"seat_details": null,
"fee_details": null,
"emd_deposits": null,
"pnr_contact": {
"address": null,
"name_prefix": "",
"language": "",
"sur_name": "",
"given_name": ""
},
"itin_price": {
"guest_price_break_down": [
{
"price_break_down": [
{
"applied_fare_detail_type": {
"base_fare": 1249000,
"base_fare_currency": "VND",
"applied_fare": 1249000,
"display_fare_amount": 1249000,
"currency": "VND"
},
"fare_detail_for_guest_type": [
{
"fare_basis": "NES0F",
"fare_type": "EconomySmart",
"segment_id": [
1
]
}
],
"fare_component_id": 0,
"total_tax": {},
"tax": [
{
"code": "YR",
"amount": 440000,
"currency": "",
"iata_code": "VB"
},
{
"code": "AX",
"amount": 99000,
"currency": "",
"iata_code": "DP"
},
{
"code": "C4",
"amount": 20000,
"currency": "",
"iata_code": ""
},
{
"code": "UE",
"amount": 100000,
"currency": "",
"iata_code": "TI"
},
{
"code": "UE",
"amount": 36000,
"currency": "",
"iata_code": "XX"
}
],
"guest_type": "ADULT"
}
]
}
],
"total_amount_tobe_paid": {
"currency": "VND",
"amount": 1944000,
"guest_amount": [
{
"guest_id": 1,
"amount": 1944000,
"currency": "VND",
"guest_type": "ADULT"
}
]
},
"refund_amount": {},
"Success": true,
"Id": "FLN202510241044561761277496445323734",
"Message": [
{
"message": "Thành công!"
}
],
"TotalCount": 1
}
},
"Errors": null,
"RequestId": "1761277640408-pqr-h2o"
}
# 5.2 Response (top-level)
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'StatusCode' | 'number (integer)' | Mã trạng thái HTTP. |
'Timestamp' | 'string (ISO 8601)' | Thời điểm phản hồi. |
'Path' | 'string' | Đường dẫn API. |
'Message' | 'string' | Thông báo chung. |
'Data' | 'object' | Khối dữ liệu chi tiết. |
'Errors' | 'array<object> \| null' | Danh sách lỗi nếu có. |
'RequestId' | 'string' | ID yêu cầu. |
# Data
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'error' | 'string \| null' | Lỗi nếu có. |
'pnr_on_hold' | 'boolean' | PNR đang giữ chỗ hay không. |
'last_modified_datetime' | 'string' | Thời điểm cập nhật gần nhất (nếu có). |
'itinerary' | 'array<object>' | Danh sách chặng bay. |
'ssr_details' | 'array<object> \| null' | Dịch vụ bổ sung (nếu có). |
'seat_details' | 'array<object> \| null' | Dịch vụ chọn ghế (nếu có). |
'fee_details' | 'object \| null' | Chi tiết phí bổ sung (nếu có). |
'emd_deposits' | 'array<object> \| null' | Các EMD/phiếu thu kèm theo (nếu có). |
'pnr_contact' | 'object' | Thông tin liên hệ PNR. |
'itin_price' | 'object' | Thông tin giá hành trình. |
'total_amount_tobe_paid' | 'object' | Tổng tiền phải thanh toán. |
'refund_amount' | 'object' | Thông tin hoàn tiền (nếu có). |
'Success' | 'boolean' | Trạng thái thành công của thao tác. |
'Id' | 'string' | ID truy vết/yêu cầu. |
'Message' | 'array<object>' | Danh sách thông điệp chi tiết. |
'TotalCount' | 'number (integer)' | Tổng số bản ghi/kết quả. |
# Data.itinerary[]
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'flight_segment_group_id' | 'number (integer)' | ID nhóm chặng. |
'segment_id' | 'number (integer)' | ID chặng. |
'carrier_code' | 'string (IATA-2)' | Mã hãng. |
'flight_number' | 'number \| string' | Số hiệu chuyến bay. |
'flight_date' | 'string (YYYY-MM-DD)' | Ngày bay. |
'board_point' | 'string (IATA-3)' | Sân bay khởi hành. |
'off_point' | 'string (IATA-3)' | Sân bay đến. |
'booking_class' | 'string' | Hạng đặt chỗ. |
'fare_basis' | 'string' | Fare basis code. |
'is_international' | 'boolean' | Chặng quốc tế hay nội địa. |
# Data.pnr_contact
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'address' | 'object \| null' | Địa chỉ liên hệ (email/điện thoại). |
'name_prefix' | 'string' | Xưng hô người liên hệ. |
'language' | 'string' | Ngôn ngữ ưu tiên. |
'sur_name' | 'string' | Họ người liên hệ. |
'given_name' | 'string' | Tên người liên hệ. |
# Data.itin_price
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'guest_price_break_down' | 'array<object>' | Chi tiết giá theo từng khách. |
# Data.itin_price.guest_price_break_down[]
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'price_break_down' | 'array<object>' | Thành phần giá. |
'tax' | 'array<object>' | Thuế/phụ phí theo khách. |
'guest_type' | 'string (enum)' | Loại khách. |
# Data.itin_price.guest_price_break_down[].price_break_down[]
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'applied_fare_detail_type' | 'object' | Nhóm giá & tiền tệ. |
'fare_detail_for_guest_type' | 'array<object>' | Thông tin hạng vé theo loại khách. |
'total_tax' | 'object' | Tổng thuế (nếu có). |
# Data.itin_price.guest_price_break_down[].price_break_down[].applied_fare_detail_type
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'base_fare' | 'number' | Giá cước gốc. |
'base_fare_currency' | 'string (ISO-4217)' | Tiền tệ của base_fare. |
'applied_fare' | 'number' | Giá cước đã áp dụng. |
'display_fare_amount' | 'number' | Giá hiển thị. |
'currency' | 'string (ISO-4217)' | Tiền tệ hiển thị. |
# Data.itin_price.guest_price_break_down[].price_break_down[].fare_detail_for_guest_type[]
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'fare_basis' | 'string' | Fare basis code. |
'fare_type' | 'string' | Brand/loại giá. |
'segment_id' | 'array<number> \| number' | Danh sách/ID chặng áp dụng. |
'fare_component_id' | 'number (integer)' | ID thành phần giá. |
# Data.itin_price.guest_price_break_down[].tax[]
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'code' | 'string' | Mã thuế/phụ phí. |
'amount' | 'number' | Số tiền. |
'currency' | 'string' | Tiền tệ (có thể rỗng trong mẫu). |
'iata_code' | 'string' | Mã IATA/nhà nước (theo hệ thống trả về). |
# Data.total_amount_tobe_paid
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'currency' | 'string (ISO-4217)' | Tiền tệ tổng thanh toán. |
'amount' | 'number' | Tổng tiền phải trả. |
'guest_amount' | 'array<object>' | Tổng theo từng khách. |
# Data.total_amount_tobe_paid.guest_amount[]
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
'guest_id' | 'number (integer)' | ID khách. |
'amount' | 'number' | Số tiền phải trả của khách. |
'currency' | 'string (ISO-4217)' | Tiền tệ. |
'guest_type' | 'string (enum)' | Loại khách. |