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 Bamboo Airways.
# 2. Hướng dẫn
- 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ả xác nhận.
- 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) |
# 4. Request Body
# 4.1 Ví dụ Request Body
{
"guest_details": [
{
"given_name": "NAM",
"sur_name": "KHANH",
"name_prefix": "MR",
"type": "ADULT",
"guest_id": 3
}
],
"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"
}
],
"pnr_contact": {
"address": {
"email": "hoc22100@gmail.com",
"phone_number": "+84969573782"
},
"name_prefix": "MR",
"language": "EN",
"sur_name": "TUNG",
"given_name": "CHUA"
},
"trip_type": "OW",
"point_of_purchase": "VND",
"air_booking_id": "FLN202510241044561761277496445323734"
}
# guest_details – GuestDetailDto
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
guest_details | array<object> | Danh sách thông tin hành khách. | |
guest_details[].given_name | string | Tên hành khách. | "NAM" |
guest_details[].sur_name | string | Họ hành khách. | "TRAN" |
guest_details[].name_prefix | string | Danh xưng (ví dụ: MR, MS, MRS). | "MR" |
guest_details[].type | string (enum) | Loại hành khách: ADULT / CHILD / INFANT. | "ADULT" |
guest_details[].guest_id | number (integer) | ID hành khách. | 1 |
# itinerary_details – ItineraryDetailDto
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
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. | 1001 |
itinerary_details[].segment_id | number (integer) | ID đoạn chuyến bay. | 2002 |
itinerary_details[].flight_number | number | string | Số hiệu chuyến bay. | "QH123" |
itinerary_details[].flight_date | string (YYYY-MM-DD) | Ngày bay. | "2025-10-28" |
itinerary_details[].board_point | string (IATA-3) | Sân bay đi. | "HAN" |
itinerary_details[].off_point | string (IATA-3) | Sân bay đến. | "SGN" |
itinerary_details[].booking_class | string | Hạng đặt chỗ. | "Y" |
itinerary_details[].carrier_code | string (IATA-2) | Mã hãng bay. | "QH" |
itinerary_details[].fare_basis | string | Cơ sở giá vé (fare basis code). | "YBAMBOO" |
# pnr_contact
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
pnr_contact | object | Thông tin liên hệ PNR. | |
pnr_contact.address | object | Địa chỉ liên hệ. | |
pnr_contact.address.email | string (email) | Email địa chỉ liên hệ. | "example@gmail.com" |
pnr_contact.address.phone_number | string | Số điện thoại liên hệ. | "+84901234567" |
pnr_contact.name_prefix | string | Danh xưng người liên hệ. | "MR" |
pnr_contact.language | string (enum) | Ngôn ngữ liên hệ (ví dụ: EN, VI). | "EN" |
pnr_contact.sur_name | string | Họ người liên hệ. | "Nguyen" |
pnr_contact.given_name | string | Tên người liên hệ. | "An" |
# Trường khác
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
trip_type | string (enum) | Loại chuyến bay (OW – một chiều, RT – khứ hồi, MC – đa chặng). | "OW" |
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. | "VND" |
air_booking_id | string | ID đặt chỗ bay. | "FLN202510281200001234567890" |
# 5. Response
# 5.1 Ví dụ Response
{
"statusCode": 200,
"timestamp": "2025-10-24T03:46:15.450Z",
"path": "/api/v1/bamboo/flight/confirm-price",
"message": "Xác nhận giá vé Bamboo Airways thành công",
"data": {
"success": true,
"id": "FLN202510241044561761277496445323734",
"message": [
{
"message": "Thành công!"
}
],
"data": {
"error": null,
"pnr_on_hold": false,
"last_modified_datetime": "",
"number_of_seats": 1,
"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",
"scheduled_departure_datetime": "2025-10-25 05:35:00",
"scheduled_arrival_time": "2025-10-25 07:45:00",
"departure_terminal": "1",
"arrival_terminal": "3",
"cabin_class": "ECONOMY",
"flight_status": "HK",
"aircraft_type": "321",
"booking_class": "N",
"is_international": false
}
],
"guest_details": [
{
"given_name": "NAM",
"sur_name": "KHANH",
"name_prefix": "MR",
"type": "ADULT",
"guest_id": 2,
"ticket_details": [
{
"coupon_details": [
{
"baggage_allowance_weight": "0",
"baggage_allowance_unit": "K",
"segment_id": 1
}
]
}
]
}
],
"ssr_details": [],
"seat_details": [],
"fee_details": null,
"emd_deposits": [],
"pnr_contact": {
"address": {
"email": "HOC22100@GMAIL.COM",
"phone_number": "+84969573782"
},
"name_prefix": "",
"language": "EN",
"sur_name": "CHUA TUNG",
"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": 1
}
],
"total_tax": {},
"tax": [
{
"code": "YR",
"amount": 446000,
"currency": "VND",
"iata_code": "YR"
},
{
"code": "AX",
"amount": 99000,
"currency": "VND",
"iata_code": "AX"
}
],
"guest_type": "ADULT"
}
]
}
],
"total_amount_paid": {},
"total_amount_tobe_paid": {
"currency": "VND",
"amount": 1794000,
"guest_amount": [
{
"guest_id": 2,
"amount": 1794000,
"currency": "VND",
"guest_type": "ADULT"
}
]
},
"time_limit_detail": {},
"refund_amount": {},
"remarks": [
"BOOKED BY BAOBAO100383@GMAIL.COM - 2025-10-24T10:46:10.000Z"
],
"total_count": 1
}
}
},
"errors": null
}
# Top - Level (response)
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
statusCode | Integer | Mã trạng thái HTTP | 200 |
timestamp | String (ISO 8601) | Thời điểm phản hồi | "2025-10-24T10:20:30Z" |
path | String | Đường dẫn API | "/api/v1/bamboo/flight/confirm-price" |
message | String | Thông báo chung | "Confirm successful" |
data | Object | Khối dữ liệu chi tiết | — |
errors | Array<Object> | null | Danh sách lỗi nếu có | null |
# data – Dữ liệu từ Bamboo
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
success | Boolean | Trạng thái thành công phía Bamboo |
id | String | ID truy vết/yêu cầu Bamboo |
message | Array<Object> | Danh sách thông điệp chi tiết |
data | Object | Dữ liệu chi tiết sau khi xác nhận |
total_count | Integer | Tổng số bản ghi/kết quả |
# data.data – Thông tin chi tiết xác nhận
| 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 |
number_of_seats | Integer | Số ghế |
itinerary | Array<Object> | Danh sách chặng bay |
guest_details | Array<Object> | Danh sách hành khách |
ssr_details | Array<Object> | Dịch vụ bổ sung (SSR) |
seat_details | Array<Object> | Ghế đã chọn |
fee_details | Object | null | Chi tiết phí bổ sung |
emd_deposits | Array<Object> | EMD/phiếu thu kèm theo |
pnr_contact | Object | Thông tin liên hệ PNR |
itin_price | Object | Thông tin giá hành trình |
total_amount_paid | Object | Tổng đã thanh toán |
total_amount_tobe_paid | Object | Tổng tiền phải thanh toán |
time_limit_detail | Object | Hạn giữ chỗ/ra vé |
refund_amount | Object | Thông tin hoàn tiền |
remarks | Array<String> | Ghi chú hệ thống |
# data.data.itinerary[] – Chặng bay
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
flight_segment_group_id | Integer | ID nhóm chặng |
segment_id | Integer | ID chặng |
carrier_code | String (IATA-2) | Mã hãng bay |
flight_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 |
scheduled_departure_datetime | String (YYYY-MM-DD HH:mm:ss) | Giờ cất cánh dự kiến |
scheduled_arrival_time | String (YYYY-MM-DD HH:mm:ss) | Giờ hạ cánh dự kiến |
departure_terminal | String | Nhà ga đi |
arrival_terminal | String | Nhà ga đến |
cabin_class | String | Hạng khoang |
flight_status | String | Tình trạng chặng |
aircraft_type | String | Loại tàu bay |
booking_class | String | Hạng đặt chỗ |
is_international | Boolean | Chặng quốc tế hay nội địa |
# data.data.guest_details[] – Thông tin hành khách
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
given_name | String | Tên khách |
sur_name | String | Họ khách |
name_prefix | String | Xưng hô |
type | String (ADULT/CHILD/INFANT) | Loại khách |
guest_id | Integer | ID khách |
ticket_details | Array<Object> | Chi tiết vé/coupon |
# guest_details[].ticket_details[].coupon_details[] – Hành lý
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
baggage_allowance_weight | String | Khối lượng hành lý |
baggage_allowance_unit | String | Đơn vị (K = kilogram) |
segment_id | Integer | ID chặng áp dụng |
# data.data.pnr_contact – Thông tin liên hệ
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
address | Object | Địa chỉ liên hệ |
name_prefix | String | Xưng hô người liên hệ |
language | String | Ngôn ngữ |
sur_name | String | Họ người liên hệ |
given_name | String | Tên người liên hệ |
# pnr_contact.address
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
email | String (email) | Email liên hệ |
phone_number | String | Số điện thoại |
# data.data.itin_price – Giá hành trình
| 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 |
# 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í |
guest_type | String (ADULT/CHILD/INFANT) | Loại khách |
# 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é |
total_tax | Object | Tổng thuế |
# 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ệ gốc |
applied_fare | Number | Giá áp dụng |
display_fare_amount | Number | Giá hiển thị |
currency | String (ISO-4217) | Tiền tệ hiển thị |
# 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 | Integer | Array<Integer> | ID chặng áp dụng |
fare_component_id | Integer | ID thành phần giá |
# 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 (ISO-4217) | Tiền tệ |
iata_code | String | Mã IATA |
# data.data.total_amount_paid & total_amount_tobe_paid
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
currency | String (ISO-4217) | Tiền tệ tổng |
amount | Number | Tổng tiền |
guest_amount | Array<Object> | Theo từng khách |
# total_amount_tobe_paid.guest_amount[]
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
guest_id | Integer | ID khách |
amount | Number | Số tiền phải trả |
currency | String (ISO-4217) | Tiền tệ |
guest_type | String (ADULT/CHILD/INFANT) | Loại khách |