Add-ancillary
# 1. Tổng quan
- Action URL:
/api/v1/bamboo/information/add-ancillary - Đặc tả chi tiết: Swagger Link (opens new window)
- Mô tả: Tính năng này cho phép thêm thông tin dịch vụ bổ sung, hành lý cho khách hàng trong chuyến bay của Bamboo Airways.
# 2. Hướng dẫn
- Thực hiện request từ thông tin mã máy bay để thêm thông tin ancillary cho khách hàng.
- POST tới API Action URL để nhận kết quả thêm thông tin ancillary.
- 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
{
"seat_details": [
{
"number": "15A",
"segment_id": 1,
"guest_id": 2
}
],
"ssr_details": [
{
"code": "LOUG",
"segment_id": 1,
"guest_id": 2
}
],
"air_booking_id": "FLN202510241008161761275296301614684"
}
# 4.2 Cấu trúc dữ liệu
| Thuộc tính | Bắt buộc | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|---|
| air_booking_id | Có | string | ID đặt chỗ từ Bamboo Airways | |
| seat_detail | Có | array<list> | Chi tiết ghế ngồi | |
| number | Có | string | Số ghế | |
| segment_id | Có | number | ID đoạn chuyến bay | |
| guest_id | Có | number | ID hành khách | |
| ssr_details | Có | list | Chi tiết SSR (special service request) | |
| code | Có | string | Mã dịch vụ phụ trợ | |
| weight | Có | string | Trọng lượng hành lý | |
| quantity | Có | number | Số lượng |
# 5. Response
# 5.1 Ví dụ Response
{
"statusCode": 200,
"timestamp": "2025-10-24T03:11:43.262Z",
"path": "/api/v1/bamboo/information/add-ancillary",
"message": "Thêm ancillary Bamboo Airways thành công",
"data": {
"success": true,
"id": "FLN202510241008161761275296301614684",
"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-09-11 05:35:00",
"scheduled_arrival_time": "2025-09-11 07:45:00",
"departure_terminal": "1",
"arrival_terminal": "1",
"cabin_class": "ECONOMY",
"flight_status": "HK",
"aircraft_type": "321",
"booking_class": "L",
"is_international": false
}
],
"guest_details": [
{
"given_name": "NAM",
"sur_name": "KHANH",
"name_prefix": "MR",
"type": "ADULT",
"guest_id": 3,
"ticket_details": [
{
"coupon_details": [
{
"baggage_allowance_weight": "0",
"baggage_allowance_unit": "K",
"segment_id": 1
}
]
}
]
},
{
"given_name": "NAM HONG",
"sur_name": "NGUYEN",
"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": [
{
"number": "07A",
"status": "HK",
"guest_id": 2,
"segment_id": 1,
"amount": 55000,
"currency": "VND"
}
],
"fee_details": null,
"emd_deposits": [],
"pnr_contact": {
"address": {
"email": "HONGNN@BAMBOOAIRWAYS.COM",
"phone_number": "+84989989005"
},
"name_prefix": "",
"language": "EN",
"sur_name": "TEST HONG",
"given_name": ""
},
"itin_price": {
"guest_price_break_down": [
{
"price_break_down": [
{
"applied_fare_detail_type": {
"base_fare": 1629000,
"base_fare_currency": "VND",
"applied_fare": 1629000,
"display_fare_amount": 1629000,
"currency": "VND"
},
"fare_detail_for_guest_type": [
{
"fare_basis": "LES0F",
"fare_type": "EconomySmart",
"segment_id": [
1
],
"fare_component_id": 1,
"guest_type": "ADULT"
}
],
"total_tax": {},
"tax": [
{
"code": "YR",
"amount": 440000,
"currency": "VND",
"iata_code": "YR"
},
{
"code": "AX",
"amount": 99000,
"currency": "VND",
"iata_code": "AX"
},
{
"code": "C4",
"amount": 20000,
"currency": "VND",
"iata_code": "C4"
},
{
"code": "UE",
"amount": 131000,
"currency": "VND",
"iata_code": "UE"
}
]
}
]
}
],
"total_amount_paid": {},
"total_amount_tobe_paid": {
"currency": "VND",
"amount": 4765000,
"guest_amount": [
{
"guest_id": 3,
"amount": 2355000,
"currency": "VND",
"guest_type": "ADULT"
},
{
"guest_id": 2,
"amount": 2410000,
"currency": "VND",
"guest_type": "ADULT"
}
]
},
"time_limit_detail": {},
"refund_amount": {},
"remarks": [
"BOOKED BY: HONGNN@BAMBOOAIRWAYS.COM - 2025-08-13T15:17:43.000Z"
]
},
"errors": null
}
}
}
# 5.2 Cấu trúc Response (top-level)
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| statusCode | number (int) | 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ó |
# 5.3 Cấu trúc data
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| 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 thêm ancillary |
# 5.4 Cấu trúc data.data
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| error | string | null | Lỗi nếu có | |
| pnr_on_hold | boolean | PNR đang giữ chỗ hay không | |
| last_modfied_datetime | string | Thời điểm cập nhật gần nhất | |
| number_of_seats | number (integer) | Số ghế | |
| itinerary | array<object> | Danh sách chặng bay | |
| guest_details | array<object> | Danh sách khách | |
| ssr_details | array<object> | Danh sách dịch vụ bổ sung (SSR) | |
| seat_details | array<object> | Danh sách ghế đã chọn | |
| fee_details | object | null | Chi tiết phí bổ sung (nếu có) | |
| emd_deposits | array<object> | 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_paid | object | Tổng đã thanh toán (nếu có) | |
| 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 (nếu có) | |
| remarks | array<string> | Ghi chú/remark hệ thống |
# 5.5 Bảng mô tả data.data.itinerary[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| flight_segment_group_id | number (int) | ID nhóm chặng | |
| segment_id | number (int) | 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 | |
| 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 (enum) | Hạng khoang | |
| flight_status | string | Trạng thái PNR/segment | |
| 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 |
# 5.6 Bảng mô tả data.data.guest_details[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| given_name | string | Tên khách | |
| sur_name | string | Họ khách | |
| name_prefix | string | Xưng hô | |
| type | string (enum) | Loại khách: ADULT/CHILD/INFANT | |
| guest_id | number (int) | ID khách | |
| ticket_details | array<object> | Chi tiết vé của khách |
# 5.7 Bảng mô tả data.data.guest_details[].ticket_details[].coupon_details[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| baggage_allowance_weight | string | Khối lượng hành lý | |
| baggage_allowance_unit | string | Đơn vị khối lượng (K = kilogram) | |
| segment_id | number (integer) | ID chặng áp dụng |
# 5.8 Bảng mô tả data.data.ssr_details[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| code | string | Mã dịch vụ bổ sung (SSR code) | |
| status | string | Trạng thái (HK/HL/UC…) | |
| guest_id | number (integer) | ID khách áp dụng | |
| segment_id | number (integer) | ID chặng áp dụng | |
| amount | number | Giá dịch vụ | |
| currency | string (ISO-4217) | Tiền tệ |
# 5.9 Bảng mô tả data.data.seat_details[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| number | string | Số ghế (seat number) | |
| status | string | Trạng thái (HK…) | |
| guest_id | number (integer) | ID khách áp dụng | |
| segment_id | number (integer) | ID chặng áp dụng | |
| amount | number | Giá chọn ghế (nếu có) | |
| currency | string (ISO-4217) | Tiền tệ |
# 5.10 Bảng mô tả data.data.pnr_contact
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| 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ệ |
# 5.11 Bảng mô tả data.data.pnr_contact.address
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
string (email) | Email liên hệ | ||
| phone_number | string | Số điện thoại liên hệ |
# 5.12 Bảng mô tả data.data.itin_price
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| guest_price_break_down | array<object> | Chi tiết giá theo từng khách |
# 5.13 Bảng mô tả data.data.itin_price.guest_price_break_down[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| 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 |
# 5.14 Bảng mô tả data.data.itin_price.guest_price_break_down[].price_break_down[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| 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ó) |
# 5.15 Bảng mô tả data.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ả | Ví dụ |
|---|---|---|---|
| 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ị |
# 5.16 Bảng mô tả data.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ả | Ví dụ |
|---|---|---|---|
| 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á |
# 5.17 Bảng mô tả data.data.itin_price.guest_price_break_down[].tax[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| code | string | Mã thuế/phụ phí | |
| amount | number | Số tiền | |
| currency | string (ISO-4217) | Tiền tệ | |
| iata_code | string | Mã IATA (nếu có) |
# 5.18 Bảng mô tả data.data.total_amount_tobe_paid
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| 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 |
# 5.19 Bảng mô tả data.data.total_amount_tobe_paid.guest_amount[]
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| 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 |
# 5.20 Bảng mô tả data.data.time_limit_detail
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| (các trường không được cung cấp trong tài liệu) |
# 5.21 Các trường trống/khác
| Thuộc tính | Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|---|
| total_amount_paid | object | Tổng đã thanh toán (nếu có) | |
| refund_amount | object | Thông tin hoàn tiền (nếu có) | |
| remarks | array<string> | Ghi chú/remark hệ thống |