{
	"info": {
		"_postman_id": "2628081e-98ea-461c-9575-40ea59330f91",
		"name": "Hotel Hub - Documented",
		"description": "# 🏨 Hotel Service Documentation\n\n## Overview\n\nWelcome to the Hotel Service API Hub. This service provides a complete set of APIs to support hotel discovery, booking, and post-booking management. It is designed for travel platforms, OTAs, and partners who want to integrate hotel services into their applications. From searching destinations to confirming bookings and processing payments, this guide will help you get started quickly and efficiently.\n\n## � Quick Start\n\n1. **Authenticate**:.\n    \n\n``` bash\ncurl --location --globoff '{{idp}}/connect/token' \\\n--header 'Content-Type: application/x-www-form-urlencoded' \\\n--data-urlencode 'grant_type=password' \\\n--data-urlencode 'client_id=CLIENT_ID' \\\n--data-urlencode 'password=PASSWORD' \\\n--data-urlencode 'username=USER_NAME'\n\n ```\n\n| Parameter | Description |\n| --- | --- |\n| `client_id` | Partner identifier from Hotel-Hub |\n| `username` | your username |\n| `password` | Your password |\n| `grant_type` | `password` |\n\n1. **API Endpoint**:\n    \n    - **URL:** `https://api.skyjet.vn/{path}`\n        \n    - **Method:** `POST/GET/PATCH....`\n        \n    - **Content-Type:** `application/json`\n        \n\n---",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
		"_exporter_id": "46302353"
	},
	"item": [
		{
			"name": "Init",
			"item": [
				{
					"name": "Login",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Get access token return status code is 200\", function () {\r",
									"    pm.response.to.have.status(200);\r",
									"});\r",
									"pm.test(\"Get access token has value\", function () {\r",
									"    const jsonData = pm.response.json();\r",
									"    pm.expect(jsonData).to.have.property('access_token');\r",
									"   pm.environment.set(\"access_token\", jsonData.access_token);\r",
									"});"
								],
								"type": "text/javascript",
								"packages": {}
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [],
						"body": {
							"mode": "urlencoded",
							"urlencoded": [
								{
									"key": "grant_type",
									"value": "password",
									"type": "text"
								},
								{
									"key": "client_id",
									"value": "CLIENT_ID",
									"description": "Contact to Administrator for client id",
									"type": "text"
								},
								{
									"key": "password",
									"value": "PASSWORD",
									"description": "Contact to Administrator for password",
									"type": "text"
								},
								{
									"key": "username",
									"value": "USER_NAME",
									"description": "Contact to Administrator for username",
									"type": "text"
								}
							]
						},
						"url": {
							"raw": "{{idp}}/connect/token",
							"host": [
								"{{idp}}"
							],
							"path": [
								"connect",
								"token"
							]
						},
						"description": "# Authentication API Documentation\n\n## Overview\n\nThis API implements the OAuth 2.0 Resource Owner Password Credentials flow to obtain access tokens. Used for authenticating users and generating tokens for API access.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://id.skyjet.vn/connect/token`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/x-www-form-urlencoded`\n    \n\n---\n\n## Request Parameters\n\n| Parameter | Required | Description |\n| --- | --- | --- |\n| `grant_type` | ✅ Yes | Must be `password` |\n| `client_id` | ✅ Yes | Client application identifier |\n| `username` | ✅ Yes | User's email/username |\n| `password` | ✅ Yes | User's password |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://id.skyjet.vn/connect/token' \\\n--header 'Content-Type: application/x-www-form-urlencoded' \\\n--data-urlencode 'grant_type=password' \\\n--data-urlencode 'client_id=CLIENT_ID' \\\n--data-urlencode 'password=PASSWORD' \\\n--data-urlencode 'username=USERNAME'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"access_token\": {access_token},\n  \"expires_in\": 3600,\n  \"token_type\": \"Bearer\",\n  \"refresh_token\": {refresh_token},\n  \"scope\": \"client-data config-data hub-data offline_access user-data\"\n}\n\n ```\n\n---\n\n## Response Field Description\n\n| Field | Type | Description |\n| --- | --- | --- |\n| `access_token` | String | Bearer token for API authorization |\n| `expires_in` | Number | Token validity in seconds (3600s = 1 hour) |\n| `token_type` | String | Token type (always `Bearer`) |\n| `refresh_token` | String | Token to obtain new access tokens |\n| `scope` | String | Granted permissions (space-separated) |\n\n---\n\n## Scopes Reference\n\n| Scope | Description |\n| --- | --- |\n| `client-data` | Access to client-specific data |\n| `config-data` | Read configuration data |\n| `hub-data` | Access SkyJet Hub services |\n| `offline_access` | Allows refresh token usage |\n| `user-data` | Access user profile information |\n\n---\n\n## Security Notes\n\n1. Always use HTTPS for token requests\n    \n2. Store tokens securely - never expose in client-side code\n    \n3. Refresh tokens should be encrypted at rest\n    \n4. Rotate client secrets regularly\n    \n5. Use PKCE for public clients if implemented\n    \n\n---"
					},
					"response": []
				}
			],
			"description": "# 🚀 Initialization & Authentication APIs\n\nWelcome to the Initialization & Authentication section. This section covers the fundamental APIs required to begin your interaction with the Hotel Service. Proper authentication is the crucial first step to accessing any other Hotel functionalities.\n\nThe primary API in this section is:\n\n- **Login (POST):**\n    \n    - This endpoint is used to authenticate your application and obtain a **Token**.\n        \n    - This token (which you'll typically store in your `{{token}}` environment variable) must then be included in the `Authorization` header for all subsequent requests to other Hotel Service APIs, as outlined in our main [Authentication Guide](https://./#step-3-set-up-authentication).\n        \n\nSuccessfully authenticating via the Login API will allow you to proceed with utilizing the full suite of Hotel services. Click on the API above to view detailed request/response formats and examples."
		},
		{
			"name": "Hub",
			"item": [
				{
					"name": "Hotel Hub",
					"item": [
						{
							"name": "Metadata",
							"item": [
								{
									"name": "Search City Feeds",
									"request": {
										"method": "POST",
										"header": [],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"pageIndex\": 0,\r\n    \"pageSize\": 20\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/b2c/hotel/feeds/city/search",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"b2c",
												"hotel",
												"feeds",
												"city",
												"search"
											]
										},
										"description": "# City Feeds API Documentation\n\n## Overview\n\nThis API returns a list ALL of cities (or regions) with active hotels.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/b2c/hotel/feeds/city`\n    \n- **Method:** `GET`\n    \n\n---\n\n## Request Body\n\nNo request body required for GET method\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request GET 'https://api.skyjet.vn/hub/b2c/hotel/feeds/city' \\\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n[\n  {\n    \"name\": \"Tuy Phong\",\n    \"nameVN\": \"Tuy Phong\",\n    \"countryCode\": \"vn\",\n    \"longitude\": 108.71667,\n    \"latitude\": 11.23333,\n    \"activeHotels\": 10\n  },\n  {\n    \"name\": \"Cu Chi\",\n    \"nameVN\": \"Củ Chi\",\n    \"countryCode\": \"vn\",\n    \"longitude\": 106.4667,\n    \"latitude\": 10.9667,\n    \"activeHotels\": 1\n  },\n  {\n    \"name\": \"Hung Yen\",\n    \"nameVN\": \"Hưng Yên\",\n    \"countryCode\": \"vn\",\n    \"longitude\": 106.0667,\n    \"latitude\": 20.65,\n    \"activeHotels\": 17\n  }\n]\n\n ```\n\n---\n\n## Response Field Description\n\n### City Feeds Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `name` | String | `\"Cu Chi\"` | name of city |\n| `nameVN` | String | `\"Củ Chi\"` | name of city as Vietnamese |\n| `countryCode` | String | `\"vn\"` | country |\n| `longitude` | decimal | `106.4667` | longitude of city |\n| `latitude` | decimal | `10.9667` | latitude of city |\n| `activeHotels` | int | `1` | number of hotels are active |\n\n---\n\n## Country Code Reference\n\n| Code | Name |\n| --- | --- |\n| vn | Vietnam |\n| ... | ... |\n\n---\n\n## Notes\n\nThe API can be used to suggest autocomplete locations, or used in maps to show areas with hotels.\n\nThe nameVN names serve the Vietnamese interface, name is for the international version."
									},
									"response": []
								},
								{
									"name": "Search Country Feeds",
									"request": {
										"method": "POST",
										"header": [],
										"body": {
											"mode": "raw",
											"raw": "{}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/b2c/hotel/feeds/country/search",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"b2c",
												"hotel",
												"feeds",
												"country",
												"search"
											]
										},
										"description": "# Country Feeds API Documentation\n\n## Overview\n\nThis API returns a list ALL of country (or nation) with active hotels.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/b2c/hotel/feeds/country`\n    \n- **Method:** `GET`\n    \n\n---\n\n## Request Body\n\nNo request body required for GET method\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request GET 'https://api.skyjet.vn/hub/b2c/hotel/feeds/country' \\\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n[\n  {\n    \"name\": \"Singapore\",\n    \"nameVN\": \"Singapore\",\n    \"countryCode\": \"SG\",\n    \"longitude\": 103.848267,\n    \"latitude\": 1.323735,\n    \"activeHotels\": 1342\n  },\n  {\n    \"name\": \"Bosnia Herzegovina\",\n    \"nameVN\": \"Bosnia và Hercegovina\",\n    \"countryCode\": \"BA\",\n    \"longitude\": 17.936829,\n    \"latitude\": 44.921322,\n    \"activeHotels\": 11803\n  },\n  {\n    \"name\": \"Vietnam\",\n    \"nameVN\": \"Việt Nam\",\n    \"countryCode\": \"VN\",\n    \"longitude\": 108.325195,\n    \"latitude\": 12.940322,\n    \"activeHotels\": 98269\n  }\n]\n\n ```\n\n---\n\n## Response Field Description\n\n### Country Feeds Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `name` | String | `\"Vietnam\"` | name of country/nation |\n| `nameVN` | String | `\"Việt Nam\"` | name of country/nation as Vietnamese |\n| `countryCode` | String | `\"VN\"` | country/nation code |\n| `longitude` | decimal | `108.325195` | longitude of country/nation |\n| `latitude` | decimal | `12.940322` | latitude of country/nation |\n| `activeHotels` | int | `98269` | number of hotels are active |\n\n---\n\n## Country Code Reference\n\n| Code | Name |\n| --- | --- |\n| VN | Vietnam |\n| SG | Singapore |\n| ... | ... |\n\n---\n\n## Notes\n\nThe API can be used to suggest autocomplete locations, or used in maps to show areas/country/nation with hotels.\n\nThe nameVN names serve the Vietnamese interface, name is for the international version."
									},
									"response": []
								},
								{
									"name": "Search countries",
									"request": {
										"method": "POST",
										"header": [],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"pageIndex\": 0,\r\n    \"pageSize\": 20\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/b2c/countries/search",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"b2c",
												"countries",
												"search"
											]
										},
										"description": "# Countries Search API Documentation\n\n## Overview\n\nThis API returns a list of countries/nations. It supports pagination to allow for efficient retrieval of country data.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/b2c/countries/search`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n\n_(Note: Authentication headers like_ `_Authorization: Bearer {token}_` _might be required if this API is protected, but it's not specified in the provided snippet.)_\n\n---\n\n## Request Body\n\n``` json\n{\n  \"pageIndex\": 0,\n  \"pageSize\": 20\n}\n\n ```\n\n---\n\n## Request Field Description\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `pageIndex` | integer | ✅ | `0` | The 0-based index of the page to retrieve. For the first page, use 0. |\n| `pageSize` | integer | ✅ | `20` | The number of country records to return per page. For example, 20. |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/b2c/countries/search' \\\n--header 'Content-Type: application/json' \\\n--data '{\n      \"pageIndex\": 0,\n      \"pageSize\": 20\n    }'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"durationInMilisecond\": 10,\n  \"totalCount\": 412,\n  \"totalPage\": 21,\n  \"pageSize\": 20,\n  \"pageIndex\": 0,\n  \"clientOverride\": false,\n  \"data\": [\n    {\n      \"countryCode\": \"VN\",\n      \"name\": \"Viet Nam\",\n      \"nameVN\": \"Việt Nam\",\n      \"continentCode\": \"AS\"\n    },\n    {\n      \"countryCode\": \"VI\",\n      \"name\": \"Virgin Islands, U.S.\",\n      \"nameVN\": \"Quần đảo Virgin thuộc Mỹ\",\n      \"continentCode\": \"NA\"\n    },\n    {\n      \"countryCode\": \"VG\",\n      \"name\": \"Virgin Islands, British\",\n      \"nameVN\": \"Quần đảo Virgin thuộc Anh\",\n      \"continentCode\": \"NA\"\n    }\n  ]\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response object contains pagination metadata and an array of country data.\n\n| Field Path | Type | Example | Description |\n| --- | --- | --- | --- |\n| `durationInMilisecond` | integer | `10` | The time taken by the server to process the search request, in milliseconds. |\n| `totalCount` | integer | `412` | The total number of country records matching the search criteria across all pages. |\n| `totalPage` | integer | `21` | The total number of pages available for the given `pageSize` and `totalCount`. |\n| `pageSize` | integer | `20` | The number of country records returned per page (matches the request). |\n| `pageIndex` | integer | `0` | The 0-based index of the current page (matches the request). |\n| `clientOverride` | boolean | `false` | A flag indicating if any client-side override was applied (details would depend on system logic). |\n| `data` | array of objects | `[...]` (see `Country` object below) | An array containing the country records for the current page. Each object represents a single country. |\n\n### `data[]` (Country) Object\n\nEach object in the `data` array represents a country and has the following structure:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `countryCode` | string | `\"VN\"` | The ISO 3166-1 alpha-2 code for the country. |\n| `name` | string | `\"Viet Nam\"` | The common name of the country in English. |\n| `nameVN` | string | `\"Việt Nam\"` | The common name of the country in Vietnamese. |\n| `continentCode` | string | `\"AS\"` | The code representing the continent of the country (e.g., \"AS\" for Asia, \"NA\" for North America). |\n\n---\n\n## Continent Code Reference\n\n| Code | Name |\n| --- | --- |\n| AF | Africa |\n| AN | Antarctica |\n| AS | Asia |\n| EU | Europe |\n| NA | North America |\n| OC | Oceania |\n| SA | South America |\n| ... | ... |\n\n---\n\n## Notes\n\n- This API provides a paginated list of countries.\n    \n- The `pageIndex` and `pageSize` parameters are mandatory for pagination.\n    \n- The response includes useful metadata for handling pagination on the client-side (`totalCount`, `totalPage`).\n    \n- Country names are provided in both English (`name`) and Vietnamese (`nameVN`).\n    \n- Ensure you handle the `continentCode` appropriately if you need to filter or display countries by continent. A full list of continent codes and their meanings should be obtained from the API provider if not fully listed here.\n    \n\n---"
									},
									"response": []
								},
								{
									"name": "Get city feeds list",
									"request": {
										"method": "GET",
										"header": [],
										"url": {
											"raw": "{{host}}/hub/b2c/hotel/feeds/city",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"b2c",
												"hotel",
												"feeds",
												"city"
											]
										},
										"description": "# City Feeds API Documentation\n\n## Overview\n\nThis API returns a list ALL of cities (or regions) with active hotels.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/b2c/hotel/feeds/city`\n    \n- **Method:** `GET`\n    \n\n---\n\n## Request Body\n\nNo request body required for GET method\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request GET 'https://api.skyjet.vn/hub/b2c/hotel/feeds/city' \\\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n[\n  {\n    \"name\": \"Tuy Phong\",\n    \"nameVN\": \"Tuy Phong\",\n    \"countryCode\": \"vn\",\n    \"longitude\": 108.71667,\n    \"latitude\": 11.23333,\n    \"activeHotels\": 10\n  },\n  {\n    \"name\": \"Cu Chi\",\n    \"nameVN\": \"Củ Chi\",\n    \"countryCode\": \"vn\",\n    \"longitude\": 106.4667,\n    \"latitude\": 10.9667,\n    \"activeHotels\": 1\n  },\n  {\n    \"name\": \"Hung Yen\",\n    \"nameVN\": \"Hưng Yên\",\n    \"countryCode\": \"vn\",\n    \"longitude\": 106.0667,\n    \"latitude\": 20.65,\n    \"activeHotels\": 17\n  }\n]\n\n ```\n\n---\n\n## Response Field Description\n\n### City Feeds Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `name` | String | `\"Cu Chi\"` | name of city |\n| `nameVN` | String | `\"Củ Chi\"` | name of city as Vietnamese |\n| `countryCode` | String | `\"vn\"` | country |\n| `longitude` | decimal | `106.4667` | longitude of city |\n| `latitude` | decimal | `10.9667` | latitude of city |\n| `activeHotels` | int | `1` | number of hotels are active |\n\n---\n\n## Country Code Reference\n\n| Code | Name |\n| --- | --- |\n| vn | Vietnam |\n| ... | ... |\n\n---\n\n## Notes\n\nThe API can be used to suggest autocomplete locations, or used in maps to show areas with hotels.\n\nThe nameVN names serve the Vietnamese interface, name is for the international version."
									},
									"response": []
								},
								{
									"name": "Get booking status",
									"request": {
										"method": "GET",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}",
												"type": "text"
											}
										],
										"url": {
											"raw": "{{host}}/hub/hotel/booking/status",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"booking",
												"status"
											]
										},
										"description": "# Booking Status API Documentation\n\n## Overview\n\nThis API returns a list of Booking Status.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/booking/status`\n    \n- **Method:** `GET`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\nNo request body required for GET method\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request GET 'https://api.skyjet.vn/hub/hotel/booking/status' \\\n--header 'Authorization: Bearer {token}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n[\n  {\n    \"code\": \"PENDING\",\n    \"name\": \"PENDING\"\n  },\n  {\n    \"code\": \"EXPIRED\",\n    \"name\": \"EXPIRED\"\n  },\n  {\n    \"code\": \"BOOKED\",\n    \"name\": \"BOOKED\"\n  },\n  {\n    \"code\": \"CLOSED\",\n    \"name\": \"CLOSED\"\n  },\n  {\n    \"code\": \"CANCELLING\",\n    \"name\": \"CANCELLING\"\n  },\n  {\n    \"code\": \"CANCELLED\",\n    \"name\": \"CANCELLED\"\n  },\n  {\n    \"code\": \"FAILED\",\n    \"name\": \"FAILED\"\n  },\n  {\n    \"code\": \"REFUNDED\",\n    \"name\": \"REFUNDED\"\n  }\n]\n\n ```\n\n---\n\n## Response Field Description\n\n### Booking Status Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `code` | String | `\"BOOKED\"` | booking status code |\n| `name` | String | `\"BOOKED\"` | booking status name |\n\n---\n\n### Structure of data Objects\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `code` | String | `\"BOOKED\"` | Machine-readable booking type code |\n| `name` | String | `\"BOOKED\"` | Human-readable booking type name |\n\n---\n\n### List of popular statuses\n\n| Code | Description |\n| --- | --- |\n| `PENDING` | Pending (booking not completed) |\n| `EXPIRED` | Payment deadline has passed (the guest has not completed the booking) |\n| `BOOKED` | Booked successfully |\n| `CLOSED` | Booking completed and closed |\n| `CANCELLING` | Processing cancellation |\n| `CANCELLED` | Cancelled successfully |\n| `FAILED` | Reservation failed |\n| `REFUNDED` | Refunded |\n\n## Notes\n\nThis API is often used to populate status filter dropdowns in dashboards or booking management panels.\n\nThe code should be used to test processing conditions in backend or frontend systems."
									},
									"response": []
								},
								{
									"name": "Get country feeds list",
									"request": {
										"method": "GET",
										"header": [],
										"url": {
											"raw": "{{host}}/hub/b2c/hotel/feeds/country",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"b2c",
												"hotel",
												"feeds",
												"country"
											]
										},
										"description": "# Country Feeds API Documentation\n\n## Overview\n\nThis API returns a list ALL of country (or nation) with active hotels.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/b2c/hotel/feeds/country`\n    \n- **Method:** `GET`\n    \n\n---\n\n## Request Body\n\nNo request body required for GET method\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request GET 'https://api.skyjet.vn/hub/b2c/hotel/feeds/country' \\\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n[\n  {\n    \"name\": \"Singapore\",\n    \"nameVN\": \"Singapore\",\n    \"countryCode\": \"SG\",\n    \"longitude\": 103.848267,\n    \"latitude\": 1.323735,\n    \"activeHotels\": 1342\n  },\n  {\n    \"name\": \"Bosnia Herzegovina\",\n    \"nameVN\": \"Bosnia và Hercegovina\",\n    \"countryCode\": \"BA\",\n    \"longitude\": 17.936829,\n    \"latitude\": 44.921322,\n    \"activeHotels\": 11803\n  },\n  {\n    \"name\": \"Vietnam\",\n    \"nameVN\": \"Việt Nam\",\n    \"countryCode\": \"VN\",\n    \"longitude\": 108.325195,\n    \"latitude\": 12.940322,\n    \"activeHotels\": 98269\n  }\n]\n\n ```\n\n---\n\n## Response Field Description\n\n### Country Feeds Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `name` | String | `\"Vietnam\"` | name of country/nation |\n| `nameVN` | String | `\"Việt Nam\"` | name of country/nation as Vietnamese |\n| `countryCode` | String | `\"VN\"` | country/nation code |\n| `longitude` | decimal | `108.325195` | longitude of country/nation |\n| `latitude` | decimal | `12.940322` | latitude of country/nation |\n| `activeHotels` | int | `98269` | number of hotels are active |\n\n---\n\n## Country Code Reference\n\n| Code | Name |\n| --- | --- |\n| VN | Vietnam |\n| SG | Singapore |\n| ... | ... |\n\n---\n\n## Notes\n\nThe API can be used to suggest autocomplete locations, or used in maps to show areas/country/nation with hotels.\n\nThe nameVN names serve the Vietnamese interface, name is for the international version."
									},
									"response": []
								},
								{
									"name": "Get countries list",
									"request": {
										"method": "GET",
										"header": [],
										"url": {
											"raw": "{{host}}/hub/b2c/countries",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"b2c",
												"countries"
											]
										},
										"description": "# Get Countries API Documentation\n\n## Overview\n\nThis API returns a all of countries/nations. It supports pagination to allow for efficient retrieval of country data.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/b2c/countries`\n    \n- **Method:** `GET`\n    \n\n---\n\n## Request Body\n\nNo request body required for GET method\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/b2c/countries' \\\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n[\n  {\n    \"countryCode\": \"VN\",\n    \"name\": \"Viet Nam\",\n    \"nameVN\": \"Việt Nam\",\n    \"continentCode\": \"AS\"\n  },\n  {\n    \"countryCode\": \"VI\",\n    \"name\": \"Virgin Islands, U.S.\",\n    \"nameVN\": \"Quần đảo Virgin thuộc Mỹ\",\n    \"continentCode\": \"NA\"\n  },\n  {\n    \"countryCode\": \"VG\",\n    \"name\": \"Virgin Islands, British\",\n    \"nameVN\": \"Quần đảo Virgin thuộc Anh\",\n    \"continentCode\": \"NA\"\n  }\n]\n\n ```\n\n---\n\n## Response Field Description\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `countryCode` | string | `\"VN\"` | The ISO 3166-1 alpha-2 code for the country. |\n| `name` | string | `\"Viet Nam\"` | The common name of the country in English. |\n| `nameVN` | string | `\"Việt Nam\"` | The common name of the country in Vietnamese. |\n| `continentCode` | string | `\"AS\"` | The code representing the continent of the country (e.g., \"AS\" for Asia, \"NA\" for North America). |\n\n---\n\n## Continent Code Reference\n\n| Code | Name |\n| --- | --- |\n| AF | Africa |\n| AN | Antarctica |\n| AS | Asia |\n| EU | Europe |\n| NA | North America |\n| OC | Oceania |\n| SA | South America |\n| ... | ... |\n\n---\n\n## Notes\n\n- This API provides a list of all countries.\n    \n\n---"
									},
									"response": []
								},
								{
									"name": "Get accommodations list",
									"request": {
										"method": "GET",
										"header": [],
										"url": {
											"raw": "{{host}}/hub/b2c/hotel/accommodations",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"b2c",
												"hotel",
												"accommodations"
											]
										},
										"description": "# Accommodations API Documentation\n\n## Overview\n\nReturns a list of supported property types in the system, often used to display or filter property data on the user interface.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/b2c/hotel/accommodations`\n    \n- **Method:** `GET`\n    \n\n---\n\n## Request Body\n\nNo request body required for GET method\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request GET 'https://api.skyjet.vn/hub/b2c/hotel/accommodations' \\\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n[\n  \"PROPERTY\",\n  \"HOTEL\",\n  \"MOTEL\",\n  \"RESORT\",\n  \"INN\",\n  \"BED_AND_BREAKFAST\",\n  \"GUESTHOUSE\",\n  \"CONDO\",\n  \"ALL_INCLUSIVE_PROPERTY\",\n  \"CABIN\",\n  \"CHALET\",\n  \"COTTAGE\",\n  \"HOSTEL_BACKPACKER_ACCOMMODATION\",\n  \"RANCH\",\n  \"VILLA\",\n  \"LODGE\",\n  \"APARTMENT\",\n  \"PRIVATE_VACATION_HOME\",\n  \"HOUSEBOAT\",\n  \"RYOKAN\",\n  \"TREE_HOUSE_PROPERTY\",\n  \"APARTHOTEL\",\n  \"CONDOMINIUM_RESORT\",\n  \"CAMPSITE\",\n  \"RIAD\",\n  \"HOSTAL\",\n  \"COUNTRY_HOUSE\",\n  \"PENSION\",\n  \"POUSADA_PORTUGAL\",\n  \"POUSADA_BRAZIL\",\n  \"RESIDENCE\",\n  \"AFFITTACAMERE\",\n  \"CASTLE\",\n  \"SAFARI_TENTALOW\",\n  \"PALACE\",\n  \"AGRITOURISM_PROPERTY\",\n  \"CRUISE\",\n  \"HOLIDAY_PARK\",\n  \"CAPSULE_HOTEL\",\n  \"MOBILE_HOME\",\n  \"APART_HOTEL\",\n  \"CAMPING\",\n  \"GLAMPING\",\n  \"VILLAS_AND_BUNGALOWS\",\n  \"COTTAGES_AND_HOUSES\",\n  \"BNB\",\n  \"SANATORIUM\",\n  \"MINI_HOTEL\",\n  \"BOUTIQUE_AND_DESIGN\",\n  \"FARM\"\n]\n\n ```\n\n---\n\n## Response Field Description\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| item | String | BED_AND_BREAKFAST | Accommodation type code used in system |\n\n---\n\n### Accommodation Type Definitions\n\n| Code | Description |\n| --- | --- |\n| `PROPERTY` | General property, no specific classification |\n| `HOTEL` | Standard hotel with a range of services |\n| `MOTEL` | Roadside lodging, often for drivers |\n| `RESORT` | Full-service resort with amenities for leisure |\n| `INN` | Small inn, usually rural or suburban |\n| `BED_AND_BREAKFAST` | Private residence offering overnight stay and breakfast |\n| `GUESTHOUSE` | Small guest accommodations, informal setting |\n| `CONDO` | Condominium unit, privately owned |\n| `ALL_INCLUSIVE_PROPERTY` | Accommodation with all-inclusive services |\n| `CABIN` | Small wooden house in forest/mountains |\n| `CHALET` | Mountain-style wooden house, often in ski areas |\n| `COTTAGE` | Country-style small house |\n| `HOSTEL_BACKPACKER_ACCOMMODATION` | Budget dormitory accommodation for backpackers |\n| `RANCH` | Farm/ranch-style accommodation with activities |\n| `VILLA` | Private villa with garden or pool |\n| `LODGE` | Nature lodge in wilderness areas |\n| `APARTMENT` | Residential-style unit with kitchen |\n| `PRIVATE_VACATION_HOME` | Rented full vacation home |\n| `HOUSEBOAT` | Floating house on a boat |\n| `RYOKAN` | Traditional Japanese inn |\n| `TREE_HOUSE_PROPERTY` | Treehouse-style lodging for experiences |\n| `APARTHOTEL` | Apartment-hotel hybrid |\n| `CONDOMINIUM_RESORT` | Resort with condo-style units |\n| `CAMPSITE` | Outdoor camping area |\n| `RIAD` | Traditional Moroccan house with interior courtyard |\n| `HOSTAL` | Budget lodging, common in Spain |\n| `COUNTRY_HOUSE` | Rural home used for vacation stays |\n| `PENSION` | Small European inn with meals included |\n| `POUSADA_PORTUGAL` | Historic lodging in Portugal |\n| `POUSADA_BRAZIL` | Local guesthouse in Brazil |\n| `RESIDENCE` | Long-term serviced accommodation |\n| `AFFITTACAMERE` | Italian guesthouse or room-rental |\n| `CASTLE` | Castle converted into guest accommodation |\n| `SAFARI_TENTALOW` | Luxury safari tent accommodation |\n| `PALACE` | Palace used as a luxury stay |\n| `AGRITOURISM_PROPERTY` | Farm stay with agricultural experience |\n| `CRUISE` | Cruise ship with onboard stay |\n| `HOLIDAY_PARK` | Leisure park with multiple lodging types |\n| `CAPSULE_HOTEL` | Small capsule-style accommodation |\n| `MOBILE_HOME` | Movable residential unit |\n| `APART_HOTEL` | Similar to aparthotel |\n| `CAMPING` | Basic outdoor tent or RV camping |\n| `GLAMPING` | Glamorous style camping |\n| `VILLAS_AND_BUNGALOWS` | Group of private villas or bungalows |\n| `COTTAGES_AND_HOUSES` | Small detached houses or cottages |\n| `BNB` | Bed and breakfast, like homestay |\n| `SANATORIUM` | Health retreat or recovery lodging |\n| `MINI_HOTEL` | Small hotel with limited rooms |\n| `BOUTIQUE_AND_DESIGN` | Stylish, themed, or designer hotels |\n| `FARM` | Accommodation located on a farm |\n\n---\n\n## Notes\n\nThe list is an array of strings representing accommodation type codes.\n\nEach string can be mapped to a display name in multiple languages ​​on the frontend.\n\nThis API is typically used to populate a filter dropdown, autocomplete, or accommodation classification system in the user interface (dashboard, CMS, booking engine, etc.).\n\nThe backend/frontend should use this code to handle the logic, and display a translated/reformatted version to the user."
									},
									"response": []
								}
							],
							"description": "The Metadata section provides foundational data used across the hotel booking platform. It includes static and reference information such as cities, countries, accommodation types, and booking statuses to support filtering, searching, and localizing content.\n\n| Method | Endpoint | Description |\n| --- | --- | --- |\n| `POST` | `Search City Feeds` | Search for city-related content or data feeds relevant to hotel services. |\n| `POST` | `Search Country Feeds` | Search for country-based data feeds used in hotel availability or metadata filtering. |\n| `POST` | `Search countries` | Search countries based on criteria like name or code. |\n| `GET` | `Get city feeds list` | Retrieve a full list of city feeds for reference and filtering. |\n| `GET` | `Get booking status` | Get all possible booking statuses (e.g., confirmed, pending, cancelled). |\n| `GET` | `Get country feeds list` | Retrieve available country-level data feeds for system use. |\n| `GET` | `Get countries list` | Get a complete list of countries with metadata like name and code. |\n| `GET` | `Get accommodations list` | Retrieve types of accommodations (e.g., hotel, hostel, villa). |"
						},
						{
							"name": "Booking",
							"item": [
								{
									"name": "1. Search Destinations - Hotels",
									"event": [
										{
											"listen": "test",
											"script": {
												"exec": [
													"pm.test(\"Return status code is 200\", function () {\r",
													"    pm.response.to.have.status(200);\r",
													"});\r",
													"\r",
													"pm.test(\"Destinations has value\", function () {\r",
													"    const jsonData = pm.response.json();\r",
													"    pm.expect(jsonData.destinations[0]).to.have.property('providerCode');\r",
													"    pm.environment.set(\"hotel.provider_code\", jsonData.destinations[0].providerCode);\r",
													"\r",
													"    pm.expect(jsonData.destinations[0]).to.have.property('destinationId');\r",
													"    pm.environment.set(\"hotel.destination_id\", jsonData.destinations[0].destinationId);\r",
													"\r",
													"    pm.expect(jsonData.destinations[0]).to.have.property('destinationType');\r",
													"    pm.environment.set(\"hotel.destination_type\", jsonData.destinations[0].destinationType);\r",
													"});"
												],
												"type": "text/javascript",
												"packages": {}
											}
										}
									],
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}",
												"type": "text"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"destination\": \"Hồ Chí Minh\"\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/b2c/hotel/destination/search",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"b2c",
												"hotel",
												"destination",
												"search"
											]
										},
										"description": "# Destination Search API Documentation\n\n## Overview\n\nThis API is used to search hotel for destinations based on the location name input by the user. The returned results include detailed information about various places such as museums, squares, or landmarks in different provinces.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/b2c/hotel/destination/hotels`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\n``` json\n{\n  \"destination\": \"Hồ Chí Minh\"\n}\n\n ```\n\n---\n\n## Request Field Description\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| destination | string | ✅ | Name of the location to search (có dấu) |\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/b2c/hotel/destination/search' \\\n--header 'Authorization: Bearer {token}' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"destination\": \"Hồ Chí Minh\"\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"destinations\": [\n    {\n      \"providerCode\": \"hotel.provider1\",\n      \"destinationId\": \"6334955\",\n      \"name\": \"Ho Chi Minh Square\",\n      \"nameVN\": \"Quảng trường Hồ Chí Minh\",\n      \"destinationType\": \"point_of_interest\",\n      \"countryCode\": \"VN\",\n      \"address\": \"Ho Chi Minh Square, Vinh, Nghe An Province, Vietnam\",\n      \"addressVN\": \"Quảng trường Hồ Chí Minh, Vinh, Nghệ An (tỉnh), Việt Nam\",\n      \"location\": {\n        \"latitude\": 18.670763,\n        \"longitude\": 105.690878\n      }\n    },\n    {\n      \"providerCode\": \"hotel.provider1\",\n      \"destinationId\": \"6223115\",\n      \"name\": \"Ho Chi Minh Museum\",\n      \"nameVN\": \"Bảo tàng Hồ Chí Minh\",\n      \"destinationType\": \"point_of_interest\",\n      \"countryCode\": \"VN\",\n      \"address\": \"Ho Chi Minh Museum, Pleiku, Gia Lai Province, Vietnam\",\n      \"addressVN\": \"Bảo tàng Hồ Chí Minh, Pleiku, Gia Lai (tỉnh), Việt Nam\",\n      \"location\": {\n        \"latitude\": 13.986353,\n        \"longitude\": 108.006098\n      }\n    },\n    {\n      \"providerCode\": \"hotel.provider1\",\n      \"destinationId\": \"5130067\",\n      \"name\": \"Ho Chi Minh City (SGN-Tan Son Nhat Intl.)\",\n      \"nameVN\": \"Thành phố Hồ Chí Minh (SGN-Sân bay quốc tế Tân Sơn Nhất)\",\n      \"destinationType\": \"airport\",\n      \"countryCode\": \"VN\",\n      \"address\": \"Ho Chi Minh City, Vietnam (SGN-Tan Son Nhat Intl.)\",\n      \"addressVN\": \"Thành phố Hồ Chí Minh, Việt Nam (SGN-Sân bay quốc tế Tân Sơn Nhất)\",\n      \"location\": {\n        \"latitude\": 10.813263,\n        \"longitude\": 106.662118\n      }\n    }\n  ]\n}\n\n ```\n\n---\n\n## Response Field Description\n\n### Root Object\n\n| Field | Type | Description |\n| --- | --- | --- |\n| destinations | `array` | List of matching destinations for the keyword |\n\n---\n\n### Destination Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| providerCode | string | hotel.provider1 | Supplier/provider code |\n| destinationId | string | 6334955 | Unique ID of the destination |\n| name | string | Ho Chi Minh Square | Name of the place (in English) |\n| nameVN | string | Quảng trường Hồ Chí Minh | Name of the place (in Vietnamese) |\n| destinationType | string | point_of_interest | Type of destination (`point_of_interest`, etc.) |\n| countryCode | string | VN | Country code (ISO standard) |\n| address | string | Ho Chi Minh Square, Vinh, ... | Full address (in English) |\n| addressVN | string | Quảng trường Hồ Chí Minh, Vinh, ... | Full address (in Vietnamese) |\n| location | object | `{ \"latitude\": 18.67, \"longitude\": 105.69 }` | Geographic coordinates (latitude & longitude) |\n\n---\n\n## Country Code Reference\n\n| Code | Country Name |\n| --- | --- |\n| VN | Vietnam |\n| IN | India |\n| TH | Thailand |\n| US | United States |\n| ... | ... |\n\n---\n\n## Notes\n\nThe API return multiple locations"
									},
									"response": []
								},
								{
									"name": "2. Search Hotels",
									"event": [
										{
											"listen": "test",
											"script": {
												"exec": [
													"pm.test(\"Return status code is 200\", function () {\r",
													"    pm.response.to.have.status(200);\r",
													"});\r",
													"\r",
													"pm.test(\"Hotels has value\", function () {\r",
													"    const jsonData = pm.response.json();\r",
													"    pm.expect(jsonData.solutions[0]).to.have.property('solutionId');\r",
													"    pm.environment.set(\"hotel.hotel_solution_id\", jsonData.solutions[0].solutionId);\r",
													"\r",
													"    pm.expect(jsonData.solutions[0]).to.have.property('id');\r",
													"    pm.environment.set(\"hotel.hotel_id\", jsonData.solutions[0].id);\r",
													"});"
												],
												"type": "text/javascript",
												"packages": {}
											}
										}
									],
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}",
												"type": "text"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"providerCode\": \"{{hotel.provider_code}}\",\r\n    \"destinationId\": \"{{hotel.destination_id}}\",\r\n    \"destinationType\": \"{{hotel.destination_type}}\",\r\n    \"checkInDate\": \"2025-08-01\",\r\n    \"checkOutDate\": \"2025-08-15\",\r\n    \"guests\": {\r\n        \"adults\": 3,\r\n        \"children\": 3,\r\n        \"childAges\": [1, 14, 10],\r\n        \"rooms\": 3\r\n    }\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/search",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"search"
											]
										},
										"description": "# Hotel Search API Documentation\n\n## Overview\n\nThis API allows searching for hotels based on location (destination), date, and guest information. The results include hotel names, ratings, prices, images, amenities, and availability details.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/search`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\n``` json\n{\n  \"providerCode\": \"{{hotel.provider_code}}\",\n  \"destinationId\": \"{{hotel.destination_id}}\",\n  \"destinationType\": \"{{hotel.destination_type}}\",\n  \"checkInDate\": \"2025-06-01\",\n  \"checkOutDate\": \"2025-06-15\",\n  \"guests\": {\n    \"adults\": 3,\n    \"children\": 3,\n    \"childAges\": [0, 14, 10],\n    \"rooms\": 3\n  }\n}\n\n ```\n\n---\n\n## Request Field Description\n\nThe main request body contains the following fields:\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| providerCode | string | ✅ | `\"hotel.provider1\"` | Provider’s code returned from Destination Search API |\n| destinationId | string | ✅ | `\"5130067\"` | Destination ID from the Destination Search API |\n| destinationType | string | ✅ | `\"airport\"` | Type of destination (`airport`, `point_of_interest`, etc.) |\n| checkInDate | string | ✅ | `\"2025-06-01\"` | Format: `YYYY-MM-DD` |\n| checkOutDate | string | ✅ | `\"2025-06-15\"` | Format: `YYYY-MM-DD` |\n| guests | object | ✅ | (see `guests` object below) | Guest and room configuration |\n\n### `guests` Object\n\nThe `guests` object contains the following fields:\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| adults | integer | ✅ | `3` | Number of adult guests |\n| children | integer | ✅ | `3` | Number of child guests |\n| childAges | array | ✅ | `[1, 14, 10]` | List of children's ages (same length as `children`) |\n| rooms | integer | ✅ | `3` | Number of rooms |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/hotel/search' \\\n--header 'Authorization: Bearer {token}' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"providerCode\": \"hotel.provider1\",\n    \"destinationId\": \"5130067\",\n    \"destinationType\": \"airport\",\n    \"checkInDate\": \"2025-06-01\",\n    \"checkOutDate\": \"2025-06-15\",\n    \"guests\": {\n        \"adults\": 3,\n        \"children\": 3,\n        \"childAges\": [1, 14, 10],\n        \"rooms\": 3\n    }\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"solutions\": [\n    {\n      \"id\": \"12622279\",\n      \"providerCode\": \"hotel.provider1\",\n      \"solutionId\": \"6512bd43d9caa6e02c990b0a82652dca\",\n      \"name\": \"Sherwood Residence\",\n      \"address\": \"127 Pasteur, Q.3  ,TP.Hồ Chí Minh\",\n      \"review\": {\n        \"rate\": 4.7,\n        \"reviewCount\": 1186,\n        \"label\": \"\"\n      },\n      \"amenities\": [\n        {\n          \"id\": \"1073744272\",\n          \"name\": \"Covered parking\",\n          \"groupName\": \"\",\n          \"categories\": []\n        },\n        {\n          \"id\": \"2349\",\n          \"name\": \"Separate smoking area\",\n          \"groupName\": \"\",\n          \"categories\": []\n        },\n        {\n          \"id\": \"3862\",\n          \"name\": \"Self parking (surcharge)\",\n          \"groupName\": \"\",\n          \"categories\": [\"parking\"]\n        },\n        {\n          \"id\": \"2390\",\n          \"name\": \"Free Wifi\",\n          \"groupName\": \"\",\n          \"categories\": [\"wifi\"]\n        },\n        {\n          \"id\": \"2419\",\n          \"name\": \"Wheelchair accessible\",\n          \"groupName\": \"\",\n          \"categories\": [\"accessibility\"]\n        },\n        {\n          \"id\": \"1073744634\",\n          \"name\": \"Wheelchair accessible elevator access\",\n          \"groupName\": \"\",\n          \"categories\": []\n        },\n        {\n          \"id\": \"2014\",\n          \"name\": \"Children's pool\",\n          \"groupName\": \"\",\n          \"categories\": [\"swimming_pool\"]\n        }\n      ],\n      \"thumbnails\": [\n        {\n          \"heroImage\": true,\n          \"category\": 3,\n          \"links\": {\n            \"tiny\": \"https://domain/012236f0_t.jpg\",\n            \"medium\": \"https://domain/012236f0_b.jpg\",\n            \"large\": \"https://domain/012236f0_z.jpg\"\n          },\n          \"caption\": \"Main photo\"\n        }\n      ],\n      \"type\": \"APARTHOTEL\",\n      \"rating\": 5.0,\n      \"price\": {\n        \"pricePerNight\": {\n          \"discountedAmount\": 2264000.0,\n          \"originalAmount\": 2553000.0\n        },\n        \"totalAmount\": 109687000.0,\n        \"taxIncluded\": true,\n        \"currency\": \"VND\",\n        \"totalPayAtHotel\": 0.0,\n        \"refundable\": false\n      },\n      \"centerInfo\": {\n        \"name\": \"\",\n        \"distanceToCenter\": 4.805,\n        \"unit\": \"km\"\n      },\n      \"isAvailable\": true,\n      \"availability\": 4\n    }\n  ]\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response contains a `solutions` array.\n\n| Field Path | Type | Example | Description |\n| --- | --- | --- | --- |\n| `solutions` | array | `[...]` | List of hotel solutions that match the search criteria. Each element is an object representing a hotel. |\n\n### `solutions[]` Object\n\nEach object in the `solutions` array has the following structure:\n\n| Field Path | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"12622279\"` | Unique ID of the hotel from the provider. |\n| `providerCode` | string | `\"hotel.provider1\"` | Code of the hotel provider. |\n| `solutionId` | string | `\"6512bd43d9caa6e02c990b0a82652dca\"` | Unique identifier for this specific search solution/option. |\n| `name` | string | `\"Sherwood Residence\"` | Name of the hotel. |\n| `address` | string | `\"127 Pasteur, Q.3 ,TP.Hồ Chí Minh\"` | Physical address of the hotel. |\n| `review` | object | (see `review` object below) | Contains review and rating information for the hotel. |\n| `amenities` | array | `[...]` | List of amenities. Each element is an `amenity` object (see below). |\n| `thumbnails` | array | `[...]` | List of thumbnails. Each element is a `thumbnail` object (see below). |\n| `type` | string | `\"APARTHOTEL\"` | Type of accommodation (e.g., HOTEL, APARTHOTEL, RESORT). |\n| `rating` | decimal | `5.0` | Star rating of the hotel (e.g., 3.0, 4.5, 5.0). |\n| `price` | object | (see `price` object below) | Contains pricing information for the hotel stay. |\n| `centerInfo` | object | (see `centerInfo` object below) | Information about the hotel's proximity to a central point. |\n| `isAvailable` | boolean | `true` | Indicates if the hotel has availability for the requested criteria. |\n| `availability` | integer | `4` | Number of rooms or units available that match the search criteria. |\n\n### `solutions[].review` Object\n\nThe `review` object contains:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `rate` | decimal | `4.7` | Average guest rating for the hotel. |\n| `reviewCount` | integer | `1186` | Total number of reviews received for the hotel. |\n| `label` | string | `\"\"` | A descriptive label for the review score (e.g., \"Excellent\", \"Good\", can be empty). |\n\n### `solutions[].amenities[]` Object\n\nEach object in the `amenities` array has the following structure:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"1073744272\"` | Unique identifier for the amenity. |\n| `name` | string | `\"Covered parking\"` | Name or description of the amenity. |\n| `groupName` | string | `\"\"` | Name of the group this amenity belongs to (e.g., \"Parking\", \"Internet\", can be empty). |\n| `categories` | array | `[\"parking\"]` or `[]` | List of category tags associated with the amenity (e.g., `wifi`, `parking`, `accessibility`). Can be empty. |\n\n### `solutions[].thumbnails[]` Object\n\nEach object in the `thumbnails` array has the following structure:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `heroImage` | boolean | `true` | Indicates if this is the main image for the hotel. |\n| `category` | integer | `3` | Numeric category ID for the image (e.g., exterior, lobby, room). |\n| `links` | object | (see `links` object below) | Contains URLs for different sizes of the image. |\n| `caption` | string | `\"Main photo\"` | A descriptive caption for the image (e.g., “Room”, “Lobby”). |\n\n### `solutions[].thumbnails[].links` Object\n\nThe `links` object within each thumbnail contains:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `tiny` | string | `\"https://domain/012236f0_t.jpg\"` | URL for a tiny/small version of the image. |\n| `medium` | string | `\"https://domain/012236f0_b.jpg\"` | URL for a medium-sized version of the image. |\n| `large` | string | `\"https://domain/012236f0_z.jpg\"` | URL for a large version of the image. |\n\n### `solutions[].price` Object\n\nThe `price` object contains:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `pricePerNight` | object | (see `pricePerNight` object below) | Details about the per-night pricing. |\n| `totalAmount` | decimal | `109687000.0` | Total price for the entire stay based on the selected dates and guests. |\n| `taxIncluded` | boolean | `true` | Indicates whether taxes are included in the `totalAmount`. |\n| `currency` | string | `\"VND\"` | Currency code for all price amounts (e.g., \"VND\", \"USD\"). |\n| `totalPayAtHotel` | decimal | `0.0` | Amount that needs to be paid directly at the hotel (often 0 for prepaid rates). |\n| `refundable` | boolean | `false` | Indicates whether the booking at this price is refundable. |\n\n### `solutions[].price.pricePerNight` Object\n\nThe `pricePerNight` object within the `price` object contains:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `discountedAmount` | decimal | `2264000.0` | The discounted price per night for the room. |\n| `originalAmount` | decimal | `2553000.0` | The original price per night before any discounts. |\n\n### `solutions[].centerInfo` Object\n\nThe `centerInfo` object contains:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `name` | string | `\"\"` | Name of the city center or reference point (can be empty). |\n| `distanceToCenter` | decimal | `4.805` | Distance from the hotel to the defined center point. |\n| `unit` | string | `\"km\"` | Unit of measurement for `distanceToCenter` (e.g., \"km\", \"miles\"). |\n\n---\n\n## Notes\n\n- All dates in the request should be in ISO 8601 format (YYYY-MM-DD).\n    \n- This API supports complex guest configurations, including the number of children and their specific ages.\n    \n- Hotel data returned includes pricing details (per night and total), refundability status, and distance from a central point.\n    \n- The `solutionId` from the response should be used in subsequent API calls to fetch more detailed hotel information or to proceed with a booking.\n    \n- Multiple thumbnail images may be returned for a hotel. It's recommended to use the image where `heroImage` is `true` as the primary display image.\n    \n- Not all amenities will have a `groupName` or `categories`; these fields should be treated as optional.\n    \n- **Request Constraint:** The number of `rooms` requested must be less than or equal to the number of `adults`.\n    \n- **Date Validation Rules:**\n    \n    - Check-in and check-out dates must be within 365 days from the current date.\n        \n    - The maximum stay duration is 28 nights.\n        \n    - The `checkOutDate` must be after the `checkInDate`.\n        \n\n---"
									},
									"response": []
								},
								{
									"name": "3. Get Hotel Details",
									"event": [
										{
											"listen": "test",
											"script": {
												"exec": [
													"pm.test(\"Return status code is 200\", function () {\r",
													"    pm.response.to.have.status(200);\r",
													"});\r",
													"\r",
													"pm.test(\"Solutions has value\", function () {\r",
													"    const jsonData = pm.response.json();\r",
													"    pm.expect(jsonData.solution).to.have.property('solutionId');\r",
													"    pm.environment.set(\"hotel.pricing_solution_id\", jsonData.solution.solutionId);\r",
													"});"
												],
												"type": "text/javascript",
												"packages": {}
											}
										}
									],
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}"
											},
											{
												"key": "Content-Type",
												"value": "application/json"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"ProviderCode\": \"{{hotel.provider_code}}\",\r\n    \"HotelId\": \"{{hotel.hotel_id}}\",\r\n    \"Language\": \"vi-VN\"\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel"
											]
										},
										"description": "# GET Hotel Details Search API Documentation\n\nThe Hotel Details API allows users to retrieve detailed information about a specific hotel, including its address, ratings, amenities, images, policies, and more. This is typically used after a hotel has been selected from a list (e.g., from a search results API) to display its full profile.\n\n## Overview\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\n``` json\n{\n  \"ProviderCode\": \"{{hotel.provider_code}}\",\n  \"HotelId\": \"{{hotel.hotel_id}}\",\n  \"Language\": \"vi-VN\"\n}\n\n ```\n\n---\n\n## Request Field Description\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `ProviderCode` | string | ✅ | `\"hotel.provider1\"` | Provider’s code returned from Hotel Search API. |\n| `HotelId` | string | ✅ | `\"12622279\"` | Hotel ID from the Hotel Search API . |\n| `Language` | string | ✅ | `\"vi-VN\"` | The language code for the response content (e.g., \"vi-VN\", \"en-US\"). |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/hotel' \\\n--header 'Authorization: Bearer {token}' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"ProviderCode\": \"hotel.provider1\",\n    \"HotelId\": \"12622279\",\n    \"Language\": \"vi-VN\"\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"rank\": 22821,\n  \"active\": true,\n  \"multiUnit\": true,\n  \"hotelId\": \"12622279\",\n  \"name\": \"Sherwood Residence\",\n  \"phone\": \"84-28-38232288\",\n  \"fax\": \"84-28-38360783\",\n  \"airports\": {\n    \"preferred\": {\n      \"iataAirportCode\": \"SGN\"\n    }\n  },\n  \"address\": {\n    \"line1\": \"127 Pasteur, Q.3\",\n    \"city\": \"TP.Hồ Chí Minh\",\n    \"countryCode\": \"VN\"\n  },\n  \"ratings\": {\n    \"property\": {\n      \"rating\": \"5.0\",\n      \"type\": \"Star\"\n    },\n    \"guest\": {\n      \"count\": 1186,\n      \"overall\": \"4.7\",\n      \"cleanliness\": \"4.7\",\n      \"service\": \"4.6\",\n      \"comfort\": \"4.7\",\n      \"condition\": \"4.6\",\n      \"neighborhood\": \"4.2\",\n      \"recommendationPercent\": \"87.8\"\n    }\n  },\n  \"location\": {\n    \"coordinates\": {\n      \"latitude\": 10.782844,\n      \"longitude\": 106.693295\n    }\n  },\n  \"category\": {\n    \"id\": \"22\",\n    \"name\": \"Khách sạn căn hộ\"\n  },\n  \"businessModel\": {\n    \"expediaCollect\": true,\n    \"propertyCollect\": false\n  },\n  \"checkIn\": {\n    \"beginTime\": \"14:00\",\n    \"endTime\": \"mọi thời điểm\",\n    \"instructions\": [\n      \"Có thể thu phí thêm người với mức phí khác nhau, tùy chính sách riêng\",\n      \"Có thể cần giấy tờ tùy thân hợp pháp có ảnh và cần đặt cọc bằng thẻ tín dụng, thẻ ghi nợ hoặc tiền mặt (cho các chi phí phát sinh - nếu có) khi làm thủ tục nhận phòng\"\n    ],\n    \"specialInstructions\": \"Nhân viên tiếp tân sẽ đón tiếp khách tại nơi lưu trú.\",\n    \"minAge\": 18\n  },\n  \"checkOut\": {\n    \"time\": \"12:00\"\n  },\n  \"fees\": {\n    \"mandatory\": \"<p class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>Bạn sẽ được yêu cầu thanh toán cho nơi lưu trú các khoản phí sau. Phí có thể bao gồm các loại thuế hiện hành:</p> <ul class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;><li class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>Đặt cọc: 1000000 VND mỗi nơi lưu trú, mỗi đêm</li></ul> <p class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>Chúng tôi đã liệt kê mọi khoản phí được nơi lưu trú cung cấp thông tin. </p>\",\n    \"optional\": {\n      \"feeItems\": [\n        {\n          \"description\": \"Có thể trả phòng muộn với phụ phí (tùy tình hình thực tế)\"\n        },\n        {\n          \"description\": \"Phí giường gấp: 900000.0 VND mỗi ngày\"\n        }\n      ],\n      \"note\": \"Danh sách trên có thể không đầy đủ. Phí và đặt cọc có thể không bao gồm thuế và có thể thay đổi.\"\n    }\n  },\n  \"policies\": {\n    \"knowBeforeYouGo\": [\n      \"1 trẻ 11 tuổi trở xuống được ở miễn phí cùng cha mẹ hoặc người giám hộ nếu sử dụng giường có sẵn.\",\n      \"Khách không được phép mang vật nuôi, bao gồm cả vật nuôi hỗ trợ người khuyết tật, vào nơi lưu trú này.\"\n    ]\n  },\n  \"attributes\": {\n    \"pets\": [\n      {\n        \"id\": \"2808\",\n        \"name\": \"Không được mang vật nuôi hỗ trợ người khuyết tật\"\n      },\n      {\n        \"id\": \"2050\",\n        \"name\": \"Không được phép mang vật nuôi\"\n      }\n    ],\n    \"general\": [\n      {\n        \"id\": \"1073745142\",\n        \"name\": \"Đơn vị quản lý nơi lưu trú chuyên nghiệp\"\n      },\n      {\n        \"id\": \"1073745021\",\n        \"name\": \"Để phòng trống giữa các lượt khách:  48 giờ\",\n        \"value\": \"48 giờ\"\n      }\n    ]\n  },\n  \"amenities\": [\n    {\n      \"id\": \"1073744272\",\n      \"name\": \"Bãi đậu xe có mái che\",\n      \"groupName\": \"\"\n    },\n    {\n      \"id\": \"3862\",\n      \"name\": \"Bãi đậu xe tự phục vụ (phụ phí)\",\n      \"categories\": [\"parking\"],\n      \"groupName\": \"\"\n    }\n  ],\n  \"images\": [\n    {\n      \"heroImage\": true,\n      \"category\": 3,\n      \"links\": {\n        \"large\": {\n          \"method\": \"GET\",\n          \"href\": \"https://i.travelapi.com/lodging/13000000/12630000/12622300/12622279/012236f0_z.jpg\"\n        },\n        \"medium\": {\n          \"method\": \"GET\",\n          \"href\": \"https://i.travelapi.com/lodging/13000000/12630000/12622300/12622279/012236f0_b.jpg\"\n        },\n        \"tiny\": {\n          \"method\": \"GET\",\n          \"href\": \"https://i.travelapi.com/lodging/13000000/12630000/12622300/12622279/012236f0_t.jpg\"\n        }\n      },\n      \"caption\": \"Ảnh chính\"\n    },\n    {\n      \"heroImage\": false,\n      \"category\": 10001,\n      \"links\": {\n        \"large\": {\n          \"method\": \"GET\",\n          \"href\": \"https://i.travelapi.com/lodging/13000000/12630000/12622300/12622279/0154a74c_z.jpg\"\n        },\n        \"medium\": {\n          \"method\": \"GET\",\n          \"href\": \"https://i.travelapi.com/lodging/13000000/12630000/12622300/12622279/0154a74c_b.jpg\"\n        },\n        \"tiny\": {\n          \"method\": \"GET\",\n          \"href\": \"https://i.travelapi.com/lodging/13000000/12630000/12622300/12622279/0154a74c_t.jpg\"\n        }\n      },\n      \"caption\": \"Khu sảnh\"\n    }\n  ],\n  \"onsitePayments\": {\n    \"currency\": \"VND\",\n    \"types\": [\n      {\n        \"id\": \"189\",\n        \"name\": \"Visa\"\n      },\n      {\n        \"id\": \"407\",\n        \"name\": \"Tiền mặt\"\n      }\n    ]\n  },\n  \"rates\": [\n    {\n      \"id\": \"206866680\",\n      \"amenities\": [\n        {\n          \"id\": \"2192\",\n          \"name\": \"Wifi miễn phí\",\n          \"categories\": [\"free_wifi\"],\n          \"groupName\": \"\"\n        }\n      ]\n    },\n    {\n      \"id\": \"388317364\",\n      \"amenities\": [\n        {\n          \"id\": \"2192\",\n          \"name\": \"Wifi miễn phí\",\n          \"categories\": [\"free_wifi\"],\n          \"groupName\": \"\"\n        }\n      ]\n    }\n  ],\n  \"dates\": {\n    \"added\": \"2015-10-06T01:12:59:5130\",\n    \"updated\": \"2024-12-04T04:03:44:4380\"\n  },\n  \"descriptions\": {\n    \"amenities\": \"Hãy tận hưởng nhiều dịch vụ, tiện nghi thể thao, giải trí như hồ bơi ngoài trời, phòng tắm hơi và trung tâm thể dục. Các dịch vụ, tiện ích khác tại Khách sạn căn hộ này bao gồm quyền truy cập Internet không dây miễn phí, dịch vụ tư vấn/hỗ trợ khách và phòng trò chơi.\",\n    \"dining\": \"Khách có thể lựa chọn dùng bữa trưa, bữa tối tại nhà hàng Cafe Central Pasteur chuyên về món ăn mang phong cách quốc tế hoặc nghỉ lại phòng và gọi món với dịch vụ phòng (có giới hạn thời gian). Khách có thể dùng bữa sáng buffet (có phụ phí) từ 6:00 đến 10:30 hàng ngày.\",\n    \"businessAmenities\": \"Có nhiều dịch vụ, tiện ích dành cho khách, bao gồm dịch vụ xe limo/xe đưa đón hạng sang, dịch vụ giặt ủi/giặt khô và quầy tiếp tân phục vụ 24 giờ/ngày. Có bãi đậu xe tự phục vụ (phụ phí) trong khuôn viên.\",\n    \"rooms\": \"Hãy nghỉ ngơi thoải mái như đang ở nhà mình tại một trong 228 phòng được trang bị máy điều hòa với bếp cùng tủ lạnh/tủ đông cỡ lớn và lò vi sóng. Các phòng có ban công riêng. Quý vị sẽ luôn có thể giữ liên lạc bằng kết nối internet không dây miễn phí ngay tại phòng. Tiện nghi phòng bao gồm điện thoại, cùng két bảo mật và bàn.\",\n    \"attractionResult\": {\n      \"note\": \"Khoảng cách được làm tròn đến 0,1 km (hoặc dặm).\",\n      \"attractions\": [\n        {\n          \"name\": \"Khu Lãnh sự\",\n          \"distance\": \"0,5 km\"\n        },\n        {\n          \"name\": \"Tran Hung Dao Temple\",\n          \"distance\": \"1,3 km\"\n        }\n      ],\n      \"airportInfo\": \"Khách có thể đến Sherwood Residence qua Sân bay Quốc tế Tân Sơn Nhất - Quận Tân Bình (SGN), cách khoảng 5,5 km\"\n    },\n    \"location\": \"Tọa lạc tại trung tâm Thành phố Hồ Chí Minh, Sherwood Residence cách Bảo tàng Chứng tích Chiến tranh 6 phút đi bộ và cách Nhà thờ Đức Bà Sài Gòn 10 phút đi bộ.  Khách sạn căn hộ phù hợp cho khách gia đình này cách Diamond Plaza 1 mi (1,6 km) và cách Bưu điện Trung tâm Sài Gòn 1,2 mi (1,9 km).\",\n    \"headline\": \"Gần Diamond Plaza\"\n  },\n  \"statistics\": [\n    {\n      \"id\": \"52\",\n      \"name\": \"Tổng số phòng:  - 228\",\n      \"value\": \"228\"\n    },\n    {\n      \"id\": \"54\",\n      \"name\": \"Số tầng: 20\",\n      \"value\": \"20\"\n    }\n  ],\n  \"chain\": {\n    \"id\": \"0\",\n    \"name\": \"Independent\"\n  },\n  \"brand\": {\n    \"id\": \"0\",\n    \"name\": \"Independent\"\n  },\n  \"spokenLanguages\": {\n    \"en\": {\n      \"id\": \"en\",\n      \"name\": \"Tiếng Anh\"\n    },\n    \"vi\": {\n      \"id\": \"vi\",\n      \"name\": \"Tiếng Việt Nam\"\n    }\n  },\n  \"themes\": [\n    {\n      \"id\": \"2333\",\n      \"name\": \"Nơi lưu trú phù hợp cho gia đình\"\n    },\n    {\n      \"id\": \"2328\",\n      \"name\": \"Nơi lưu trú phù hợp với khách đi công tác\"\n    },\n    {\n      \"id\": \"2337\",\n      \"name\": \"Nơi lưu trú sang trọng\"\n    }\n  ]\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response object directly contains the hotel details:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `rank` | integer | `22821` | Ranking of the hotel. |\n| `active` | boolean | `true` | Indicates if the hotel is currently active. |\n| `multiUnit` | boolean | `true` | Indicates if the property has multiple units (e.g., an apartment hotel). |\n| `hotelId` | string | `\"12622279\"` | Unique identifier for the hotel (matches the ID in the request). |\n| `name` | string | `\"Sherwood Residence\"` | Name of the hotel. |\n| `phone` | string | `\"84-28-38232288\"` | Hotel's phone number. |\n| `fax` | string | `\"84-28-38360783\"` | Hotel's fax number. |\n| `airports` | object | (see `airports` object below) | Contains information about airports relevant to the hotel. |\n| `address` | object | (see `address` object below) | Contains address details of the hotel. |\n| `ratings` | object | (see `ratings` object below) | Contains property and guest rating information. |\n| `location` | object | (see `location` object below) | Geographical location details. |\n| `category` | object | (see `category` object below) | Hotel category information. |\n| `businessModel` | object | (see `businessModel` object below) | Information about the payment collection model. |\n| `checkIn` | object | (see `checkIn` object below) | Check-in policies and information. |\n| `checkOut` | object | (see `checkOut` object below) | Check-out policies. |\n| `fees` | object | (see `fees` object below) | Information about mandatory and optional fees. |\n| `policies` | object | (see `policies` object below) | General hotel policies. |\n| `attributes` | object | (see `attributes` object below) | Contains specific attributes of the hotel. |\n| `amenities` | array of objects | `[...]` (see `amenity` object below) | List of hotel amenities. |\n| `images` | array of objects | `[...]` (see `image` object below) | List of hotel images. |\n| `onsitePayments` | object | (see `onsitePayments` object below) | Information about payment methods accepted on-site. |\n| `rates` | array of objects | `[...]` (see `rate` object below) | Information about available rates. |\n| `dates` | object | (see `dates` object below) | Timestamps related to the hotel data. |\n| `descriptions` | object | (see `descriptions` object below) | Various textual descriptions of the hotel. |\n| `statistics` | array of objects | `[...]` (see `statistic` object below) | Various statistics about the hotel. |\n| `chain` | object | (see `chain` object below) | Hotel chain information. |\n| `brand` | object | (see `brand` object below) | Hotel brand information. |\n| `spokenLanguages` | object | (see `spokenLanguages` object below) | Object mapping language codes to language details spoken at the property. |\n| `themes` | array of objects | `[...]` (see `theme` object below) | List of themes associated with the hotel. |\n\n### `airports` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `preferred` | object | (see `preferred` object below) | Information about the preferred airport. |\n\n### `airports.preferred` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `iataAirportCode` | string | `\"SGN\"` | IATA code of the preferred airport. |\n\n### `address` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `line1` | string | `\"127 Pasteur, Q.3\"` | First line of the hotel's address. |\n| `city` | string | `\"TP.Hồ Chí Minh\"` | City where the hotel is located. |\n| `countryCode` | string | `\"VN\"` | ISO country code (e.g., \"VN\"). |\n\n### `ratings` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `property` | object | (see `property` object below) | Information about the property's rating. |\n| `guest` | object | (see `guest` object below) | Aggregated guest ratings. |\n\n### `ratings.property` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `rating` | string | `\"5.0\"` | The star rating of the property. |\n| `type` | string | `\"Star\"` | Type of rating (e.g., \"Star\"). |\n\n### `ratings.guest` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `count` | integer | `1186` | Number of guest reviews. |\n| `overall` | string | `\"4.7\"` | Overall guest rating score. |\n| `cleanliness` | string | `\"4.7\"` | Guest rating for cleanliness. |\n| `service` | string | `\"4.6\"` | Guest rating for service. |\n| `comfort` | string | `\"4.7\"` | Guest rating for comfort. |\n| `condition` | string | `\"4.6\"` | Guest rating for property condition. |\n| `neighborhood` | string | `\"4.2\"` | Guest rating for the neighborhood. |\n| `recommendationPercent` | string | `\"87.8\"` | Percentage of guests who recommend. |\n\n### `location` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `coordinates` | object | (see `coordinates` object below) | Latitude and longitude coordinates. |\n\n### `location.coordinates` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `latitude` | decimal | `10.782844` | Latitude of the hotel. |\n| `longitude` | decimal | `106.693295` | Longitude of the hotel. |\n\n### `category` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"22\"` | ID of the hotel category. |\n| `name` | string | `\"Khách sạn căn hộ\"` | Name of the hotel category. |\n\n### `businessModel` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `expediaCollect` | boolean | `true` | Indicates if Expedia collects payment. |\n| `propertyCollect` | boolean | `false` | Indicates if the property collects payment. |\n\n### `checkIn` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `beginTime` | string | `\"14:00\"` | Check-in start time. |\n| `endTime` | string | `\"mọi thời điểm\"` | Check-in end time (e.g., \"any time\"). |\n| `instructions` | array of strings | `[\"Có thể thu phí thêm người...\", \"Có thể cần giấy tờ tùy thân...\"]` | List of check-in instructions for guests. |\n| `specialInstructions` | string | `\"Nhân viên tiếp tân sẽ đón tiếp khách tại nơi lưu trú.\"` | Special check-in instructions. |\n| `minAge` | integer | `18` | Minimum age required for check-in. |\n\n### `checkOut` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `time` | string | `\"12:00\"` | Check-out time. |\n\n### `fees` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `mandatory` | string | `\"`  <br>  <br>`Bạn sẽ được yêu cầu thanh toán...\"` | HTML string detailing mandatory fees. |\n| `optional` | object | (see `optional` object below) | Details about optional fees. |\n\n### `fees.optional` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `feeItems` | array of objects | `[{\"description\": \"Có thể trả phòng muộn...\"}]` (see `feeItem` object below) | List of optional fee items. |\n| `note` | string | `\"Danh sách trên có thể không đầy đủ...\"` | Additional notes regarding optional fees. |\n\n### `fees.optional.feeItems[]` (Fee Item) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `description` | string | `\"Có thể trả phòng muộn với phụ phí (tùy tình hình thực tế)\"` | Description of an optional fee. |\n\n### `policies` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `knowBeforeYouGo` | array of strings | `[\"1 trẻ 11 tuổi trở xuống được ở miễn phí...\", \"Khách không được phép...\"]` | List of important policies guests should know before arrival. |\n\n### `attributes` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `pets` | array of objects | `[...]` (see `attributeItem` object below) | Pet policy attributes. |\n| `general` | array of objects | `[...]` (see `attributeItem` object below) | General hotel attributes. |\n\n### `attributes.pets[]` / `attributes.general[]` (Attribute Item) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2808\"` (pets), `\"1073745142\"` (general) | ID of the attribute. |\n| `name` | string | `\"Không được mang vật nuôi hỗ trợ người khuyết tật\"` | Name/description of the attribute. |\n| `value` | string | `null` (pets, in sample), `\"48 giờ\"` (general, in sample) | Value associated with the attribute (if applicable). |\n\n### `amenities[]` (Amenity) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"1073744272\"` | ID of the amenity. |\n| `name` | string | `\"Bãi đậu xe có mái che\"` | Name of the amenity. |\n| `categories` | array of strings | `[]` or `[\"parking\"]` | Categories the amenity belongs to (e.g., \"parking\"). Optional. |\n| `groupName` | string | `\"\"` | Group name for the amenity (can be empty). |\n\n### `images[]` (Image) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `heroImage` | boolean | `true` | Indicates if this is a primary/hero image for the hotel. |\n| `category` | integer | `3` | Category ID of the image. |\n| `links` | object | (see `image.links` object below) | Contains links to different sizes of the image. |\n| `caption` | string | `\"Ảnh chính\"` | Caption for the image. |\n\n### `images[].links` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `large` | object | `{\"method\": \"GET\", \"href\": \"https://..._z.jpg\"}` (see `imageLinkDetail`) | Link object for the large version of the image. |\n| `medium` | object | `{\"method\": \"GET\", \"href\": \"https://..._b.jpg\"}` (see `imageLinkDetail`) | Link object for the medium version of the image. |\n| `tiny` | object | `{\"method\": \"GET\", \"href\": \"https://..._t.jpg\"}` (see `imageLinkDetail`) | Link object for the tiny/thumbnail version of the image. |\n\n### `images[].links.large` / `medium` / `tiny` (Image Link Detail) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `method` | string | `\"GET\"` | HTTP method to retrieve the image (e.g., \"GET\"). |\n| `href` | string | `\"https://...z.jpg\"` | URL of the image. |\n\n### `onsitePayments` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `currency` | string | `\"VND\"` | Currency code for on-site payments (e.g., \"VND\"). |\n| `types` | array of objects | `[...]` (see `paymentType` object below) | List of accepted payment types. |\n\n### `onsitePayments.types[]` (Payment Type) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"189\"` | ID of the payment type. |\n| `name` | string | `\"Visa\"` | Name of the payment type (e.g., \"Visa\", \"Tiền mặt\"). |\n\n### `rates[]` (Rate) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"206866680\"` | ID of the rate. |\n| `amenities` | array of objects | `[...]` (see `rate.amenity` object below) | Amenities specifically associated with this rate. |\n\n### `rates[].amenities[]` (Rate Amenity) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2192\"` | ID of the rate-specific amenity. |\n| `name` | string | `\"Wifi miễn phí\"` | Name of the rate-specific amenity. |\n| `categories` | array of strings | `[\"free_wifi\"]` | Categories for the rate-specific amenity. Optional. |\n| `groupName` | string | `\"\"` | Group name for the rate-specific amenity. |\n\n### `dates` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `added` | string | `\"2015-10-06T01:12:59:5130\"` | ISO 8601 timestamp indicating when the hotel data was added. |\n| `updated` | string | `\"2024-12-04T04:03:44:4380\"` | ISO 8601 timestamp indicating when the hotel data was last updated. |\n\n### `descriptions` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `amenities` | string | `\"Hãy tận hưởng nhiều dịch vụ, tiện nghi thể thao, giải trí...\"` | Description of hotel amenities. |\n| `dining` | string | `\"Khách có thể lựa chọn dùng bữa trưa, bữa tối...\"` | Description of dining options. |\n| `businessAmenities` | string | `\"Có nhiều dịch vụ, tiện ích dành cho khách...\"` | Description of business amenities. |\n| `rooms` | string | `\"Hãy nghỉ ngơi thoải mái như đang ở nhà mình...\"` | Description of the rooms. |\n| `attractionResult` | object | (see `attractionResult` object below) | Information about nearby attractions. |\n| `location` | string | `\"Tọa lạc tại trung tâm Thành phố Hồ Chí Minh...\"` | General description of the hotel's location. |\n| `headline` | string | `\"Gần Diamond Plaza\"` | A short headline or tagline for the hotel. |\n\n### `descriptions.attractionResult` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `note` | string | `\"Khoảng cách được làm tròn đến 0,1 km (hoặc dặm).\"` | Note about distance calculation for attractions. |\n| `attractions` | array of objects | `[{\"name\": \"Khu Lãnh sự\", \"distance\": \"0,5 km\"}]` (see `attraction` below) | List of nearby attractions. |\n| `airportInfo` | string | `\"Khách có thể đến Sherwood Residence qua Sân bay...\"` | Information about airport accessibility. |\n\n### `descriptions.attractionResult.attractions[]` (Attraction) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `name` | string | `\"Khu Lãnh sự\"` | Name of the attraction. |\n| `distance` | string | `\"0,5 km\"` | Distance to the attraction. |\n\n### `statistics[]` (Statistic) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"52\"` | ID of the statistic. |\n| `name` | string | `\"Tổng số phòng: - 228\"` | Name/description of the statistic. |\n| `value` | string | `\"228\"` | Value of the statistic. |\n\n### `chain` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"0\"` | ID of the hotel chain (\"0\" for independent). |\n| `name` | string | `\"Independent\"` | Name of the hotel chain (e.g., \"Independent\"). |\n\n### `brand` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"0\"` | ID of the hotel brand (\"0\" for independent). |\n| `name` | string | `\"Independent\"` | Name of the hotel brand (e.g., \"Independent\"). |\n\n### `spokenLanguages` Object\n\nThis object contains language codes as keys (e.g., `en`, `vi`).\n\n| Field Path | Type | Example | Description |\n| --- | --- | --- | --- |\n| `{lang_code}` | object | (see `languageDetail` object below, e.g., `en`) | Details for a specific language. |\n\n### `spokenLanguages.{lang_code}` (Language Detail) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"en\"` | Language code (e.g., \"en\", \"vi\"). |\n| `name` | string | `\"Tiếng Anh\"` | Name of the language (e.g., \"Tiếng Anh\", \"Tiếng Việt Nam\"). |\n\n### `themes[]` (Theme) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2333\"` | ID of the theme. |\n| `name` | string | `\"Nơi lưu trú phù hợp cho gia đình\"` | Name of the theme. |\n\n---\n\n## Notes\n\n- The response provides comprehensive static details about the hotel.\n    \n- Content localization is driven by the `Language` parameter in the request body, affecting fields like `name`, `descriptions`, `amenities[].name`, etc.\n    \n- The structure of this response is very similar to the `hotelContent` object found in the \"Rooms Search API\" response."
									},
									"response": []
								},
								{
									"name": "4. Search Rooms",
									"event": [
										{
											"listen": "test",
											"script": {
												"exec": [
													"pm.test(\"Return status code is 200\", function () {\r",
													"    pm.response.to.have.status(200);\r",
													"});\r",
													"\r",
													"pm.test(\"Rooms has value\", function () {\r",
													"    const jsonData = pm.response.json();\r",
													"    pm.expect(jsonData).to.have.property('solutionId');\r",
													"    pm.environment.set(\"hotel.room_solution_id\", jsonData.solutionId);\r",
													"\r",
													"    pm.expect(jsonData.hotels).to.have.property('id');\r",
													"    pm.environment.set(\"hotel.hotel_id\", jsonData.hotels.id);\r",
													"\r",
													"    pm.expect(jsonData.hotels.rooms[0]).to.have.property('id');\r",
													"    pm.environment.set(\"hotel.room_id\", jsonData.hotels.rooms[0].id);\r",
													"\r",
													"    pm.expect(jsonData.hotels.rooms[0].priceOptions[0]).to.have.property('id');\r",
													"    pm.environment.set(\"hotel.price_option_id\", jsonData.hotels.rooms[0].priceOptions[0].id);\r",
													"\r",
													"    pm.expect(jsonData.hotels.rooms[0].priceOptions[0].bedOptions[0]).to.have.property('id');\r",
													"    pm.environment.set(\"hotel.bed_option_id\", jsonData.hotels.rooms[0].priceOptions[0].bedOptions[0].id);\r",
													"});"
												],
												"type": "text/javascript",
												"packages": {}
											}
										}
									],
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}",
												"type": "text"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"providerCode\": \"{{hotel.provider_code}}\",\r\n    \"hotelId\": \"{{hotel.hotel_id}}\",\r\n    \"solutionId\": \"{{hotel.hotel_solution_id}}\",\r\n    \"checkInDate\": \"2025-08-01\",\r\n    \"checkOutDate\": \"2025-08-15\",\r\n    \"guests\": {\r\n        \"adults\": 3,\r\n        \"children\": 3,\r\n        \"childAges\": [ 1, 14, 10],\r\n        \"rooms\": 3\r\n    }\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/room/search",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"room",
												"search"
											]
										},
										"description": "# Rooms Search API Documentation\n\n## Overview\n\nThis API allows you to search for available hotel rooms based on specific criteria including dates, guest information, and hotel details.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/room/search`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\n``` json\n{\n  \"providerCode\": \"{{hotel.provider_code}}\",\n  \"hotelId\": \"{{hotel.hotel_id}}\",\n  \"solutionId\": \"{{hotel.hotel_solution_id}}\",\n  \"checkInDate\": \"2025-06-01\",\n  \"checkOutDate\": \"2025-06-15\",\n  \"guests\": {\n    \"adults\": 3,\n    \"children\": 3,\n    \"childAges\": [1, 14, 10],\n    \"rooms\": 3\n  }\n}\n\n ```\n\n---\n\n## Request Field Description\n\nThe main request body contains the following fields:\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `providerCode` | string | ✅ | `\"hotel.provider1\"` | Provider’s code from Hotel Search API |\n| `hotelId` | string | ✅ | `\"12622279\"` | Hotel ID from the Hotel Search API |\n| `solutionId` | string | ✅ | `\"6512bd43d9caa6e02c990b0a82652dca\"` | Solution ID from the Hotel Search API |\n| `checkInDate` | string | ✅ | `\"2025-06-01\"` | Format: `YYYY-MM-DD` |\n| `checkOutDate` | string | ✅ | `\"2025-06-15\"` | Format: `YYYY-MM-DD` |\n| `guests` | object | ✅ | (see `guests` object below) | Guest and room configuration |\n\n### `guests` Object\n\nThe `guests` object contains the following fields:\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `adults` | integer | ✅ | `3` | Number of adult guests |\n| `children` | integer | Optional | `3` | Number of child guests (default: 0) |\n| `childAges` | array | Optional | `[1, 14, 10]` | List of children's ages (same length as `children`) |\n| `rooms` | integer | ✅ | `3` | Number of rooms |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/hotel/room/search' \\\n--header 'Authorization: Bearer {token}' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"providerCode\": \"hotel.provider1\",\n    \"hotelId\": \"12622279\",\n    \"solutionId\": \"6512bd43d9caa6e02c990b0a82652dca\",\n    \"checkInDate\": \"2025-06-01\",\n    \"checkOutDate\": \"2025-06-15\",\n    \"guests\": {\n         \"adults\": 3,\n        \"children\": 3,\n        \"childAges\": [1, 14, 10],\n        \"rooms\": 3\n    }\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"providerCode\": \"hotel.provider1\",\n  \"solutionId\": \"bd48cf6b449f15a750e8fde99ab35718\",\n  \"hotels\": {\n    \"id\": \"12622279\",\n    \"name\": \"Sherwood Residence\",\n    \"vat\": false,\n    \"hotelContent\": {\n      \"rank\": 22821,\n      \"active\": true,\n      \"multiUnit\": true,\n      \"hotelId\": \"12622279\",\n      \"name\": \"Sherwood Residence\",\n      \"phone\": \"84-28-38232288\",\n      \"fax\": \"84-28-38360783\",\n      \"airports\": {\n        \"preferred\": {\n          \"iataAirportCode\": \"SGN\"\n        }\n      },\n      \"address\": {\n        \"line1\": \"127 Pasteur, Q.3\",\n        \"city\": \"TP.Hồ Chí Minh\",\n        \"countryCode\": \"VN\"\n      },\n      \"ratings\": {\n        \"property\": {\n          \"rating\": \"5.0\",\n          \"type\": \"Star\"\n        },\n        \"guest\": {\n          \"count\": 1186,\n          \"overall\": \"4.7\",\n          \"cleanliness\": \"4.7\",\n          \"service\": \"4.6\",\n          \"comfort\": \"4.7\",\n          \"condition\": \"4.6\",\n          \"neighborhood\": \"4.2\",\n          \"recommendationPercent\": \"87.8\"\n        }\n      },\n      \"location\": {\n        \"coordinates\": {\n          \"latitude\": 10.782844,\n          \"longitude\": 106.693295\n        }\n      },\n      \"category\": {\n        \"id\": \"22\",\n        \"name\": \"Khách sạn căn hộ\"\n      },\n      \"businessModel\": {\n        \"expediaCollect\": true,\n        \"propertyCollect\": false\n      },\n      \"checkIn\": {\n        \"beginTime\": \"14:00\",\n        \"endTime\": \"all the time\",\n        \"instructions\": [\n          \"Additional people may be charged at different rates, depending on individual policies.\",\n          \"Government-issued photo identification and a credit card, debit card, or cash deposit (for incidental charges - if applicable) may be required at check-in\"\n        ],\n        \"specialInstructions\": \"Reception staff will greet guests on arrival.\",\n        \"minAge\": 18\n      },\n      \"checkOut\": {\n        \"time\": \"12:00\"\n      },\n      \"fees\": {\n        \"mandatory\": \"<p class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;>You will be required to pay the property the following charges. Charges may include applicable taxes:</p><ul class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;><li class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;> Deposit: 1000000 VND per accommodation, per night</li></ul><p class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27;> We have included all charges provided to us by the property.</p>\",\n        \"optional\": {\n          \"feeItems\": [\n            {\n              \"description\": \"Buffet breakfast surcharge (approximate): adults - 350000 VND; children - 250000 VND\"\n            },\n            {\n              \"description\": \"Covered self parking fee: 400,000 VND per day\"\n            }\n          ],\n          \"note\": \"The above list may not be exhaustive. Fees and deposits may not include taxes and are subject to change.\"\n        }\n      },\n      \"policies\": {\n        \"knowBeforeYouGo\": [\n          \"1 child 11 years and under stays free of charge when sharing a parent or guardian's room, using existing bedding.\",\n          \"Pets, including service animals, are not allowed at this property.\"\n        ]\n      },\n      \"attributes\": {\n        \"pets\": [\n          {\n            \"id\": \"2808\",\n            \"name\": \"Service animals are not allowed.\"\n          },\n          {\n            \"id\": \"2050\",\n            \"name\": \"No pets allowed\"\n          }\n        ],\n        \"general\": [\n          {\n            \"id\": \"1073745142\",\n            \"name\": \"Professional accommodation management unit\"\n          },\n          {\n            \"id\": \"2545\",\n            \"name\": \"No crib/baby bed\"\n          }\n        ]\n      },\n      \"amenities\": [\n        {\n          \"id\": \"9\",\n          \"name\": \"Sports area\",\n          \"categories\": [\"gym\"],\n          \"groupName\": \"\"\n        },\n        {\n          \"id\": \"2385\",\n          \"name\": \"Pool table\",\n          \"groupName\": \"\"\n        }\n      ],\n      \"images\": [\n        {\n          \"heroImage\": true,\n          \"category\": 3,\n          \"links\": {\n            \"large\": {\n              \"method\": \"GET\",\n              \"href\": \"https://domain/012236f0_z.jpg\"\n            },\n            \"medium\": {\n              \"method\": \"GET\",\n              \"href\": \"https://domain/012236f0_b.jpg\"\n            },\n            \"tiny\": {\n              \"method\": \"GET\",\n              \"href\": \"https://domain/012236f0_t.jpg\"\n            }\n          },\n          \"caption\": \"Main photo\"\n        },\n        {\n          \"heroImage\": false,\n          \"category\": 10001,\n          \"links\": {\n            \"large\": {\n              \"method\": \"GET\",\n              \"href\": \"https://domain/0154a74c_z.jpg\"\n            },\n            \"medium\": {\n              \"method\": \"GET\",\n              \"href\": \"https://domain/0154a74c_b.jpg\"\n            },\n            \"tiny\": {\n              \"method\": \"GET\",\n              \"href\": \"https://domain/0154a74c_t.jpg\"\n            }\n          },\n          \"caption\": \"Lobby\"\n        }\n      ],\n      \"onsitePayments\": {\n        \"currency\": \"VND\",\n        \"types\": [\n          {\n            \"id\": \"1073742461\",\n            \"name\": \"Debit card\"\n          },\n          {\n            \"id\": \"407\",\n            \"name\": \"Cash\"\n          }\n        ]\n      },\n      \"rates\": [\n        {\n          \"id\": \"206866788\",\n          \"amenities\": [\n            {\n              \"id\": \"2192\",\n              \"name\": \"Wifi miễn phí\",\n              \"categories\": [\"free_wifi\"],\n              \"groupName\": \"\"\n            }\n          ]\n        },\n        {\n          \"id\": \"381402367\",\n          \"amenities\": [\n            {\n              \"id\": \"1073742786\",\n              \"name\": \"Bữa sáng miễn phí\",\n              \"categories\": [\"free_breakfast\"],\n              \"groupName\": \"\"\n            },\n            {\n              \"id\": \"2192\",\n              \"name\": \"Wifi miễn phí\",\n              \"categories\": [\"free_wifi\"],\n              \"groupName\": \"\"\n            }\n          ]\n        }\n      ],\n      \"dates\": {\n        \"added\": \"2015-10-06T01:12:59:5130\",\n        \"updated\": \"2024-12-04T04:03:44:4380\"\n      },\n      \"descriptions\": {\n        \"amenities\": \"Enjoy a range of recreational amenities, including an outdoor pool, a sauna, and a fitness center. Additional amenities at this aparthotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\n        \"dining\": \"Satisfy your appetite for lunch or dinner at Cafe Central Pasteur, a restaurant which specializes in international cuisine, or stay in and take advantage of the room service (during limited hours). Buffet breakfasts are served daily from 6:00 AM to 10:30 AM for a fee.\",\n        \"businessAmenities\": \"Featured amenities include limo/town car service, dry cleaning/laundry services, and a 24-hour front desk. Self parking (surcharge) is available onsite.\",\n        \"rooms\": \"Make yourself at home in one of the 228 air-conditioned rooms featuring kitchens with full-sized refrigerators/freezers and microwaves. Rooms feature private balconies. You'll be connected using the complimentary wireless Internet access in your room. Conveniences include phones, as well as safes and desks.\",\n        \"attractionResult\": {\n          \"note\": \"Distances are rounded to the nearest 0.1 km (or mile).\",\n          \"attractions\": [\n            {\n              \"name\": \"Consular Area\",\n              \"distance\": \"0,5 km\"\n            },\n            {\n              \"name\": \"Consulate General of the People's Republic of China\",\n              \"distance\": \"0,5 km\"\n            }\n          ],\n          \"airportInfo\": \"Khách có thể đến Sherwood Residence qua Sân bay Quốc tế Tân Sơn Nhất - Quận Tân Bình (SGN), cách khoảng 5,5 km\"\n        },\n        \"location\": \"Located in the heart of Ho Chi Minh City, Sherwood Residence is a 6-minute walk from War Remnants Museum and 10 minutes by foot from Saigon Notre-Dame Basilica. This family-friendly aparthotel is 1 mi (1.6 km) from Diamond Plaza and 1.2 mi (1.9 km) from Saigon Central Post Office.\",\n        \"headline\": \"Near Diamond Plaza\"\n      },\n      \"statistics\": [\n        {\n          \"id\": \"2515\",\n          \"name\": \"Năm xây dựng:  - 2007\",\n          \"value\": \"2007\"\n        },\n        {\n          \"id\": \"55\",\n          \"name\": \"Số lượng tòa nhà:  - 1\",\n          \"value\": \"1\"\n        },\n        {\n          \"id\": \"52\",\n          \"name\": \"Tổng số phòng:  - 228\",\n          \"value\": \"228\"\n        },\n        {\n          \"id\": \"54\",\n          \"name\": \"Số tầng: 20\",\n          \"value\": \"20\"\n        }\n      ],\n      \"chain\": {\n        \"id\": \"0\",\n        \"name\": \"Independent\"\n      },\n      \"brand\": {\n        \"id\": \"0\",\n        \"name\": \"Independent\"\n      },\n      \"spokenLanguages\": {\n        \"en\": {\n          \"id\": \"en\",\n          \"name\": \"English\"\n        },\n        \"vi\": {\n          \"id\": \"vi\",\n          \"name\": \"Vietnamese\"\n        }\n      },\n      \"themes\": [\n        {\n          \"id\": \"2333\",\n          \"name\": \"Family-friendly accommodation\"\n        },\n        {\n          \"id\": \"2328\",\n          \"name\": \"Accommodation suitable for business travelers\"\n        }\n      ]\n    },\n    \"hotelReviews\": [\n      {\n        \"verificationSource\": \"Expedia Group verified review\",\n        \"dateSubmitted\": \"2023-06-29T10:06:29:0000\",\n        \"rating\": \"3.0\",\n        \"reviewerName\": \"Nhu\",\n        \"travelCompanion\": \"friends\",\n        \"tripReason\": \"leisure\",\n        \"text\": \"2 phụ nữ và một trẻ nhỏ bước vào cổng với nhiều đồ xách trên tay và tự dùng vai để đẩy cửa vào không thấy nhân viên mở cửa.Tối 27/6/2023 tầm 6pm-7pm.Không một nhân viên mở cửa hộ\",\n        \"night\": \"\",\n        \"stayDate\": \"2023-06\",\n        \"managerResponses\": [\n          {\n            \"date\": \"2023-07-03T06:37:31:0000\",\n            \"text\": \"Dear Nhu,Lời nói đầu tiên Sherwood Residence xin gửi lời cám ơn đến bạn khi đã tin tưởng và lựa chọn nơi đây là nơi lưu trú cho gia đình. Tất cả chúng tôi đều rất vui khi biết rằng anh đã hài lòng với sự phục vụ của nhân viên chúng tôi. Chúng tôi trân trọng và ghi nhận những lời nhận xét và đánh giá đóng góp của quý khách hàng để có thể ngày càng hoàn thiện hơn về tất cả các khâu dịch vụ. Hy vọng đội ngũ nhân viên Sherwood Residence vẫn sẽ được chào đón và phục vụ bạn cùng gia đình trong thời gian tới. Trân trọng,\"\n          }\n        ]\n      },\n      {\n        \"verificationSource\": \"Hotels.com verified review\",\n        \"dateSubmitted\": \"2016-04-01T15:00:21:0000\",\n        \"rating\": \"4.0\",\n        \"reviewerName\": \"Thuy Linh\",\n        \"travelCompanion\": \"\",\n        \"tripReason\": \"\",\n        \"text\": \"Nhân viên thân thiện, dễ mến, chiều khách. Địa điểm khách sạn rất trung tâm, mặc dù đường Pasteur hay kẹt xe. Phòng có cửa kính hai lớp nên rất yên tĩnh và riêng tư.\",\n        \"night\": \"\",\n        \"stayDate\": \"\",\n        \"managerResponses\": []\n      }\n    ],\n    \"rooms\": [\n      {\n        \"id\": \"12622279-201309111\",\n        \"name\": \"3 Bedroom Premier with Balcony\",\n        \"occupancyIndex\": 0,\n        \"priceOptions\": [\n          {\n            \"id\": \"11206348125\",\n            \"available\": \"13\",\n            \"refundable\": true,\n            \"breakfast\": true,\n            \"extraBed\": false,\n            \"nonSmoking\": true,\n            \"totalAmount\": 198786000.0,\n            \"surcharges\": 0.0,\n            \"totalTax\": 26544000.0,\n            \"amount\": 172242000.0,\n            \"numberOfRooms\": 3,\n            \"numberOfNights\": 14,\n            \"averagePerNightAmount\": 4101000.0,\n            \"currency\": \"VND\",\n            \"totalPayAtHotel\": 0.0,\n            \"payAtHotelCurrency\": \"\",\n            \"priceDetails\": [\n              {\n                \"guestType\": \"1adt\",\n                \"averagePerNightAmount\": 4101000.0,\n                \"surcharges\": 0.0,\n                \"taxAmount\": 8848000.0,\n                \"totalAmount\": 57414000.0,\n                \"quantity\": 2,\n                \"pricePerNight\": [\n                  {\n                    \"amount\": 4101000.0,\n                    \"tax\": 632000.0,\n                    \"currency\": \"VND\"\n                  },\n                  {\n                    \"amount\": 4101000.0,\n                    \"tax\": 632000.0,\n                    \"currency\": \"VND\"\n                  }\n                ],\n                \"taxes\": [],\n                \"payAtHotels\": [],\n                \"discounts\": [\n                  {\n                    \"amount\": 7331000.0,\n                    \"currency\": \"VND\",\n                    \"name\": \"discount on base rate\"\n                  },\n                  {\n                    \"amount\": 8314000.0,\n                    \"currency\": \"VND\",\n                    \"name\": \"discount on tax-inclusive rate\"\n                  }\n                ]\n              },\n              {\n                \"guestType\": \"1adt,3chd-1,14,10\",\n                \"averagePerNightAmount\": 4101000.0,\n                \"surcharges\": 0.0,\n                \"taxAmount\": 8848000.0,\n                \"totalAmount\": 57414000.0,\n                \"quantity\": 1,\n                \"pricePerNight\": [\n                  {\n                    \"amount\": 4101000.0,\n                    \"tax\": 632000.0,\n                    \"currency\": \"VND\"\n                  },\n                  {\n                    \"amount\": 4101000.0,\n                    \"tax\": 632000.0,\n                    \"currency\": \"VND\"\n                  }\n                ],\n                \"taxes\": [],\n                \"payAtHotels\": [],\n                \"discounts\": [\n                  {\n                    \"amount\": 7331000.0,\n                    \"currency\": \"VND\",\n                    \"name\": \"discount on base rate\"\n                  },\n                  {\n                    \"amount\": 8314000.0,\n                    \"currency\": \"VND\",\n                    \"name\": \"discount on tax-inclusive rate\"\n                  }\n                ]\n              }\n            ],\n            \"bedOptions\": [\n              {\n                \"id\": \"37417\",\n                \"name\": \"1 king bed and 2 single beds\",\n                \"quantity\": 3\n              }\n            ],\n            \"amenities\": [\n              {\n                \"id\": \"1073742786\",\n                \"name\": \"Bữa sáng miễn phí\",\n                \"categories\": []\n              },\n              {\n                \"id\": \"2192\",\n                \"name\": \"Wifi miễn phí\",\n                \"categories\": []\n              }\n            ],\n            \"promotions\": [\n              {\n                \"code\": \"767229032\",\n                \"name\": \"Book now and save\",\n                \"remark\": \"deal\",\n                \"personCount\": \"\"\n              }\n            ],\n            \"cancellationPolicies\": [\n              {\n                \"startDate\": \"2025-05-30T18:00:00:0000\",\n                \"endDate\": \"2025-06-01T18:00:00:0000\",\n                \"currency\": \"VND\"\n              }\n            ]\n          }\n        ],\n        \"amenities\": [\n          {\n            \"id\": \"2150\",\n            \"name\": \"Blackout curtains/curtains\",\n            \"groupName\": \"\",\n            \"categories\": []\n          },\n          {\n            \"id\": \"121\",\n            \"name\": \"Wheelchair accessible\",\n            \"groupName\": \"\",\n            \"categories\": [\"accessible_wheelchair\"]\n          }\n        ],\n        \"images\": [\n          {\n            \"links\": {\n              \"Large\": \"https://domain/c37a1d19_z.jpg\",\n              \"Medium\": \"https://domain/c37a1d19_b.jpg\",\n              \"Small\": \"https://domain/c37a1d19_s.jpg\",\n              \"Tiny\": \"https://domain/c37a1d19_t.jpg\"\n            }\n          },\n          {\n            \"links\": {\n              \"Large\": \"https://domain/79e41438_z.jpg\",\n              \"Medium\": \"https://domain/79e41438_b.jpg\",\n              \"Small\": \"https://domain/79e41438_s.jpg\",\n              \"Tiny\": \"https://domain/79e41438_t.jpg\"\n            }\n          }\n        ],\n        \"area\": {\n          \"squareMeters\": 138.0,\n          \"squareFeet\": 1485.0\n        },\n        \"occupancy\": {},\n        \"views\": [\n          {\n            \"id\": \"4134\",\n            \"name\": \"City view\"\n          }\n        ]\n      }\n    ]\n  },\n  \"availableHotels\": 1\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response object contains the following fields:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `providerCode` | string | `\"hotel.provider1\"` | Provider identifier used in the request. |\n| `solutionId` | string | `\"bd48cf6b449f15a750e8fde99ab35718\"` | Solution identifier for tracking this specific search and its results. |\n| `hotels` | object | (see `hotels` object below) | Contains information about the hotel and its available rooms. (Note: The sample shows a single hotel object. If multiple hotels were possible, this would likely be an array.) |\n| `availableHotels` | integer | `1` | Number of hotels that have available rooms matching the criteria (in this sample, it's 1, corresponding to the single hotel object provided). |\n\n### `hotels` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"12622279\"` | Unique identifier for the hotel. |\n| `name` | string | `\"Sherwood Residence\"` | Name of the hotel. |\n| `vat` | boolean | `false` | Indicates whether VAT is included in the pricing displayed. |\n| `hotelContent` | object | (see `hotelContent` below) | Detailed static content information about the hotel. |\n| `hotelReviews` | array | `[...]` (see `hotelReview` object below) | List of customer reviews for the hotel. |\n| `rooms` | array | `[...]` (see `room` object below) | List of available room types and their pricing options for the search. |\n\n### `hotels.hotelContent` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `rank` | integer | `22821` | Ranking of the hotel. |\n| `active` | boolean | `true` | Indicates if the hotel is currently active. |\n| `multiUnit` | boolean | `true` | Indicates if the property has multiple units (e.g., an apartment hotel). |\n| `hotelId` | string | `\"12622279\"` | Unique identifier for the hotel (matches `hotels.id`). |\n| `name` | string | `\"Sherwood Residence\"` | Name of the hotel (matches `hotels.name`). |\n| `phone` | string | `\"84-28-38232288\"` | Hotel's phone number. |\n| `fax` | string | `\"84-28-38360783\"` | Hotel's fax number. |\n| `airports` | object | (see `airports` object below) | Information about airports relevant to the hotel. |\n| `address` | object | (see `address` object below) | Address details of the hotel. |\n| `ratings` | object | (see `ratings` object below) | Property and guest rating information. |\n| `location` | object | (see `location` object below) | Geographical location details. |\n| `category` | object | (see `category` object below) | Hotel category information. |\n| `businessModel` | object | (see `businessModel` object below) | Payment collection model information. |\n| `checkIn` | object | (see `checkIn` object below) | Check-in policies and information. |\n| `checkOut` | object | (see `checkOut` object below) | Check-out policies. |\n| `fees` | object | (see `fees` object below) | Information about mandatory and optional fees. |\n| `policies` | object | (see `policies` object below) | General hotel policies. |\n| `attributes` | object | (see `attributes` object below) | Specific attributes of the hotel (pets, general). |\n| `amenities` | array | `[...]` (see `hotelContent.amenity` object below) | List of hotel-level amenities. |\n| `images` | array | `[...]` (see `hotelContent.image` object below) | List of hotel images. |\n| `onsitePayments` | object | (see `onsitePayments` object below) | Payment methods accepted on-site. |\n| `rates` | array | `[...]` (see `hotelContent.rate` object below) | General rate types available at the hotel. |\n| `dates` | object | (see `dates` object below) | Timestamps for when hotel content was added/updated. |\n| `descriptions` | object | (see `descriptions` object below) | Various textual descriptions of the hotel. |\n| `statistics` | array | `[...]` (see `statistic` object below) | Various statistics about the hotel property. |\n| `chain` | object | (see `chain` object below) | Hotel chain information. |\n| `brand` | object | (see `brand` object below) | Hotel brand information. |\n| `spokenLanguages` | object | (see `spokenLanguages` object below) | Languages spoken at the property. |\n| `themes` | array | `[...]` (see `theme` object below) | List of themes associated with the hotel. |\n\n### `hotels.hotelContent.airports` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `preferred` | object | (see `preferred` object below) | Information about the preferred airport. |\n\n### `hotels.hotelContent.airports.preferred` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `iataAirportCode` | string | `\"SGN\"` | IATA code of the preferred airport. |\n\n### `hotels.hotelContent.address` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `line1` | string | `\"127 Pasteur, Q.3\"` | First line of the hotel's address. |\n| `city` | string | `\"TP.Hồ Chí Minh\"` | City where the hotel is located. |\n| `countryCode` | string | `\"VN\"` | ISO country code (e.g., \"VN\"). |\n\n### `hotels.hotelContent.ratings` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `property` | object | (see `property` object below) | Information about the property's rating. |\n| `guest` | object | (see `guest` object below) | Aggregated guest ratings. |\n\n### `hotels.hotelContent.ratings.property` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `rating` | string | `\"5.0\"` | The star rating of the property. |\n| `type` | string | `\"Star\"` | Type of rating (e.g., \"Star\"). |\n\n### `hotels.hotelContent.ratings.guest` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `count` | integer | `1186` | Number of guest reviews. |\n| `overall` | string | `\"4.7\"` | Overall guest rating score. |\n| `cleanliness` | string | `\"4.7\"` | Guest rating for cleanliness. |\n| `service` | string | `\"4.6\"` | Guest rating for service. |\n| `comfort` | string | `\"4.7\"` | Guest rating for comfort. |\n| `condition` | string | `\"4.6\"` | Guest rating for property condition. |\n| `neighborhood` | string | `\"4.2\"` | Guest rating for the neighborhood. |\n| `recommendationPercent` | string | `\"87.8\"` | Percentage of guests who recommend. |\n\n### `hotels.hotelContent.location` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `coordinates` | object | (see `coordinates` object below) | Latitude and longitude coordinates. |\n\n### `hotels.hotelContent.location.coordinates` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `latitude` | decimal | `10.782844` | Latitude of the hotel. |\n| `longitude` | decimal | `106.693295` | Longitude of the hotel. |\n\n### `hotels.hotelContent.category` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"22\"` | ID of the hotel category. |\n| `name` | string | `\"Khách sạn căn hộ\"` | Name of the hotel category. |\n\n### `hotels.hotelContent.businessModel` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `expediaCollect` | boolean | `true` | Indicates if Expedia collects payment. |\n| `propertyCollect` | boolean | `false` | Indicates if the property collects payment. |\n\n### `hotels.hotelContent.checkIn` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `beginTime` | string | `\"14:00\"` | Check-in start time. |\n| `endTime` | string | `\"all the time\"` | Check-in end time. |\n| `instructions` | array of strings | `[\"Additional people may be charged...\", \"Government-issued photo identification...\"]` | List of check-in instructions. |\n| `specialInstructions` | string | `\"Reception staff will greet guests on arrival.\"` | Special check-in instructions. |\n| `minAge` | integer | `18` | Minimum age required for check-in. |\n\n### `hotels.hotelContent.checkOut` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `time` | string | `\"12:00\"` | Check-out time. |\n\n### `hotels.hotelContent.fees` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `mandatory` | string | `\"`  <br>  <br>`You will be required to pay...\"` | HTML string detailing mandatory fees. |\n| `optional` | object | (see `optional` object below) | Details about optional fees. |\n\n### `hotels.hotelContent.fees.optional` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `feeItems` | array of objects | `[{\"description\": \"Buffet breakfast surcharge...\"}]` (see `feeItem` object below) | List of optional fee items. |\n| `note` | string | `\"The above list may not be exhaustive...\"` | Additional notes regarding optional fees. |\n\n### `hotels.hotelContent.fees.optional.feeItems[]` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `description` | string | `\"Buffet breakfast surcharge (approximate): adults - 350000 VND; children - 250000 VND\"` | Description of an optional fee. |\n\n### `hotels.hotelContent.policies` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `knowBeforeYouGo` | array of strings | `[\"1 child 11 years and under stays free...\", \"Pets...not allowed...\"]` | List of important policies guests should know before arrival. |\n\n### `hotels.hotelContent.attributes` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `pets` | array of objects | `[...]` (see `attributeItem` object below) | Pet policy attributes. |\n| `general` | array of objects | `[...]` (see `attributeItem` object below) | General hotel attributes. |\n\n### `hotels.hotelContent.attributes.pets[]` / `general[]` (Attribute Item) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2808\"` (pets), `\"1073745142\"` (general) | ID of the attribute. |\n| `name` | string | `\"Service animals are not allowed.\"` | Name/description of the attribute. |\n| `value` | string | `null` (pets, in sample), `null` (general, in sample) | Value associated with the attribute (if applicable). |\n\n### `hotels.hotelContent.amenities[]` (Hotel Amenity) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"9\"` | ID of the amenity. |\n| `name` | string | `\"Sports area\"` | Name of the amenity. |\n| `categories` | array of strings | `[\"gym\"]` | Categories the amenity belongs to (e.g., \"gym\"). Optional. |\n| `groupName` | string | `\"\"` | Group name for the amenity (can be empty). |\n\n### `hotels.hotelContent.images[]` (Hotel Image) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `heroImage` | boolean | `true` | Indicates if this is a primary/hero image for the hotel. |\n| `category` | integer | `3` | Category ID of the image. |\n| `links` | object | (see `image.links` object below) | Contains links to different sizes of the image. |\n| `caption` | string | `\"Main photo\"` | Caption for the image. |\n\n### `hotels.hotelContent.images[].links` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `large` | object | `{\"method\": \"GET\", \"href\": \"https://..._z.jpg\"}` (see `imageLinkDetail` below) | Link object for the large version of the image. |\n| `medium` | object | `{\"method\": \"GET\", \"href\": \"https://..._b.jpg\"}` (see `imageLinkDetail` below) | Link object for the medium version of the image. |\n| `tiny` | object | `{\"method\": \"GET\", \"href\": \"https://..._t.jpg\"}` (see `imageLinkDetail` below) | Link object for the tiny/thumbnail version of the image. |\n\n### `hotels.hotelContent.images[].links.large` / `medium` / `tiny` (Image Link Detail) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `method` | string | `\"GET\"` | HTTP method to retrieve the image (e.g., \"GET\"). |\n| `href` | string | `\"https://...z.jpg\"` | URL of the image. |\n\n### `hotels.hotelContent.onsitePayments` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `currency` | string | `\"VND\"` | Currency code for on-site payments (e.g., \"VND\"). |\n| `types` | array of objects | `[...]` (see `paymentType` object below) | List of accepted payment types. |\n\n### `hotels.hotelContent.onsitePayments.types[]` (Payment Type) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"1073742461\"` | ID of the payment type. |\n| `name` | string | `\"Debit card\"` | Name of the payment type (e.g., \"Debit card\", \"Cash\"). |\n\n### `hotels.hotelContent.rates[]` (General Rate) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"206866788\"` | ID of the rate type. |\n| `amenities` | array of objects | `[...]` (see `rate.amenity` object below) | Amenities associated with this general rate type. |\n\n### `hotels.hotelContent.rates[].amenities[]` (Rate Amenity) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2192\"` | ID of the rate-specific amenity. |\n| `name` | string | `\"Wifi miễn phí\"` | Name of the rate-specific amenity. |\n| `categories` | array of strings | `[\"free_wifi\"]` | Categories for the rate-specific amenity (e.g., \"free_wifi\"). Optional. |\n| `groupName` | string | `\"\"` | Group name for the rate-specific amenity. |\n\n### `hotels.hotelContent.dates` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `added` | string | `\"2015-10-06T01:12:59:5130\"` | ISO 8601 timestamp indicating when the hotel data was added. |\n| `updated` | string | `\"2024-12-04T04:03:44:4380\"` | ISO 8601 timestamp indicating when the hotel data was last updated. |\n\n### `hotels.hotelContent.descriptions` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `amenities` | string | `\"Enjoy a range of recreational amenities...\"` | Description of hotel amenities. |\n| `dining` | string | `\"Satisfy your appetite for lunch or dinner...\"` | Description of dining options. |\n| `businessAmenities` | string | `\"Featured amenities include limo/town car...\"` | Description of business amenities. |\n| `rooms` | string | `\"Make yourself at home in one of the 228...\"` | General description of the rooms. |\n| `attractionResult` | object | (see `attractionResult` object below) | Information about nearby attractions. |\n| `location` | string | `\"Located in the heart of Ho Chi Minh City...\"` | General description of the hotel's location. |\n| `headline` | string | `\"Near Diamond Plaza\"` | A short headline or tagline for the hotel. |\n\n### `hotels.hotelContent.descriptions.attractionResult` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `note` | string | `\"Distances are rounded to the nearest 0.1 km (or mile).\"` | Note about distance calculation for attractions. |\n| `attractions` | array of objects | `[{\"name\": \"Consular Area\", \"distance\": \"0,5 km\"}]` (see `attraction` below) | List of nearby attractions. |\n| `airportInfo` | string | `\"Khách có thể đến Sherwood Residence qua Sân bay...\"` | Information about airport accessibility. |\n\n### `hotels.hotelContent.descriptions.attractionResult.attractions[]` (Attraction) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `name` | string | `\"Consular Area\"` | Name of the attraction. |\n| `distance` | string | `\"0,5 km\"` | Distance to the attraction. |\n\n### `hotels.hotelContent.statistics[]` (Statistic) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2515\"` | ID of the statistic. |\n| `name` | string | `\"Năm xây dựng: - 2007\"` | Name/description of the statistic. |\n| `value` | string | `\"2007\"` | Value of the statistic. |\n\n### `hotels.hotelContent.chain` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"0\"` | ID of the hotel chain (\"0\" for independent). |\n| `name` | string | `\"Independent\"` | Name of the hotel chain (e.g., \"Independent\"). |\n\n### `hotels.hotelContent.brand` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"0\"` | ID of the hotel brand (\"0\" for independent). |\n| `name` | string | `\"Independent\"` | Name of the hotel brand (e.g., \"Independent\"). |\n\n### `hotels.hotelContent.spokenLanguages` Object\n\nThis object contains language codes as keys (e.g., `en`, `vi`).\n\n| Field Path | Type | Example | Description |\n| --- | --- | --- | --- |\n| `{lang_code}` | object | (see `languageDetail` object below, e.g., `en`) | Details for a specific language. |\n\n### `hotels.hotelContent.spokenLanguages.{lang_code}` (Language Detail) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"en\"` | Language code (e.g., \"en\", \"vi\"). |\n| `name` | string | `\"English\"` | Name of the language (e.g., \"English\", \"Vietnamese\"). |\n\n### `hotels.hotelContent.themes[]` (Theme) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2333\"` | ID of the theme. |\n| `name` | string | `\"Family-friendly accommodation\"` | Name of the theme. |\n\n### `hotels.hotelReviews[]` (Hotel Review) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `verificationSource` | string | `\"Expedia Group verified review\"` | Source of the review verification. |\n| `dateSubmitted` | string | `\"2023-06-29T10:06:29:0000\"` | ISO 8601 timestamp of when the review was submitted. |\n| `rating` | string | `\"3.0\"` | Rating given by the reviewer. |\n| `reviewerName` | string | `\"Nhu\"` | Name of the reviewer. |\n| `travelCompanion` | string | `\"friends\"` | Type of travel companion. |\n| `tripReason` | string | `\"leisure\"` | Reason for the trip. |\n| `text` | string | `\"2 phụ nữ và một trẻ nhỏ bước vào...\"` | The text content of the review. |\n| `night` | string | `\"\"` | Duration of stay in nights (can be empty). |\n| `stayDate` | string | `\"2023-06\"` | Date of stay (format may vary). |\n| `managerResponses` | array of objects | `[...]` (see `managerResponse` object below) | List of responses from the hotel manager to the review. |\n\n### `hotels.hotelReviews[].managerResponses[]` (Manager Response) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `date` | string | `\"2023-07-03T06:37:31:0000\"` | ISO 8601 timestamp of the manager's response. |\n| `text` | string | `\"Dear Nhu,Lời nói đầu...\"` | The text content of the manager's response. |\n\n### `hotels.rooms[]` (Room) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"12622279-201309111\"` | Unique identifier for the room type. |\n| `name` | string | `\"3 Bedroom Premier with Balcony\"` | Name of the room type. |\n| `occupancyIndex` | integer | `0` | Index related to the occupancy configuration this room satisfies. |\n| `priceOptions` | array of objects | `[...]` (see `priceOption` object below) | List of different pricing options available for this room type. |\n| `amenities` | array of objects | `[...]` (see `room.amenity` object below) | List of amenities specific to this room type. |\n| `images` | array of objects | `[...]` (see `room.image` object below) | List of images for this room type. |\n| `area` | object | (see `area` object below) | Information about the size of the room. |\n| `occupancy` | object | `{}` | Details about room occupancy (sample is empty, structure may vary). |\n| `views` | array of objects | `[...]` (see `view` object below) | List of views available from this room type. |\n\n### `hotels.rooms[].priceOptions[]` (Price Option) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"11206348125\"` | Unique identifier for this specific price option. |\n| `available` | string | `\"13\"` | Number of units of this room type available under this price option (as string). |\n| `refundable` | boolean | `true` | Indicates if this price option is refundable. |\n| `breakfast` | boolean | `true` | Indicates if breakfast is included. |\n| `extraBed` | boolean | `false` | Indicates if an extra bed is included/possible. |\n| `nonSmoking` | boolean | `true` | Indicates if this option is for a non-smoking room. |\n| `totalAmount` | decimal | `198786000.0` | Total amount for the stay for requested rooms/nights, including taxes/surcharges. |\n| `surcharges` | decimal | `0.0` | Total surcharges included in `totalAmount`. |\n| `totalTax` | decimal | `26544000.0` | Total tax included in `totalAmount`. |\n| `amount` | decimal | `172242000.0` | Base amount before taxes/surcharges. |\n| `numberOfRooms` | integer | `3` | Number of rooms this price option is for. |\n| `numberOfNights` | integer | `14` | Number of nights for the stay. |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average base price per night per room. |\n| `currency` | string | `\"VND\"` | Currency code for the prices. |\n| `totalPayAtHotel` | decimal | `0.0` | Amount to be paid directly at the hotel (if any). |\n| `payAtHotelCurrency` | string | `\"\"` | Currency for amount to be paid at hotel. |\n| `priceDetails` | array of objects | `[...]` (see `priceDetail` object below) | Detailed pricing breakdown, per room/guest configuration. |\n| `bedOptions` | array of objects | `[...]` (see `bedOption` object below) | Available bed configurations. |\n| `amenities` | array of objects | `[...]` (see `priceOption.amenity` object below) | Amenities specifically included with this price option. |\n| `promotions` | array of objects | `[...]` (see `promotion` object below) | Promotions or deals applied. |\n| `cancellationPolicies` | array of objects | `[...]` (see `cancellationPolicy` object below) | Details of the cancellation policy. |\n\n### `hotels.rooms[].priceOptions[].priceDetails[]` (Price Detail) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `guestType` | string | `\"1adt\"` | Guest configuration this price detail applies to. |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average base price per night for this configuration/room. |\n| `surcharges` | decimal | `0.0` | Surcharges for this configuration/room. |\n| `taxAmount` | decimal | `8848000.0` | Tax amount for this configuration/room. |\n| `totalAmount` | decimal | `57414000.0` | Total amount for this configuration/room. |\n| `quantity` | integer | `2` | Number of rooms matching this guest type configuration. |\n| `pricePerNight` | array of objects | `[...]` (see `pricePerNight` object below) | Breakdown of price/tax for each night for this configuration. |\n| `taxes` | array | `[]` | Further breakdown of taxes (sample is empty). |\n| `payAtHotels` | array | `[]` | Amounts to be paid at hotel for this detail (sample is empty). |\n| `discounts` | array of objects | `[...]` (see `discount` object below) | List of discounts applied. |\n\n### `hotels.rooms[].priceOptions[].priceDetails[].pricePerNight[]` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `amount` | decimal | `4101000.0` | Base amount for a specific night. |\n| `tax` | decimal | `632000.0` | Tax amount for a specific night. |\n| `currency` | string | `\"VND\"` | Currency for the nightly price. |\n\n### `hotels.rooms[].priceOptions[].priceDetails[].discounts[]` (Discount) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `amount` | decimal | `7331000.0` | Amount of the discount. |\n| `currency` | string | `\"VND\"` | Currency of the discount. |\n| `name` | string | `\"discount on base rate\"` | Name/description of the discount. |\n\n### `hotels.rooms[].priceOptions[].bedOptions[]` (Bed Option) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"37417\"` | ID of the bed configuration. |\n| `name` | string | `\"1 king bed and 2 single beds\"` | Description of the bed configuration. |\n| `quantity` | integer | `3` | Number of such bed configurations. |\n\n### `hotels.rooms[].priceOptions[].amenities[]` (Price Option Amenity) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"1073742786\"` | ID of the amenity. |\n| `name` | string | `\"Bữa sáng miễn phí\"` | Name of the amenity. |\n| `categories` | array of strings | `[]` | Categories for the amenity (can be empty). |\n\n### `hotels.rooms[].priceOptions[].promotions[]` (Promotion) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `code` | string | `\"767229032\"` | Code or identifier for the promotion. |\n| `name` | string | `\"Book now and save\"` | Name of the promotion. |\n| `remark` | string | `\"deal\"` | Remark or type of promotion. |\n| `personCount` | string | `\"\"` | Number of persons the promotion applies to. |\n\n### `hotels.rooms[].priceOptions[].cancellationPolicies[]` (Cancellation Policy) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `startDate` | string | `\"2025-05-30T18:00:00:0000\"` | ISO 8601 timestamp indicating start of a penalty period/policy rule. |\n| `endDate` | string | `\"2025-06-01T18:00:00:0000\"` | ISO 8601 timestamp indicating end of a penalty period/policy rule. |\n| `currency` | string | `\"VND\"` | Currency for any cancellation fees. |\n\n### `hotels.rooms[].amenities[]` (Room Amenity) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2150\"` | ID of the room amenity. |\n| `name` | string | `\"Blackout curtains/curtains\"` | Name of the room amenity. |\n| `groupName` | string | `\"\"` | Group name for the amenity (can be empty). |\n| `categories` | array of strings | `[\"accessible_wheelchair\"]` | Categories the room amenity belongs to. |\n\n### `hotels.rooms[].images[]` (Room Image) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `links` | object | (see `room.image.links` object below) | Contains links to different sizes of the room image. |\n\n### `hotels.rooms[].images[].links` Object\n\nNote: The keys `Large`, `Medium`, `Small`, `Tiny` are case-sensitive as per the sample.\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `Large` | string | `\"https://domain/c37a1d19_z.jpg\"` | URL of the large version of the room image. |\n| `Medium` | string | `\"https://domain/c37a1d19_b.jpg\"` | URL of the medium version of the room image. |\n| `Small` | string | `\"https://domain/c37a1d19_s.jpg\"` | URL of the small version of the room image. |\n| `Tiny` | string | `\"https://domain/c37a1d19_t.jpg\"` | URL of the tiny/thumbnail version of the room image. |\n\n### `hotels.rooms[].area` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `squareMeters` | float | `138.0` | Room area in square meters. |\n| `squareFeet` | float | `1485.0` | Room area in square feet. |\n\n### `hotels.rooms[].views[]` (View) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"4134\"` | ID of the view type. |\n| `name` | string | `\"City view\"` | Name of the view type. |\n\n---\n\n## Notes\n\n- The API returns detailed pricing with tax breakdowns, primarily in Vietnamese Dong (VND) as per the sample.\n    \n- Room and hotel images are available via URLs, often with different size options. Note the difference in structure for `hotelContent.images[].links` (nested objects with `method` and `href`) versus `rooms[].images[].links` (direct string URLs).\n    \n- Cancellation policies within `priceOptions` provide critical information regarding booking flexibility.\n    \n- Guest reviews, when available, include verification sources and sometimes manager responses.\n    \n- The `hotelContent` object is very rich and provides extensive static details about the hotel.\n    \n- **Request Constraint:** The number of `rooms` requested must be less than or equal to the number of `adults`.\n    \n- **Date Validation Rules:**\n    \n    - Check-in and check-out dates must be within 365 days from the current date.\n        \n    - The maximum stay duration is 28 nights.\n        \n    - The `checkOutDate` must be after the `checkInDate`.\n        \n\n---"
									},
									"response": []
								},
								{
									"name": "5. Get Pricing",
									"event": [
										{
											"listen": "test",
											"script": {
												"exec": [
													"pm.test(\"Return status code is 200\", function () {\r",
													"    pm.response.to.have.status(200);\r",
													"});\r",
													"\r",
													"pm.test(\"Solutions has value\", function () {\r",
													"    const jsonData = pm.response.json();\r",
													"    pm.expect(jsonData.solution).to.have.property('solutionId');\r",
													"    pm.environment.set(\"hotel.pricing_solution_id\", jsonData.solution.solutionId);\r",
													"});"
												],
												"type": "text/javascript",
												"packages": {}
											}
										}
									],
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}"
											},
											{
												"key": "Content-Type",
												"value": "application/json"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"ProviderCode\": \"{{hotel.provider_code}}\",\r\n    \"SolutionId\": \"{{hotel.room_solution_id}}\",\r\n    \"HotelId\": \"{{hotel.hotel_id}}\",\r\n    \"RoomId\": \"{{hotel.room_id}}\",\r\n    \"PriceOptionId\": \"{{hotel.price_option_id}}\",\r\n    \"BedOptionId\": \"{{hotel.bed_option_id}}\",\r\n    \"Currency\": \"VND\",\r\n    \"Stateful\": true\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/pricing",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"pricing"
											]
										},
										"description": "# Get Pricing API Documentation\n\n## Overview\n\nThis API allows you to retrieve the final, detailed pricing for a specific hotel room, including bed options, price options, and associated policies. This is typically used as a pre-booking step after a user has selected a room from the \"Rooms Search API\" to confirm the price before proceeding to booking.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/pricing`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\n``` json\n{\n  \"ProviderCode\": \"{{hotel.provider_code}}\",\n  \"SolutionId\": \"{{hotel.room_solution_id}}\",\n  \"HotelId\": \"{{hotel.hotel_id}}\",\n  \"RoomId\": \"{{hotel.room_id}}\",\n  \"PriceOptionId\": \"{{hotel.price_option_id}}\",\n  \"BedOptionId\": \"{{hotel.bed_option_id}}\",\n  \"Currency\": \"VND\",\n  \"Stateful\": true\n}\n\n ```\n\n---\n\n## Request Field Description\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `ProviderCode` | string | ✅ | `\"hotel.provider1\"` | The provider's code, obtained from a previous Hotel Search or Rooms Search API response. |\n| `SolutionId` | string | ✅ | `\"bd48cf6b449f15a750e8fde99ab35718\"` | The solution ID obtained from the Rooms Search API response, identifying the previous search context. |\n| `HotelId` | string | ✅ | `\"12622279\"` | The unique identifier of the hotel. |\n| `RoomId` | string | ✅ | `\"12622279-201309111\"` | The unique identifier of the selected room type, obtained from the Rooms Search API response. |\n| `PriceOptionId` | string | ✅ | `\"11206348125\"` | The unique identifier of the selected price option for the room, from the Rooms Search API response. |\n| `BedOptionId` | string | ✅ | `\"37417\"` | The unique identifier of the selected bed configuration for the room, from the Rooms Search API response. |\n| `Currency` | string | ✅ | `\"VND\"` | The preferred currency for the pricing information (e.g., \"VND\"). |\n| `Stateful` | boolean | ✅ | `true` | Indicates if the pricing request should be stateful, potentially caching the result for a short period. |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/hotel/pricing' \\\n--header 'Authorization: Bearer {token}' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"ProviderCode\": \"hotel.provider1\",\n    \"SolutionId\": \"bd48cf6b449f15a750e8fde99ab35718\",\n    \"HotelId\": \"12622279\",\n    \"RoomId\": \"12622279-201309111\",\n    \"PriceOptionId\": \"11206348125\",\n    \"BedOptionId\": \"37417\",\n    \"Currency\": \"VND\",\n    \"Stateful\": true\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"solution\": {\n    \"solutionId\": \"a0129256-dbe3-4eea-b950-725ab1f35699\",\n    \"hotel\": {\n      \"id\": \"12622279\",\n      \"name\": \"Sherwood Residence\",\n      \"vat\": false,\n      \"rooms\": [\n        {\n          \"id\": \"12622279-201309111\",\n          \"name\": \"3 Bedroom Premier with Balcony\",\n          \"occupancyIndex\": 0\n        },\n        {\n          \"id\": \"12622279-201309111\",\n          \"name\": \"3 Bedroom Premier with Balcony\",\n          \"occupancyIndex\": 0\n        },\n        {\n          \"id\": \"12622279-201309111\",\n          \"name\": \"3 Bedroom Premier with Balcony\",\n          \"occupancyIndex\": 0\n        }\n      ]\n    },\n    \"priceInfo\": {\n      \"id\": \"11206348125\",\n      \"refundable\": true,\n      \"breakfast\": true,\n      \"extraBed\": false,\n      \"nonSmoking\": true,\n      \"totalAmount\": 198786000.0,\n      \"surcharges\": 0.0,\n      \"totalTax\": 26544000.0,\n      \"amount\": 172242000.0,\n      \"numberOfRooms\": 3,\n      \"numberOfNights\": 14,\n      \"averagePerNightAmount\": 4101000.0,\n      \"currency\": \"VND\",\n      \"totalPayAtHotel\": 0.0,\n      \"payAtHotelCurrency\": \"\",\n      \"priceDetails\": [\n        {\n          \"guestType\": \"1adt\",\n          \"averagePerNightAmount\": 4101000.0,\n          \"surcharges\": 0.0,\n          \"taxAmount\": 8848000.0,\n          \"totalAmount\": 57414000.0,\n          \"quantity\": 2,\n          \"pricePerNight\": [\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            }\n          ],\n          \"taxes\": [],\n          \"payAtHotels\": [],\n          \"discounts\": [\n            {\n              \"amount\": 7331000.0,\n              \"currency\": \"VND\",\n              \"name\": \"discount on base rate\"\n            },\n            {\n              \"amount\": 8314000.0,\n              \"currency\": \"VND\",\n              \"name\": \"discount on tax-inclusive rate\"\n            },\n            {\n              \"amount\": 8314000.0,\n              \"currency\": \"VND\",\n              \"name\": \"discount on all-inclusive rate\"\n            }\n          ]\n        },\n        {\n          \"guestType\": \"1adt,3chd-1,14,10\",\n          \"averagePerNightAmount\": 4101000.0,\n          \"surcharges\": 0.0,\n          \"taxAmount\": 8848000.0,\n          \"totalAmount\": 57414000.0,\n          \"quantity\": 1,\n          \"pricePerNight\": [\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            },\n            {\n              \"amount\": 4101000.0,\n              \"tax\": 632000.0,\n              \"currency\": \"VND\"\n            }\n          ],\n          \"taxes\": [],\n          \"payAtHotels\": [],\n          \"discounts\": [\n            {\n              \"amount\": 8314000.0,\n              \"currency\": \"VND\",\n              \"name\": \"discount on all-inclusive rate\"\n            },\n            {\n              \"amount\": 7331000.0,\n              \"currency\": \"VND\",\n              \"name\": \"discount on base rate\"\n            },\n            {\n              \"amount\": 8314000.0,\n              \"currency\": \"VND\",\n              \"name\": \"discount on tax-inclusive rate\"\n            }\n          ]\n        }\n      ],\n      \"bedOptions\": [\n        {\n          \"id\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        }\n      ],\n      \"amenities\": [\n        {\n          \"id\": \"2192\",\n          \"name\": \"Wifi miễn phí\",\n          \"categories\": []\n        },\n        {\n          \"id\": \"1073742786\",\n          \"name\": \"Bữa sáng miễn phí\",\n          \"categories\": []\n        }\n      ],\n      \"promotions\": [\n        {\n          \"code\": \"767229032\",\n          \"name\": \"Book now and save\",\n          \"remark\": \"deal\",\n          \"personCount\": \"\"\n        }\n      ],\n      \"cancellationPolicies\": [\n        {\n          \"startDate\": \"2025-05-30T18:00:00:0000\",\n          \"endDate\": \"2025-06-01T18:00:00:0000\",\n          \"currency\": \"VND\"\n        }\n      ]\n    }\n  }\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response object contains a `solution` object.\n\n| Field Path | Type | Example | Description |\n| --- | --- | --- | --- |\n| `solution` | object | (see `solution` object below) | Contains the overall pricing solution for the selected room. |\n\n### `solution` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `solutionId` | string | `\"a0129256-dbe3-4eea-b950-725ab1f35699\"` | A new unique identifier for this specific pricing solution/quote. This might be used for a subsequent booking step. |\n| `hotel` | object | (see `hotel` object below) | Basic information about the hotel related to this pricing. |\n| `priceInfo` | object | (see `priceInfo` object below) | Detailed pricing information for the selected room, bed, and price option. |\n\n### `solution.hotel` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"12622279\"` | Unique identifier of the hotel (matches `HotelId` from request). |\n| `name` | string | `\"Sherwood Residence\"` | Name of the hotel. |\n| `vat` | boolean | `false` | Indicates if VAT is applicable or included. |\n| `rooms` | array of objects | `[...]` (see `room` object below) | Details of the room(s) included in this pricing. The array length matches `priceInfo.numberOfRooms`. |\n\n### `solution.hotel.rooms[]` (Room) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"12622279-201309111\"` | Unique identifier of the room type (matches `RoomId` from request). |\n| `name` | string | `\"3 Bedroom Premier with Balcony\"` | Name of the room type. |\n| `occupancyIndex` | integer | `0` | Index related to the occupancy configuration. |\n\n### `solution.priceInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"11206348125\"` | Identifier of the price option (matches `PriceOptionId` from request). |\n| `refundable` | boolean | `true` | Indicates if this price option is refundable. |\n| `breakfast` | boolean | `true` | Indicates if breakfast is included. |\n| `extraBed` | boolean | `false` | Indicates if an extra bed is included or available. |\n| `nonSmoking` | boolean | `true` | Indicates if the room is non-smoking. |\n| `totalAmount` | decimal | `198786000.0` | The grand total amount for the stay, including all rooms, nights, taxes, and surcharges. |\n| `surcharges` | decimal | `0.0` | Total amount of surcharges. |\n| `totalTax` | decimal | `26544000.0` | Total amount of taxes. |\n| `amount` | decimal | `172242000.0` | The base amount for the stay before taxes and surcharges (`totalAmount` - `totalTax` - `surcharges`). |\n| `numberOfRooms` | integer | `3` | Number of rooms this pricing is for (reflects the original search criteria). |\n| `numberOfNights` | integer | `14` | Number of nights for the stay. |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average base price per night per room. |\n| `currency` | string | `\"VND\"` | Currency code for the pricing (e.g., \"VND\"). |\n| `totalPayAtHotel` | decimal | `0.0` | Amount to be paid directly at the hotel (if applicable). |\n| `payAtHotelCurrency` | string | `\"\"` | Currency for the amount to be paid at the hotel (if applicable). |\n| `priceDetails` | array of objects | `[...]` (see `priceDetail` object below) | Detailed breakdown of pricing, often per room or specific guest configuration. |\n| `bedOptions` | array of objects | `[...]` (see `bedOption` object below) | The selected bed configuration details. |\n| `amenities` | array of objects | `[...]` (see `priceInfo.amenity` object below) | Amenities included with this specific price option. |\n| `promotions` | array of objects | `[...]` (see `promotion` object below) | Promotions or deals applied to this price option. |\n| `cancellationPolicies` | array of objects | `[...]` (see `cancellationPolicy` object below) | Details of the cancellation policy applicable to this price option. |\n\n### `solution.priceInfo.priceDetails[]` (Price Detail) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `guestType` | string | `\"1adt\"` | Description of the guest configuration this price detail applies to. |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average base price per night for this specific guest configuration/room. |\n| `surcharges` | decimal | `0.0` | Surcharges for this specific guest configuration/room. |\n| `taxAmount` | decimal | `8848000.0` | Tax amount for this specific guest configuration/room. |\n| `totalAmount` | decimal | `57414000.0` | Total amount for this specific guest configuration/room for the entire stay. |\n| `quantity` | integer | `2` | Number of rooms matching this guest type configuration. |\n| `pricePerNight` | array of objects | `[...]` (see `pricePerNight` object below) | Breakdown of base amount and tax for each night of the stay for this configuration. |\n| `taxes` | array | `[]` | Further detailed breakdown of taxes (sample is empty, structure may vary). |\n| `payAtHotels` | array | `[]` | Amounts to be paid at hotel for this specific detail (sample is empty). |\n| `discounts` | array of objects | `[...]` (see `discount` object below) | List of discounts applied to this price detail. |\n\n### `solution.priceInfo.priceDetails[].pricePerNight[]` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `amount` | decimal | `4101000.0` | Base amount for a specific night. |\n| `tax` | decimal | `632000.0` | Tax amount for a specific night. |\n| `currency` | string | `\"VND\"` | Currency for the nightly price. |\n\n_(The array contains 14 such objects in the sample, one for each night.)_\n\n### `solution.priceInfo.priceDetails[].discounts[]` (Discount) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `amount` | decimal | `7331000.0` | Amount of the discount. |\n| `currency` | string | `\"VND\"` | Currency of the discount. |\n| `name` | string | `\"discount on base rate\"` | Name or description of the discount. |\n\n### `solution.priceInfo.bedOptions[]` (Bed Option) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"37417\"` | Identifier of the bed option (matches `BedOptionId` from request). |\n| `name` | string | `\"1 giường cỡ king và 2 giường đơn\"` | Description of the bed configuration. |\n| `quantity` | integer | `3` | Number of such bed configurations available/selected for this pricing. |\n\n### `solution.priceInfo.amenities[]` (Price Info Amenity) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"2192\"` | ID of the amenity. |\n| `name` | string | `\"Wifi miễn phí\"` | Name of the amenity. |\n| `categories` | array of strings | `[]` | Categories the amenity belongs to. |\n\n### `solution.priceInfo.promotions[]` (Promotion) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `code` | string | `\"767229032\"` | Code or identifier for the promotion. |\n| `name` | string | `\"Book now and save\"` | Name of the promotion. |\n| `remark` | string | `\"deal\"` | Remark or type of promotion. |\n| `personCount` | string | `\"\"` | Number of persons the promotion applies to. |\n\n### `solution.priceInfo.cancellationPolicies[]` (Cancellation Policy) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `startDate` | string | `\"2025-05-30T18:00:00:0000\"` | ISO 8601 timestamp indicating the start of a penalty period or when a specific policy rule becomes effective. |\n| `endDate` | string | `\"2025-06-01T18:00:00:0000\"` | ISO 8601 timestamp indicating the end of a penalty period or when a specific policy rule is no longer effective. |\n| `currency` | string | `\"VND\"` | Currency for any cancellation fees mentioned in the policy (e.g., \"VND\"). |\n\n---\n\n## Notes\n\n- This API is used to get a confirmed price for a specific room selection before proceeding to booking.\n    \n- The `SolutionId` in the request body is obtained from a previous \"Rooms Search API\" call and links this pricing request to that search context.\n    \n- The `solution.solutionId` in the response is a new ID specific to this pricing quote required for a subsequent booking hotel API call.\n    \n- The `priceDetails.pricePerNight` array provides a granular day-by-day breakdown of costs.\n    \n- Always check the `cancellationPolicies` carefully before confirming a booking.\n    \n- The `solution.hotel.rooms` array in the response will have a length corresponding to `priceInfo.numberOfRooms`, repeating the selected room's details for each room in the original request."
									},
									"response": []
								},
								{
									"name": "6. Book Hotel",
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}"
											},
											{
												"key": "Content-Type",
												"value": "application/json"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"SolutionId\": \"{{hotel.pricing_solution_id}}\",\r\n    \"ConfirmationEmail\": \"thanh.nguyen2@skyjet.vn\",\r\n    \"ContactInfo\": {\r\n        \"Email\": \"thanh.nguyen2@skyjet.vn\"\r\n    },\r\n    \"SpecialRequests\": \"I need a hair dryer\",\r\n    \"checkInDate\": \"2025-08-01\",\r\n    \"checkOutDate\": \"2025-08-15\",\r\n    \"adults\": 3,\r\n    \"children\": {\r\n        \"number\": 3,\r\n        \"ages\": [1, 14, 10]\r\n    },\r\n    \"Guests\": [\r\n        {\r\n            \"FirstName\": \"Thế CTO\",\r\n            \"LastName\": \"Võ\",\r\n            \"CountryTelCode\": \"+84\",\r\n            \"PhoneNumber\": \"987646747\",\r\n            \"Email\": \"the.vo@skyjet.vn\",\r\n            \"Gender\": \"M\",\r\n            \"GuestIndex\": 1\r\n        },\r\n        {\r\n            \"FirstName\": \"Thành Dev4\",\r\n            \"LastName\": \"Nguyễn\",\r\n            \"Email\": \"thanh.nguyen2@skyjet.vn\",\r\n            \"Gender\": \"F\",\r\n            \"GuestIndex\": 2\r\n        }\r\n    ]\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/book",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"book"
											]
										},
										"description": "# Book Hotel API Documentation\n\n## Overview\n\nThis API is used to finalize and create a hotel booking using a `SolutionId` obtained from the Hotel Room Pricing API. It requires contact information, guest details, and confirms the booking terms. Upon successful booking, it returns a booking confirmation with a unique booking ID and detailed information about the reservation.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/book`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\n``` json\n{\n  \"SolutionId\": \"{{hotel.pricing_solution_id}}\",\n  \"ConfirmationEmail\": \"thanh.nguyen@skyjet.vn\",\n  \"ContactInfo\": {\n    \"Email\": \"the.vo@skyjet.vn\"\n  },\n  \"SpecialRequests\": \"I need a hair dryer\",\n  \"checkInDate\": \"2025-06-01\",\n  \"checkOutDate\": \"2025-06-15\",\n  \"adults\": 3,\n  \"children\": {\n    \"number\": 3,\n    \"ages\": [1, 14, 10]\n  },\n  \"Guests\": [\n    {\n      \"FirstName\": \"Thế CTO\",\n      \"LastName\": \"Võ\",\n      \"CountryTelCode\": \"+84\",\n      \"PhoneNumber\": \"987646747\",\n      \"Email\": \"the.vo@skyjet.vn\",\n      \"Gender\": \"M\",\n      \"GuestIndex\": 1\n    },\n    {\n      \"FirstName\": \"Thành Dev\",\n      \"LastName\": \"Nguyễn\",\n      \"Email\": \"thanh.nguyen@skyjet.vn\",\n      \"Gender\": \"F\",\n      \"GuestIndex\": 2\n    }\n  ],\n  \"CallbackUrl\": \"https://test.com/api/hotel/callback\"\n}\n\n ```\n\n---\n\n## Request Field Description\n\nThe main request body contains the following fields:\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `SolutionId` | string | ✅ | `\"a0129256-dbe3-4eea-b950-725ab1f35699\"` | The solution ID obtained from the Hotel Room Pricing API response, confirming the specific price and room configuration to be booked. |\n| `ConfirmationEmail` | string | ✅ | `\"thanh.nguyen@skyjet.vn\"` | Email address to get email confirmation booking |\n| `ContactInfo` | object | ✅ | (see `ContactInfo` object below) | Object containing the primary contact information for the booking. |\n| `SpecialRequests` | string | Optional | `\"I need a hair dryer\"` | Any special requests for the hotel (e.g., \"high floor\", \"extra pillows\"). |\n| `checkInDate` | string | ✅ | `\"2025-06-01\"` | The check-in date for the hotel booking. Format: `YYYY-MM-DD`. Must match the dates associated with the `SolutionId`. |\n| `checkOutDate` | string | ✅ | `\"2025-06-15\"` | The check-out date for the hotel booking. Format: `YYYY-MM-DD`. Must match the dates associated with the `SolutionId`. |\n| `adults` | integer | ✅ | `3` | Total number of adult guests for the booking. Must match the number of adults associated with the `SolutionId`. |\n| `children` | object | Optional | (see `children` object below) | Object containing information about child guests. |\n| `Guests` | array | ✅ | `[...]` (see `Guest` object below) | An array containing details for each guest. At least one primary guest's details are typically required. |\n| `CallbackUrl` | string | Optional | `\"https://test.com/api/hotel/callback\"` | (Optional) If provided, the system will use this URL to send booking order information to the client via HTTP callback after booking is processed. |\n\n#### CallbackUrl Usage\n\nIf the client includes the `CallbackUrl` field in the booking request payload, the system will perform an HTTP callback to the specified URL after the booking is completed. The callback payload will contain the order information for the booking. This allows the client to receive booking status and details asynchronously.\n\n### `ContactInfo` Object\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `Email` | string | ✅ | `\"the.vo@skyjet.vn\"` | Email address of the primary contact person for the booking. |\n\n### `children` Object\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `number` | integer | Optional | `3` | Total number of child guests. Required if `ages` are specified. Defaults to 0 if not provided. |\n| `ages` | array of integers | Optional | `[1, 14, 10]` | An array of ages for each child guest. The length of this array must match `children.number`. Required if `children.number` is greater than 0. |\n\n### `Guests[]` (Guest) Object\n\nEach object in the `Guests` array has the following structure:\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `FirstName` | string | ✅ | `\"Thế CTO\"` | First name of the guest. |\n| `LastName` | string | ✅ | `\"Võ\"` | Last name of the guest. |\n| `CountryTelCode` | string | Optional | `\"+84\"` | Country code for the guest's phone number (e.g., \"+84\"). |\n| `PhoneNumber` | string | Optional | `\"987646747\"` | Phone number of the guest. |\n| `Email` | string | ✅ | `\"the.vo@skyjet.vn\"` | Email address of the guest. |\n| `Gender` | string | Optional | `\"M\"` | Gender of the guest (e.g., \"M\" for Male, \"F\" for Female, \"O\" for Other). |\n| `GuestIndex` | integer | ✅ | `1` | A unique, 1-based index for the guest. This helps associate guests with specific rooms if multiple rooms are booked. |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/hotel/book' \\\n--header 'Authorization: Bearer {token}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"SolutionId\": \"a0129256-dbe3-4eea-b950-725ab1f35699\",\n    \"ConfirmationEmail\": \"thanh.nguyen@skyjet.vn\",\n    \"ContactInfo\": {\n        \"Email\": \"the.vo@skyjet.vn\"\n    },\n    \"SpecialRequests\": \"I need a hair dryer\",\n    \"checkInDate\": \"2025-06-01\",\n    \"checkOutDate\": \"2025-06-15\",\n    \"adults\": 3,\n    \"children\": {\n        \"number\": 3,\n        \"ages\": [1, 14, 10]\n    },\n    \"Guests\": [\n        {\n            \"FirstName\": \"Thế CTO\",\n            \"LastName\": \"Võ\",\n            \"CountryTelCode\": \"+84\",\n            \"PhoneNumber\": \"987646747\",\n            \"Email\": \"the.vo@skyjet.vn\",\n            \"Gender\": \"M\",\n            \"GuestIndex\": 1\n        },\n        {\n            \"FirstName\": \"Thành Dev4\",\n            \"LastName\": \"Nguyễn\",\n            \"Email\": \"thanh.nguyen@skyjet.vn\",\n            \"Gender\": \"F\",\n            \"GuestIndex\": 2\n        }\n    ]\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"id\": \"5c217387-8616-47f7-8f0d-fb12860b5f50\",\n  \"readableId\": \"KS300525B001\",\n  \"solutionId\": \"a0129256-dbe3-4eea-b950-725ab1f35699\",\n  \"orderBaseInfo\": {\n    \"providerCode\": \"hotel.provider1\",\n    \"status\": \"PENDING\",\n    \"statusIsFinal\": false,\n    \"bookingType\": \"hotel\",\n    \"totalAmount\": 198786000.0,\n    \"totalAmountUSD\": 0.0,\n    \"totalAmountVND\": 0.0,\n    \"currency\": \"VND\",\n    \"convertionRate\": 0.0,\n    \"isNeedRebookPNR\": false,\n    \"passengerCount\": 0,\n    \"totalAmountAtHotel\": 0.0,\n    \"payAtHotelCurrency\": \"\",\n    \"refunded\": false,\n    \"lastTicketTime\": \"2025-05-30T08:27:40.3786305Z\"\n  },\n  \"orderHotelInfo\": {\n    \"id\": \"10602dcc-779a-4f4f-8368-3223e5a50d63\",\n    \"hotelBookingId\": \"5c217387-8616-47f7-8f0d-fb12860b5f50\",\n    \"providerReferenceId\": \"12622279\",\n    \"confirmationEmail\": \"thanh.nguyen@skyjet.vn\",\n    \"hotelName\": \"Sherwood Residence\",\n    \"checkInDate\": \"2025-06-01T00:00:00:0000\",\n    \"checkOutDate\": \"2025-06-15T00:00:00:0000\",\n    \"vatIncluded\": false,\n    \"totalAmount\": 0.0,\n    \"hasBreakfast\": true,\n    \"nonSmoking\": true,\n    \"specialRequests\": \"I need a hair dryer\",\n    \"adults\": 3,\n    \"children\": 3,\n    \"childAges\": [1, 14, 10],\n    \"rooms\": [\n      {\n        \"id\": \"00531673-0d50-419f-a494-2b8131a4e42f\",\n        \"hotelBookingInfoId\": \"10602dcc-779a-4f4f-8368-3223e5a50d63\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 1,\n        \"bedOption\": {\n          \"id\": \"b1eb0555-207b-4c81-afca-c91de13e7a4c\",\n          \"hotelRoomId\": \"00531673-0d50-419f-a494-2b8131a4e42f\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"42094bfc-0299-4874-ae08-08dd9f51bf3a\",\n            \"guestIndex\": 1,\n            \"hotelRoomId\": \"00531673-0d50-419f-a494-2b8131a4e42f\",\n            \"firstName\": \"Thế CTO\",\n            \"lastName\": \"Võ\",\n            \"gender\": \"M\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"84\",\n            \"phonedecimal\": \"987646747\",\n            \"email\": \"the.vo@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:12:40:9333\",\n            \"deleted\": false\n          }\n        ]\n      },\n      {\n        \"id\": \"4cf33694-f31e-46e0-830b-7eb9130c0fd7\",\n        \"hotelBookingInfoId\": \"10602dcc-779a-4f4f-8368-3223e5a50d63\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 2,\n        \"bedOption\": {\n          \"id\": \"c04e6125-fbd8-4fe2-ad28-7c908fa5b58e\",\n          \"hotelRoomId\": \"4cf33694-f31e-46e0-830b-7eb9130c0fd7\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"7c967110-1b7b-4dc5-ae09-08dd9f51bf3a\",\n            \"guestIndex\": 2,\n            \"hotelRoomId\": \"4cf33694-f31e-46e0-830b-7eb9130c0fd7\",\n            \"firstName\": \"Thành Dev4\",\n            \"lastName\": \"Nguyễn\",\n            \"gender\": \"F\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"\",\n            \"email\": \"thanh.nguyen@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:12:40:9333\",\n            \"deleted\": false\n          }\n        ]\n      },\n      {\n        \"id\": \"3ee10343-9c75-4763-ad21-6fe2dba72ae2\",\n        \"hotelBookingInfoId\": \"10602dcc-779a-4f4f-8368-3223e5a50d63\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 3,\n        \"bedOption\": {\n          \"id\": \"6bcf04b1-8104-44c2-811b-a377a290f830\",\n          \"hotelRoomId\": \"3ee10343-9c75-4763-ad21-6fe2dba72ae2\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"13cd9147-135b-4fc9-ae0a-08dd9f51bf3a\",\n            \"guestIndex\": 3,\n            \"hotelRoomId\": \"3ee10343-9c75-4763-ad21-6fe2dba72ae2\",\n            \"firstName\": \"Thế CTO\",\n            \"lastName\": \"Võ\",\n            \"gender\": \"M\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"84\",\n            \"phonedecimal\": \"987646747\",\n            \"email\": \"the.vo@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:12:40:9333\",\n            \"deleted\": false\n          }\n        ]\n      }\n    ],\n    \"cancellationPolicies\": [\n      {\n        \"id\": \"fb59bd15-c766-485f-ab55-1d059b36e36d\",\n        \"hotelBookingInfoId\": \"10602dcc-779a-4f4f-8368-3223e5a50d63\",\n        \"penaltyPercent\": 0.0,\n        \"startDate\": \"2025-05-30T18:00:00:0000\",\n        \"endDate\": \"2025-06-01T18:00:00:0000\"\n      }\n    ]\n  },\n  \"passengers\": [],\n  \"contactInfo\": {\n    \"id\": \"ab6048f8-bcea-4940-8c7b-b4ce526c3c27\",\n    \"email\": \"the.vo@skyjet.vn\",\n    \"flightBookingId\": \"00000000-0000-0000-0000-000000000000\",\n    \"deleted\": false\n  },\n  \"priceInfo\": {\n    \"id\": \"bbc571e8-039a-41d0-996e-0d528d4784c2\",\n    \"orderId\": \"5c217387-8616-47f7-8f0d-fb12860b5f50\",\n    \"providerReferenceId\": \"11206348125\",\n    \"couponId\": \"00000000-0000-0000-0000-000000000000\",\n    \"itemType\": 0,\n    \"passengerTotalAmount\": 0.0,\n    \"passengerTotalAmountUSD\": 0.0,\n    \"passengerTotalAmountVND\": 0.0,\n    \"ancillaryTotalAmount\": 0.0,\n    \"ancillaryTotalAmountUSD\": 0.0,\n    \"ancillaryTotalAmountVND\": 0.0,\n    \"seatTotalAmount\": 0.0,\n    \"seatTotalAmountUSD\": 0.0,\n    \"seatTotalAmountVND\": 0.0,\n    \"ticketFeeAmount\": 0.0,\n    \"ticketFeeAmountUSD\": 0.0,\n    \"ticketFeeAmountVND\": 0.0,\n    \"totalAmount\": 198786000.0,\n    \"totalAmountUSD\": 0.0,\n    \"totalAmountVND\": 0.0,\n    \"couponAmount\": 0.0,\n    \"couponAmountUSD\": 0.0,\n    \"couponAmountVND\": 0.0,\n    \"handlingFee\": 0.0,\n    \"handlingFeeUSD\": 0.0,\n    \"handlingFeeVND\": 0.0,\n    \"totalFare\": 0.0,\n    \"totalFareUSD\": 0.0,\n    \"totalFareVND\": 0.0,\n    \"convertionRate\": 0.0,\n    \"currency\": \"VND\",\n    \"totalTax\": 26544000.0,\n    \"surcharges\": 0.0,\n    \"amount\": 172242000.0,\n    \"decimalOfRooms\": 3,\n    \"averagePerNightAmount\": 4101000.0,\n    \"decimalOfNights\": 14,\n    \"priceDetails\": [\n      {\n        \"id\": \"c2350381-3dd3-4b8b-9588-16b8d9951696\",\n        \"priceInfoId\": \"bbc571e8-039a-41d0-996e-0d528d4784c2\",\n        \"count\": 2,\n        \"type\": 0,\n        \"amount\": 57414000.0,\n        \"amountVND\": 0.0,\n        \"amountUSD\": 0.0,\n        \"tax\": 8848000.0,\n        \"taxVND\": 0.0,\n        \"taxUSD\": 0.0,\n        \"fee\": 0.0,\n        \"feeVND\": 0.0,\n        \"feeUSD\": 0.0,\n        \"totalAmount\": 132524000.0,\n        \"totalAmountVND\": 0.0,\n        \"totalAmountUSD\": 0.0,\n        \"averagePerNightAmount\": 4101000.0,\n        \"taxAmount\": 8848000.0,\n        \"decimalOfNights\": 14,\n        \"surcharges\": 0.0,\n        \"discount\": 23959000.0,\n        \"hotelPricePerNights\": [],\n        \"taxes\": [],\n        \"discounts\": []\n      },\n      {\n        \"id\": \"85348b44-d2f8-4543-8921-41032cfef8ae\",\n        \"priceInfoId\": \"bbc571e8-039a-41d0-996e-0d528d4784c2\",\n        \"count\": 1,\n        \"type\": 0,\n        \"amount\": 57414000.0,\n        \"amountVND\": 0.0,\n        \"amountUSD\": 0.0,\n        \"tax\": 8848000.0,\n        \"taxVND\": 0.0,\n        \"taxUSD\": 0.0,\n        \"fee\": 0.0,\n        \"feeVND\": 0.0,\n        \"feeUSD\": 0.0,\n        \"totalAmount\": 66262000.0,\n        \"totalAmountVND\": 0.0,\n        \"totalAmountUSD\": 0.0,\n        \"averagePerNightAmount\": 4101000.0,\n        \"taxAmount\": 8848000.0,\n        \"decimalOfNights\": 14,\n        \"surcharges\": 0.0,\n        \"discount\": 23959000.0,\n        \"hotelPricePerNights\": [],\n        \"taxes\": [],\n        \"discounts\": []\n      }\n    ],\n    \"createdUtc\": \"0001-01-01T00:00:00:0000\",\n    \"updatedUtc\": \"0001-01-01T00:00:00:0000\",\n    \"totalAmountAtHotel\": 0.0,\n    \"payAtHotelCurrency\": \"\",\n    \"refundable\": true,\n    \"hasBreakfast\": false,\n    \"extraBed\": false,\n    \"nonSmoking\": false\n  },\n  \"createdBy\": \"thanh.nguyen2@skyjet.vn\",\n  \"createdUtc\": \"2025-05-30T08:12:40:6966\",\n  \"updatedUtc\": \"2025-05-30T08:12:40:6966\"\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response object contains the following fields:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"5c217387-8616-47f7-8f0d-fb12860b5f50\"` | The unique identifier for this booking/order. This is the primary ID for referencing the booking. |\n| `readableId` | string | `\"KS300525B001\"` | A human-readable identifier for the booking. |\n| `solutionId` | string | `\"a0129256-dbe3-4eea-b950-725ab1f35699\"` | The Solution ID from the request, linking this booking to the specific pricing quote. |\n| `orderBaseInfo` | object | (see `orderBaseInfo` object below) | Contains general information about the order. |\n| `orderHotelInfo` | object | (see `orderHotelInfo` object below) | Contains detailed information specific to the hotel booking. |\n| `passengers` | array | `[]` | Array of passenger details (typically empty for hotel-only bookings). |\n| `contactInfo` | object | (see `contactInfo` object below) | Contact information associated with the booking. |\n| `priceInfo` | object | (see `priceInfo` object below) | Detailed breakdown of the price for this booking, confirming the priced solution. |\n| `createdBy` | string | `\"thanh.nguyen2@skyjet.vn\"` | Identifier (e.g., email) of the user/system that created the booking. |\n| `createdUtc` | string | `\"2025-05-30T08:12:40:6966\"` | ISO 8601 datetime string of when the booking was created. |\n| `updatedUtc` | string | `\"2025-05-30T08:12:40:6966\"` | ISO 8601 datetime string of the last update to the booking. |\n\n### `orderBaseInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `providerCode` | string | `\"hotel.provider1\"` | The code of the hotel provider. |\n| `status` | string | `\"PENDING\"` | Current status of the booking (e.g., \"PENDING\", \"CONFIRMED\"). |\n| `statusIsFinal` | boolean | `false` | Indicates if the current status is the final status of the booking. |\n| `bookingType` | string | `\"hotel\"` | Type of booking. |\n| `totalAmount` | decimal | `198786000.0` | The grand total amount for the booking in the specified currency. |\n| `totalAmountUSD` | decimal | `0.0` | Total amount converted to USD (may be 0). |\n| `totalAmountVND` | decimal | `0.0` | Total amount converted to VND (may be 0). |\n| `currency` | string | `\"VND\"` | The currency code for `totalAmount`. |\n| `convertionRate` | decimal | `0.0` | Conversion rate used if amounts are provided in multiple currencies. |\n| `isNeedRebookPNR` | boolean | `false` | Indicates if a PNR rebooking is needed. |\n| `passengerCount` | integer | `0` | Total number of passengers (typically 0 for hotel-only bookings). |\n| `totalAmountAtHotel` | decimal | `0.0` | Amount to be paid directly at the hotel, if any. |\n| `payAtHotelCurrency` | string | `\"\"` | Currency for the amount to be paid at the hotel. |\n| `refunded` | boolean | `false` | Indicates if the booking has been refunded. |\n| `lastTicketTime` | string | `\"2025-05-30T08:27:40.3786305Z\"` | ISO 8601 datetime string representing the deadline for payment or ticketing (if applicable). |\n\n### `orderHotelInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"10602dcc-779a-4f4f-8368-3223e5a50d63\"` | Unique identifier for the hotel-specific part of this booking. |\n| `hotelBookingId` | string | `\"5c217387-8616-47f7-8f0d-fb12860b5f50\"` | References the main booking `id`. |\n| `providerReferenceId` | string | `\"12622279\"` | The hotel's unique ID from the provider's system. |\n| `confirmationEmail` | string | `\"thanh.nguyen@skyjet.vn\"` | Confirmation email for the booking. |\n| `hotelName` | string | `\"Sherwood Residence\"` | Name of the booked hotel. |\n| `checkInDate` | string | `\"2025-06-01T00:00:00:0000\"` | ISO 8601 datetime string for the check-in date. |\n| `checkOutDate` | string | `\"2025-06-15T00:00:00:0000\"` | ISO 8601 datetime string for the check-out date. |\n| `vatIncluded` | boolean | `false` | Indicates if VAT is included in the price. |\n| `totalAmount` | decimal | `0.0` | Total amount specific to hotel info (overall total is elsewhere). |\n| `hasBreakfast` | boolean | `true` | Indicates if breakfast is included in the booking. |\n| `nonSmoking` | boolean | `true` | Indicates if the booked room is non-smoking. |\n| `specialRequests` | string | `\"I need a hair dryer\"` | Special requests submitted with the booking. |\n| `adults` | integer | `3` | Number of adults in the booking. |\n| `children` | integer | `3` | Number of children in the booking. |\n| `childAges` | array of integers | `[1, 14, 10]` | Ages of the children. |\n| `rooms` | array of objects | `[...]` (see `orderHotelInfo.room` below) | Details of each room booked. |\n| `cancellationPolicies` | array of objects | `[...]` (see `orderHotelInfo.cancellationPolicy` below) | Applicable cancellation policies for the booking. |\n\n### `orderHotelInfo.rooms[]` (Booked Room) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"00531673-0d50-419f-a494-2b8131a4e42f\"` | Unique identifier for this specific booked room instance. |\n| `hotelBookingInfoId` | string | `\"10602dcc-779a-4f4f-8368-3223e5a50d63\"` | References `orderHotelInfo.id`. |\n| `providerCode` | string | `\"hotel.provider1\"` | Provider code for this room. |\n| `providerReferenceId` | string | `\"12622279-201309111\"` | The room type's ID from the provider. |\n| `roomName` | string | `\"3 Bedroom Premier with Balcony\"` | Name of the booked room type. |\n| `guestIndex` | integer | `1` | Index indicating primary guest association or room sequence. |\n| `bedOption` | object | (see `bedOption` object below) | Details of the bed option selected for this room. |\n| `guests` | array | `[...]` (see `orderHotelInfo.room.guest` below) | Guest(s) assigned to this specific room instance. |\n\n### `orderHotelInfo.rooms[].bedOption` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"b1eb0555-207b-4c81-afca-c91de13e7a4c\"` | Unique identifier for this booked bed option instance. |\n| `hotelRoomId` | string | `\"00531673-0d50-419f-a494-2b8131a4e42f\"` | References `orderHotelInfo.rooms[].id`. |\n| `providerReferenceId` | string | `\"37417\"` | The bed option's ID from the provider. |\n| `name` | string | `\"1 giường cỡ king và 2 giường đơn\"` | Description of the bed option. |\n| `quantity` | integer | `3` | Quantity related to the bed option. |\n\n### `orderHotelInfo.rooms[].guests[]` (Booked Guest) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"42094bfc-0299-4874-ae08-08dd9f51bf3a\"` | Unique identifier for this guest instance in the booking. |\n| `guestIndex` | integer | `1` | The `GuestIndex` from the request associated with this guest. |\n| `hotelRoomId` | string | `\"00531673-0d50-419f-a494-2b8131a4e42f\"` | References `orderHotelInfo.rooms[].id`. |\n| `firstName` | string | `\"Thế CTO\"` | First name of the guest. |\n| `lastName` | string | `\"Võ\"` | Last name of the guest. |\n| `gender` | string | `\"M\"` | Gender of the guest. |\n| `dateOfBirth` | string | `\"0001-01-01T00:00:00:0000\"` | ISO 8601 datetime string for the guest's date of birth (defaults if not provided). |\n| `countryTelCode` | string | `\"84\"` | Country telephone code for the guest. |\n| `phoneNumber` | string | `\"987646747\"` | Phone number of the guest. (Note: Sample response has `phonedecimal`, request has `PhoneNumber`. I'll use `PhoneNumber` for consistency, assuming a typo in response sample). |\n| `email` | string | `\"the.vo@skyjet.vn\"` | Email address of the guest. |\n| `updatedUtc` | string | `\"2025-05-30T08:12:40:9333\"` | ISO 8601 datetime string of the last update to this guest's record. |\n| `deleted` | boolean | `false` | Indicates if this guest record is marked as deleted. |\n\n### `orderHotelInfo.cancellationPolicies[]` (Cancellation Policy) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"fb59bd15-c766-485f-ab55-1d059b36e36d\"` | Unique identifier for the cancellation policy instance. |\n| `hotelBookingInfoId` | string | `\"10602dcc-779a-4f4f-8368-3223e5a50d63\"` | References `orderHotelInfo.id`. |\n| `penaltyPercent` | decimal | `0.0` | Percentage of booking value charged as penalty if cancellation occurs within the specified dates. |\n| `startDate` | string | `\"2025-05-30T18:00:00:0000\"` | ISO 8601 datetime string for the start date of this cancellation policy window. |\n| `endDate` | string | `\"2025-06-01T18:00:00:0000\"` | ISO 8601 datetime string for the end date of this cancellation policy window. |\n\n### `contactInfo` (Booking Contact) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"ab6048f8-bcea-4940-8c7b-b4ce526c3c27\"` | Unique identifier for the contact information record. |\n| `email` | string | `\"the.vo@skyjet.vn\"` | Email of the primary contact. |\n| `flightBookingId` | string | `\"00000000-0000-0000-0000-000000000000\"` | Identifier for a flight booking if linked (typically zero GUID for hotel-only). |\n| `deleted` | boolean | `false` | Indicates if this contact record is marked as deleted. |\n\n### `priceInfo` (Booking Price) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"bbc571e8-039a-41d0-996e-0d528d4784c2\"` | Unique identifier for this price information record. |\n| `orderId` | string | `\"5c217387-8616-47f7-8f0d-fb12860b5f50\"` | References the main booking `id`. |\n| `providerReferenceId` | string | `\"11206348125\"` | The price option ID from the provider, associated with the `SolutionId`. |\n| `couponId` | string | `\"00000000-0000-0000-0000-000000000000\"` | ID of any coupon applied (zero GUID if none). |\n| `itemType` | integer | `0` | Type of item being priced (e.g., 0 for standard). |\n| `totalAmount` | decimal | `198786000.0` | Grand total amount for the booking (should match `orderBaseInfo.totalAmount`). |\n| `currency` | string | `\"VND\"` | Currency code for the pricing (e.g., \"VND\"). |\n| `totalTax` | decimal | `26544000.0` | Total tax amount included in `totalAmount`. |\n| `surcharges` | decimal | `0.0` | Total surcharges included in `totalAmount`. |\n| `amount` | decimal | `172242000.0` | Base amount before taxes and surcharges (`totalAmount` - `totalTax` - `surcharges`). |\n| `numberOfRooms` | integer | `3` | Number of rooms in the booking. (Note: Sample has `decimalOfRooms`. I'll use `numberOfRooms` for consistency) |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average base price per night per room. |\n| `numberOfNights` | integer | `14` | Total number of nights for the stay. (Note: Sample has `decimalOfNights`. I'll use `numberOfNights`) |\n| `priceDetails` | array of objects | `[...]` (see `priceInfo.priceDetail` below) | Detailed price breakdown, often per room or guest type configuration. |\n| `createdUtc` | string | `\"0001-01-01T00:00:00:0000\"` | ISO 8601 datetime string of when this price info was created. |\n| `updatedUtc` | string | `\"0001-01-01T00:00:00:0000\"` | ISO 8601 datetime string of the last update. |\n| `totalAmountAtHotel` | decimal | `0.0` | Amount to be paid at the hotel. |\n| `payAtHotelCurrency` | string | `\"\"` | Currency for payment at the hotel. |\n| `refundable` | boolean | `true` | Indicates if the booked rate is refundable. |\n| `hasBreakfast` | boolean | `false` | Indicates if breakfast is included. |\n| `extraBed` | boolean | `false` | Indicates if an extra bed is included. |\n| `nonSmoking` | boolean | `false` | Indicates if the room is non-smoking. |\n\n### `priceInfo.priceDetails[]` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"c2350381-3dd3-4b8b-9588-16b8d9951696\"` | Unique ID for this price detail line. |\n| `priceInfoId` | string | `\"bbc571e8-039a-41d0-996e-0d528d4784c2\"` | References `priceInfo.id`. |\n| `count` | integer | `2` | Number of units (e.g., rooms) this price detail line applies to. |\n| `type` | integer | `0` | Type categorizing this price detail. |\n| `amount` | decimal | `57414000.0` | Sub-total base amount for this line. |\n| `tax` | decimal | `8848000.0` | Sub-total tax for this line. |\n| `fee` | decimal | `0.0` | Sub-total fee for this line. |\n| `totalAmount` | decimal | `132524000.0` | Sub-total amount for this line (amount + tax + fee - discount). |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average per night amount for this line. |\n| `taxAmount` | decimal | `8848000.0` | Tax amount for this line (often same as `tax`). |\n| `numberOfNights` | integer | `14` | Number of nights for this line. (Note: Sample has `decimalOfNights`. I'll use `numberOfNights`) |\n| `surcharges` | decimal | `0.0` | Surcharges for this line. |\n| `discount` | decimal | `23959000.0` | Discount amount applied to this line. |\n| `hotelPricePerNights` | array | `[]` | Array for daily price breakdown (empty in sample). |\n| `taxes` | array | `[]` | Array for detailed tax breakdown (empty in sample). |\n| `discounts` | array | `[]` | Array for detailed discount breakdown (empty in sample). |\n\n---\n\n## Notes\n\n- The `SolutionId` provided in the request is crucial as it links the booking to a previously confirmed price and room configuration from the \"Get Pricing API\".\n    \n- Ensure all guest information, especially for the primary guest(s), is accurate. The number of objects in the `Guests` array in the request should generally correspond to the number of lead guests required or for each room if booking multiple rooms.\n    \n- The `checkInDate`, `checkOutDate`, `adults`, and `children` (if any) in the request must match the parameters used to obtain the `SolutionId`.\n    \n- The response status `orderBaseInfo.status` (e.g., \"BOOKED\") indicates the current state of the booking. `statusIsFinal: false` for \"BOOKED\" suggests payment or further action might be required before confirmation.\n    \n- The `lastTicketTime` field in `orderBaseInfo` is important, as it indicates a deadline by which payment must be completed for the booking to be finalized, especially if the status is \"PENDING\".\n    \n- Review the `orderHotelInfo.cancellationPolicies` in the response carefully to understand the terms and conditions for canceling the booking.\n    \n- The `readableId` is a user-friendly reference, while the main `id` (GUID) is the system's primary identifier for the booking.\n    \n- The `priceInfo` object in the response re-confirms the detailed pricing breakdown for the booked `SolutionId`.\n    \n- There are some minor inconsistencies between request field names (e.g., `Guests[].PhoneNumber`) and sample response field names (e.g., `orderHotelInfo.rooms[].guests[].phonedecimal`). The documentation attempts to standardize based on the request or the more common naming where possible. The same applies to `decimalOfRooms` vs `numberOfRooms` and `decimalOfNights` vs `numberOfNights`.\n    \n\n---"
									},
									"response": []
								}
							],
							"description": "The Booking section covers the full hotel reservation workflow—from searching destinations to selecting rooms, checking prices, and confirming bookings. These endpoints are designed to create a smooth and customizable booking experience.\n\n| Method | Endpoint | Description |\n| --- | --- | --- |\n| `POST` | `1. Search Destinations` | Search for travel destinations based on user input or preferences. |\n| `POST` | `2. Search Hotels` | Search available hotels in a specific destination and date range. |\n| `POST` | `3. Get Hotel Details` | Get full details of a specific hotel (amenities, photos, location, etc.). |\n| `POST` | `4. Search Rooms` | Get a list of available rooms in a selected hotel. |\n| `POST` | `5. Get Pricing` | Retrieve room pricing based on selected dates and number of guests. |\n| `POST` | `6. Book Hotel` | Create a new hotel booking based on selected hotel, room, and guest details. |"
						},
						{
							"name": "Manage Booking",
							"item": [
								{
									"name": "1. Search Booking",
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}",
												"type": "text"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"pageIndex\":0,\r\n    \"pageSize\": 20\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/booking/search",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"booking",
												"search"
											]
										},
										"description": "# Search Booking Hotel API Documentation\n\n## Overview\n\nThis API allows users to search for and retrieve a list of their hotel bookings. It supports pagination to handle a large number of bookings. The search can be filtered by various criteria (though the sample request only shows pagination, other filters might be supported by the API but not documented here).\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/booking/search`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\n``` json\n{\n  \"pageIndex\": 0,\n  \"pageSize\": 20\n}\n\n ```\n\n---\n\n## Request Field Description\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `pageIndex` | integer | ✅ | `0` | The 0-based index of the page to retrieve. For the first page, use 0. |\n| `pageSize` | integer | ✅ | `20` | The number of booking records to return per page. For example, 20. |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/hotel/booking/search' \\\n--header 'Authorization: Bearer {token}' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"pageIndex\":0,\n    \"pageSize\": 20\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"durationInMilisecond\": 187,\n  \"totalCount\": 121,\n  \"totalPage\": 7,\n  \"pageSize\": 20,\n  \"pageIndex\": 0,\n  \"clientOverride\": false,\n  \"data\": [\n    {\n      \"id\": \"5c217387-8616-47f7-8f0d-fb12860b5f50\",\n      \"readableId\": \"KS300525B001\",\n      \"orderBaseInfo\": {\n        \"providerCode\": \"hotel.provider1\",\n        \"status\": \"PENDING\",\n        \"statusIsFinal\": false,\n        \"bookingType\": \"hotel\",\n        \"totalAmount\": 198786000.0,\n        \"totalAmountUSD\": 0.0,\n        \"totalAmountVND\": 0.0,\n        \"currency\": \"VND\",\n        \"convertionRate\": 0.0,\n        \"isNeedRebookPNR\": false,\n        \"passengerCount\": 0,\n        \"totalAmountAtHotel\": 0.0,\n        \"payAtHotelCurrency\": \"\",\n        \"refunded\": false,\n        \"lastTicketTime\": \"2025-05-30T08:27:40.3786305Z\"\n      },\n      \"orderHotelInfo\": {\n        \"id\": \"10602dcc-779a-4f4f-8368-3223e5a50d63\",\n        \"hotelBookingId\": \"5c217387-8616-47f7-8f0d-fb12860b5f50\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279\",\n        \"hotelName\": \"Sherwood Residence\",\n        \"vatIncluded\": false,\n        \"hasBreakfast\": true,\n        \"extraBed\": false,\n        \"nonSmoking\": true,\n        \"rooms\": [\n          {\n            \"id\": \"00531673-0d50-419f-a494-2b8131a4e42f\",\n            \"providerCode\": \"hotel.provider1\",\n            \"providerReferenceId\": \"12622279-201309111\",\n            \"roomName\": \"3 Bedroom Premier with Balcony\",\n            \"guestIndex\": 1,\n            \"firstName\": \"Thế CTO\",\n            \"lastName\": \"Võ\",\n            \"phoneNumber\": \"987646747\",\n            \"email\": \"the.vo@skyjet.vn\",\n            \"bedOption\": {\n              \"id\": \"b1eb0555-207b-4c81-afca-c91de13e7a4c\",\n              \"name\": \"1 giường cỡ king và 2 giường đơn\",\n              \"quantity\": 3\n            }\n          },\n          {\n            \"id\": \"4cf33694-f31e-46e0-830b-7eb9130c0fd7\",\n            \"providerCode\": \"hotel.provider1\",\n            \"providerReferenceId\": \"12622279-201309111\",\n            \"roomName\": \"3 Bedroom Premier with Balcony\",\n            \"guestIndex\": 2,\n            \"firstName\": \"Thành Dev4\",\n            \"lastName\": \"Nguyễn\",\n            \"email\": \"thanh.nguyen@skyjet.vn\",\n            \"bedOption\": {\n              \"id\": \"c04e6125-fbd8-4fe2-ad28-7c908fa5b58e\",\n              \"name\": \"1 giường cỡ king và 2 giường đơn\",\n              \"quantity\": 3\n            }\n          },\n          {\n            \"id\": \"3ee10343-9c75-4763-ad21-6fe2dba72ae2\",\n            \"providerCode\": \"hotel.provider1\",\n            \"providerReferenceId\": \"12622279-201309111\",\n            \"roomName\": \"3 Bedroom Premier with Balcony\",\n            \"guestIndex\": 3,\n            \"firstName\": \"Thế CTO\",\n            \"lastName\": \"Võ\",\n            \"phoneNumber\": \"987646747\",\n            \"email\": \"the.vo@skyjet.vn\",\n            \"bedOption\": {\n              \"id\": \"6bcf04b1-8104-44c2-811b-a377a290f830\",\n              \"name\": \"1 giường cỡ king và 2 giường đơn\",\n              \"quantity\": 3\n            }\n          }\n        ]\n      },\n      \"orderHotelContactInfo\": {\n        \"email\": \"the.vo@skyjet.vn\"\n      },\n      \"createdBy\": \"thanh.nguyen2@skyjet.vn\",\n      \"agentId\": \"NV9999\",\n      \"createdUtc\": \"2025-05-30T08:12:40:6966\",\n      \"updatedBy\": \"694E6C9E-ED3C-43EB-A50F-389ADE398E85\",\n      \"updatedUtc\": \"2025-05-30T08:27:40:6785\"\n    }\n  ]\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response object contains the following fields:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `durationInMilisecond` | integer | `187` | The time taken by the server to process the search request, in milliseconds. |\n| `totalCount` | integer | `121` | The total number of booking records matching the search criteria across all pages. |\n| `totalPage` | integer | `7` | The total number of pages available for the given `pageSize` and `totalCount`. |\n| `pageSize` | integer | `20` | The number of booking records returned per page (matches the request). |\n| `pageIndex` | integer | `0` | The 0-based index of the current page (matches the request). |\n| `clientOverride` | boolean | `false` | A flag indicating if any client-side override was applied (details would depend on system logic). |\n| `data` | array of objects | `[...]` (see `bookingRecord` object below) | An array containing the booking records for the current page. Each object represents a single booking. |\n\n### `data[]` (Booking Record) Object\n\nEach object in the `data` array represents a booking and has the following structure:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"5c217387-8616-47f7-8f0d-fb12860b5f50\"` | The unique identifier for the booking/order. |\n| `readableId` | string | `\"KS300525B001\"` | A human-readable identifier for the booking. |\n| `orderBaseInfo` | object | (see `orderBaseInfo` object below) | General information about the order. |\n| `orderHotelInfo` | object | (see `orderHotelInfo` object below) | Detailed information specific to the hotel booking. |\n| `orderHotelContactInfo` | object | (see `orderHotelContactInfo` object below) | Contact information for the hotel booking. |\n| `createdBy` | string | `\"thanh.nguyen2@skyjet.vn\"` | Identifier (e.g., email) of the user/system that created the booking. |\n| `agentId` | string | `\"NV9999\"` | Identifier of the agent, if the booking was made by an agent. |\n| `createdUtc` | string | `\"2025-05-30T08:12:40:6966\"` | ISO 8601 datetime string of when the booking was created. |\n| `updatedBy` | string | `\"694E6C9E-ED3C-43EB-A50F-389ADE398E85\"` | Identifier of the user/system that last updated the booking. |\n| `updatedUtc` | string | `\"2025-05-30T08:27:40:6785\"` | ISO 8601 datetime string of the last update to the booking. |\n\n### `orderBaseInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `providerCode` | string | `\"hotel.provider1\"` | The code of the hotel provider. |\n| `status` | string | `\"PENDING\"` | Current status of the booking (e.g., \"EXPIRED\", \"PENDING\", \"CONFIRMED\"). |\n| `statusIsFinal` | boolean | `false` | Indicates if the current status is the final status of the booking. |\n| `bookingType` | string | `\"hotel\"` | Type of booking (e.g., \"hotel\"). |\n| `totalAmount` | decimal | `198786000.0` | The grand total amount for the booking in the specified currency. |\n| `totalAmountUSD` | decimal | `0.0` | Total amount in USD. |\n| `totalAmountVND` | decimal | `0.0` | Total amount in VND. |\n| `currency` | string | `\"VND\"` | The currency code for `totalAmount`. |\n| `convertionRate` | decimal | `0.0` | Conversion rate used. |\n| `isNeedRebookPNR` | boolean | `false` | Indicates if PNR rebooking is needed. |\n| `passengerCount` | integer | `0` | Number of passengers (for flight related bookings). |\n| `totalAmountAtHotel` | decimal | `0.0` | Amount to be paid at the hotel. |\n| `payAtHotelCurrency` | string | `\"\"` | Currency for hotel payment. |\n| `refunded` | boolean | `false` | Indicates if the booking was refunded. |\n| `lastTicketTime` | string | `\"2025-05-30T08:27:40.3786305Z\"` | ISO 8601 datetime string representing a deadline related to the booking (e.g., payment). |\n\n### `orderHotelInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"10602dcc-779a-4f4f-8368-3223e5a50d63\"` | Unique identifier for the hotel-specific part of this booking. |\n| `hotelBookingId` | string | `\"5c217387-8616-47f7-8f0d-fb12860b5f50\"` | References the main booking `id`. |\n| `providerCode` | string | `\"hotel.provider1\"` | Provider code for the hotel. |\n| `providerReferenceId` | string | `\"12622279\"` | The hotel's unique ID from the provider's system. |\n| `hotelName` | string | `\"Sherwood Residence\"` | Name of the booked hotel. |\n| `vatIncluded` | boolean | `false` | Indicates if VAT is included. |\n| `hasBreakfast` | boolean | `true` | Indicates if breakfast is included. |\n| `extraBed` | boolean | `false` | Indicates if an extra bed is included. |\n| `nonSmoking` | boolean | `true` | Indicates if the booked room is non-smoking. |\n| `rooms` | array of objects | `[...]` (see `orderHotelInfo.room` object below) | Details of each room booked (summary, lead guest info per room). |\n\n### `orderHotelInfo.rooms[]` (Booked Room Summary) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"00531673-0d50-419f-a494-2b8131a4e42f\"` | Unique identifier for this booked room instance. |\n| `providerCode` | string | `\"hotel.provider1\"` | Provider code for this room. |\n| `providerReferenceId` | string | `\"12622279-201309111\"` | The room type's ID from the provider. |\n| `roomName` | string | `\"3 Bedroom Premier with Balcony\"` | Name of the booked room type. |\n| `guestIndex` | integer | `1` | Index indicating which guest (from original booking) is associated with this room. |\n| `firstName` | string | `\"Thế CTO\"` | First name of the lead guest for this room. |\n| `lastName` | string | `\"Võ\"` | Last name of the lead guest for this room. |\n| `phoneNumber` | string | `\"987646747\"` | Phone number of the lead guest for this room (if available). |\n| `email` | string | `\"the.vo@skyjet.vn\"` | Email of the lead guest for this room. |\n| `bedOption` | object | (see `bedOption` object below) | Details of the bed option selected for this room. |\n\n### `orderHotelInfo.rooms[].bedOption` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"b1eb0555-207b-4c81-afca-c91de13e7a4c\"` | Unique identifier for this booked bed option instance. |\n| `name` | string | `\"1 giường cỡ king và 2 giường đơn\"` | Description of the bed option. |\n| `quantity` | integer | `3` | Quantity related to the bed option. |\n\n### `orderHotelContactInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `email` | string | `\"the.vo@skyjet.vn\"` | Primary contact email for the booking. |\n\n---\n\n## Notes\n\n- This API is used to retrieve a paginated list of existing hotel bookings.\n    \n- The `pageIndex` and `pageSize` parameters are mandatory for pagination.\n    \n- The response includes pagination metadata (`totalCount`, `totalPage`, etc.) to help navigate through the booking records.\n    \n- Each item in the `data` array represents a booking and contains a summary of the booking details. For full booking details, you might need to use a \"Get Booking Details\" API using the `id`.\n    \n- The structure of `orderHotelInfo.rooms` in this search response is a summarized version, primarily showing lead guest information per room, compared to the more detailed guest list in the \"Book Hotel API\" response.\n    \n- Additional request parameters for filtering (e.g., by date, status, booking ID) might be supported by the API but are not detailed in the provided sample. Check with the API provider for a full list of supported filters.\n    \n\n---"
									},
									"response": []
								},
								{
									"name": "2. Get Booking By Id",
									"request": {
										"method": "GET",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}"
											}
										],
										"url": {
											"raw": "{{host}}/hub/hotel/booking/{{orderId}}",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"booking",
												"{{orderId}}"
											]
										},
										"description": "# Get Hotel Booking By Id API Documentation\n\n## Overview\n\nThis API endpoint allows you to retrieve detailed information for a specific hotel booking using its unique booking ID.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/booking/{{orderId}}`\n    \n- **Method:** `GET`\n    \n\n### Path Parameters\n\n| Parameter | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `bookingId` | string | ✅ | `\"518d166a-c0a2-4e9a-85c5-58bc3662c723\"` | The unique identifier of the booking. |\n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\nNo request body required for `GET` method.\n\n---\n\n## Request Field Description\n\n_(Not applicable as the request body is empty for a GET request by ID in the path.)_\n\n---\n\n## Sample Request\n\nReplace `{{orderId}}` with the actual ID of the booking (e.g., `518d166a-c0a2-4e9a-85c5-58bc3662c723`).\n\n``` bash\ncurl --location --request GET 'https://api.skyjet.vn/hub/hotel/booking/518d166a-c0a2-4e9a-85c5-58bc3662c723' \\\n--header 'Authorization: Bearer {token}'\n\n ```\n\n---\n\n## Sample Response Body\n\n``` json\n{\n  \"id\": \"518d166a-c0a2-4e9a-85c5-58bc3662c723\",\n  \"readableId\": \"KS300525B001\",\n  \"solutionId\": \"703ab26b-59be-4f1c-ad85-54a25073dc15\",\n  \"orderBaseInfo\": {\n    \"providerCode\": \"hotel.provider1\",\n    \"providerReferenceId\": \"772748716\",\n    \"status\": \"CLOSED\",\n    \"statusIsFinal\": true,\n    \"bookingType\": \"hotel\",\n    \"totalAmount\": 198786000.0,\n    \"totalAmountUSD\": 0.0,\n    \"totalAmountVND\": 0.0,\n    \"currency\": \"VND\",\n    \"convertionRate\": 0.0,\n    \"isNeedRebookPNR\": false,\n    \"passengerCount\": 0,\n    \"totalAmountAtHotel\": 0.0,\n    \"payAtHotelCurrency\": \"\",\n    \"refunded\": true,\n    \"lastTicketTime\": \"2025-05-30T09:13:12.1954104Z\"\n  },\n  \"orderHotelInfo\": {\n    \"id\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n    \"hotelBookingId\": \"518d166a-c0a2-4e9a-85c5-58bc3662c723\",\n    \"providerReferenceId\": \"12622279\",\n    \"confirmationCode\": \"762790247167277|117187268208048|731391168320904\",\n    \"confirmationEmail\": \"thanh.nguyen2@skyjet.vn\",\n    \"hotelName\": \"Sherwood Residence\",\n    \"checkInDate\": \"2025-06-01T00:00:00:0000\",\n    \"checkOutDate\": \"2025-06-15T00:00:00:0000\",\n    \"vatIncluded\": false,\n    \"totalAmount\": 0.0,\n    \"hasBreakfast\": true,\n    \"nonSmoking\": true,\n    \"specialRequests\": \"I need a hair dryer\",\n    \"adults\": 3,\n    \"children\": 3,\n    \"childAges\": [1, 14, 10],\n    \"rooms\": [\n      {\n        \"id\": \"a765a69a-44f9-4050-a06d-b2383569d402\",\n        \"hotelBookingInfoId\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"confirmationCode\": \"762790247167277\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 1,\n        \"guestType\": \"1adt,3chd-1,14,10\",\n        \"bedOption\": {\n          \"id\": \"7069f565-6dd9-454c-b185-7994f3582e87\",\n          \"hotelRoomId\": \"a765a69a-44f9-4050-a06d-b2383569d402\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"c69d7aac-5623-4e7c-fce1-08dd9f581b89\",\n            \"guestIndex\": 1,\n            \"hotelRoomId\": \"a765a69a-44f9-4050-a06d-b2383569d402\",\n            \"firstName\": \"Thế CTO\",\n            \"lastName\": \"Võ\",\n            \"gender\": \"M\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"84\",\n            \"phoneNumber\": \"987646747\",\n            \"email\": \"the.vo@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:58:12:8600\",\n            \"deleted\": false\n          }\n        ]\n      },\n      {\n        \"id\": \"b37b0946-74c7-4361-a0b0-22736a270e4e\",\n        \"hotelBookingInfoId\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"confirmationCode\": \"117187268208048\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 2,\n        \"guestType\": \"1adt\",\n        \"bedOption\": {\n          \"id\": \"9256af1c-4bf0-4a7d-a8b8-80751bde7dbb\",\n          \"hotelRoomId\": \"b37b0946-74c7-4361-a0b0-22736a270e4e\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"ff6fc3f6-432f-45cf-fce2-08dd9f581b89\",\n            \"guestIndex\": 2,\n            \"hotelRoomId\": \"b37b0946-74c7-4361-a0b0-22736a270e4e\",\n            \"firstName\": \"Thành Dev4\",\n            \"lastName\": \"Nguyễn\",\n            \"gender\": \"F\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"\",\n            \"email\": \"thanh.nguyen@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:58:12:8600\",\n            \"deleted\": false\n          }\n        ]\n      },\n      {\n        \"id\": \"e247f7af-051d-45df-b3c9-3627e4ef726e\",\n        \"hotelBookingInfoId\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"confirmationCode\": \"731391168320904\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 3,\n        \"guestType\": \"1adt\",\n        \"bedOption\": {\n          \"id\": \"f06c6bd8-f90e-434c-9132-32fcfa595b26\",\n          \"hotelRoomId\": \"e247f7af-051d-45df-b3c9-3627e4ef726e\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"e4ebaa25-69b1-4dca-fce3-08dd9f581b89\",\n            \"guestIndex\": 3,\n            \"hotelRoomId\": \"e247f7af-051d-45df-b3c9-3627e4ef726e\",\n            \"firstName\": \"Thế CTO\",\n            \"lastName\": \"Võ\",\n            \"gender\": \"M\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"84\",\n            \"phoneNumber\": \"987646747\",\n            \"email\": \"the.vo@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:58:12:8600\",\n            \"deleted\": false\n          }\n        ]\n      }\n    ],\n    \"cancellationPolicies\": [\n      {\n        \"id\": \"d966c86a-3e58-40a3-9f4e-064a08ca6f7a\",\n        \"hotelBookingInfoId\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n        \"penaltyPercent\": 0.0,\n        \"startDate\": \"2025-05-30T18:00:00:0000\",\n        \"endDate\": \"2025-06-01T18:00:00:0000\"\n      }\n    ]\n  },\n  \"passengers\": [],\n  \"contactInfo\": {\n    \"id\": \"774a8bff-50bc-4ee6-92a7-f10bef90aee2\",\n    \"email\": \"the.vo@skyjet.vn\",\n    \"flightBookingId\": \"00000000-0000-0000-0000-000000000000\",\n    \"deleted\": false\n  },\n  \"priceInfo\": {\n    \"id\": \"d4765828-355d-43a6-834c-116c0a77617a\",\n    \"orderId\": \"518d166a-c0a2-4e9a-85c5-58bc3662c723\",\n    \"providerReferenceId\": \"11206348125\",\n    \"couponId\": \"00000000-0000-0000-0000-000000000000\",\n    \"itemType\": 0,\n    \"passengerTotalAmount\": 0.0,\n    \"passengerTotalAmountUSD\": 0.0,\n    \"passengerTotalAmountVND\": 0.0,\n    \"ancillaryTotalAmount\": 0.0,\n    \"ancillaryTotalAmountUSD\": 0.0,\n    \"ancillaryTotalAmountVND\": 0.0,\n    \"seatTotalAmount\": 0.0,\n    \"seatTotalAmountUSD\": 0.0,\n    \"seatTotalAmountVND\": 0.0,\n    \"ticketFeeAmount\": 0.0,\n    \"ticketFeeAmountUSD\": 0.0,\n    \"ticketFeeAmountVND\": 0.0,\n    \"totalAmount\": 198786000.0,\n    \"totalAmountUSD\": 0.0,\n    \"totalAmountVND\": 0.0,\n    \"couponAmount\": 0.0,\n    \"couponAmountUSD\": 0.0,\n    \"couponAmountVND\": 0.0,\n    \"handlingFee\": 0.0,\n    \"handlingFeeUSD\": 0.0,\n    \"handlingFeeVND\": 0.0,\n    \"totalFare\": 0.0,\n    \"totalFareUSD\": 0.0,\n    \"totalFareVND\": 0.0,\n    \"convertionRate\": 0.0,\n    \"currency\": \"VND\",\n    \"totalTax\": 26544000.0,\n    \"surcharges\": 0.0,\n    \"amount\": 172242000.0,\n    \"numberOfRooms\": 3,\n    \"averagePerNightAmount\": 4101000.0,\n    \"numberOfNights\": 14,\n    \"priceDetails\": [\n      {\n        \"id\": \"e84ed499-034b-4dc8-9749-74f4d7105152\",\n        \"priceInfoId\": \"d4765828-355d-43a6-834c-116c0a77617a\",\n        \"count\": 1,\n        \"type\": 0,\n        \"amount\": 57414000.0,\n        \"amountVND\": 0.0,\n        \"amountUSD\": 0.0,\n        \"tax\": 8848000.0,\n        \"taxVND\": 0.0,\n        \"taxUSD\": 0.0,\n        \"fee\": 0.0,\n        \"feeVND\": 0.0,\n        \"feeUSD\": 0.0,\n        \"totalAmount\": 66262000.0,\n        \"totalAmountVND\": 0.0,\n        \"totalAmountUSD\": 0.0,\n        \"averagePerNightAmount\": 4101000.0,\n        \"taxAmount\": 8848000.0,\n        \"numberOfNights\": 14,\n        \"surcharges\": 0.0,\n        \"discount\": 23959000.0,\n        \"hotelPricePerNights\": [],\n        \"taxes\": [],\n        \"discounts\": []\n      },\n      {\n        \"id\": \"23bcbe6b-5280-4221-b583-aec82ea22fed\",\n        \"priceInfoId\": \"d4765828-355d-43a6-834c-116c0a77617a\",\n        \"count\": 2,\n        \"type\": 0,\n        \"amount\": 57414000.0,\n        \"amountVND\": 0.0,\n        \"amountUSD\": 0.0,\n        \"tax\": 8848000.0,\n        \"taxVND\": 0.0,\n        \"taxUSD\": 0.0,\n        \"fee\": 0.0,\n        \"feeVND\": 0.0,\n        \"feeUSD\": 0.0,\n        \"totalAmount\": 132524000.0,\n        \"totalAmountVND\": 0.0,\n        \"totalAmountUSD\": 0.0,\n        \"averagePerNightAmount\": 4101000.0,\n        \"taxAmount\": 8848000.0,\n        \"numberOfNights\": 14,\n        \"surcharges\": 0.0,\n        \"discount\": 23959000.0,\n        \"hotelPricePerNights\": [],\n        \"taxes\": [],\n        \"discounts\": []\n      }\n    ],\n    \"createdUtc\": \"0001-01-01T00:00:00:0000\",\n    \"updatedUtc\": \"0001-01-01T00:00:00:0000\",\n    \"totalAmountAtHotel\": 0.0,\n    \"payAtHotelCurrency\": \"\",\n    \"refundable\": true,\n    \"hasBreakfast\": false,\n    \"extraBed\": false,\n    \"nonSmoking\": false\n  },\n  \"createdBy\": \"thanh.nguyen2@skyjet.vn\",\n  \"createdUtc\": \"2025-05-30T08:58:12:7000\",\n  \"updatedBy\": \"thanh.nguyen2@skyjet.vn\",\n  \"updatedUtc\": \"2025-05-31T04:41:25:3104\"\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response object contains the following fields:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"518d166a-c0a2-4e9a-85c5-58bc3662c723\"` | The unique identifier of the booking (matches the `bookingId` in the request path). |\n| `readableId` | string | `\"KS300525B001\"` | A human-readable identifier for the booking. |\n| `solutionId` | string | `\"703ab26b-59be-4f1c-ad85-54a25073dc15\"` | Identifier for the solution or search result that led to this booking. |\n| `orderBaseInfo` | object | (see `orderBaseInfo` object below) | Basic information about the order. |\n| `orderHotelInfo` | object | (see `orderHotelInfo` object below) | Detailed information specific to the hotel booking. |\n| `passengers` | array | `[]` | List of passengers associated with the booking. (Empty in sample, guest details are within `orderHotelInfo.rooms`). |\n| `contactInfo` | object | (see `contactInfo` (Booking Contact) below) | Contact information for the booking. |\n| `priceInfo` | object | (see `priceInfo` (Booking Price) below) | Detailed pricing information for the booking. |\n| `createdBy` | string | `\"thanh.nguyen2@skyjet.vn\"` | Identifier of the user or system that created the booking. |\n| `createdUtc` | string | `\"2025-05-30T08:58:12:7000\"` | ISO 8601 timestamp of when the booking was created. |\n| `updatedBy` | string | `\"thanh.nguyen2@skyjet.vn\"` | Identifier of the user or system that last updated the booking. |\n| `updatedUtc` | string | `\"2025-05-31T04:41:25:3104\"` | ISO 8601 timestamp of when the booking was last updated. |\n\n### `orderBaseInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `providerCode` | string | `\"hotel.provider1\"` | Code of the hotel provider. |\n| `providerReferenceId` | string | `\"772748716\"` | Reference ID from the provider for this booking. |\n| `status` | string | `\"CLOSED\"` | Current status of the booking (e.g., `CLOSED`, `CONFIRMED`). |\n| `statusIsFinal` | boolean | `true` | Indicates if the current status is the final status for this booking. |\n| `bookingType` | string | `\"hotel\"` | Type of booking. |\n| `totalAmount` | decimal | `198786000.0` | Total amount of the booking in the specified currency. |\n| `totalAmountUSD` | decimal | `0.0` | Total amount of the booking in USD. |\n| `totalAmountVND` | decimal | `0.0` | Total amount of the booking in VND. |\n| `currency` | string | `\"VND\"` | Currency code for the `totalAmount`. |\n| `convertionRate` | decimal | `0.0` | Conversion rate used if amounts were converted. |\n| `isNeedRebookPNR` | boolean | `false` | Indicates if a Passenger Name Record (PNR) rebooking is needed. |\n| `passengerCount` | integer | `0` | Total count of passengers for the booking. |\n| `totalAmountAtHotel` | decimal | `0.0` | Amount to be paid directly at the hotel. |\n| `payAtHotelCurrency` | string | `\"\"` | Currency for the amount to be paid at the hotel. |\n| `refunded` | boolean | `true` | Indicates if the booking has been refunded. |\n| `lastTicketTime` | string | `\"2025-05-30T09:13:12.1954104Z\"` | ISO 8601 timestamp representing the deadline for ticketing or final confirmation. |\n\n### `orderHotelInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"07fec2ea-e08f-4fff-95b7-71c69c15912c\"` | Unique identifier for the hotel-specific booking information. |\n| `hotelBookingId` | string | `\"518d166a-c0a2-4e9a-85c5-58bc3662c723\"` | Foreign key linking to the main booking ID (`id` at the root). |\n| `providerReferenceId` | string | `\"12622279\"` | Provider's reference ID for the hotel booking details. |\n| `confirmationCode` | string | \"762790247167277 | 731391168320904\" |\n| `confirmationEmail` | string | `\"thanh.nguyen2@skyjet.vn\"` | Email address to which the booking confirmation was sent. |\n| `hotelName` | string | `\"Sherwood Residence\"` | Name of the hotel. |\n| `checkInDate` | string | `\"2025-06-01T00:00:00:0000\"` | ISO 8601 timestamp for the check-in date and time. |\n| `checkOutDate` | string | `\"2025-06-15T00:00:00:0000\"` | ISO 8601 timestamp for the check-out date and time. |\n| `vatIncluded` | boolean | `false` | Indicates if Value Added Tax (VAT) is included in the hotel price. |\n| `totalAmount` | decimal | `0.0` | Total amount for the hotel portion (may differ from `orderBaseInfo.totalAmount`). |\n| `hasBreakfast` | boolean | `true` | Indicates if breakfast is included with the hotel booking. |\n| `nonSmoking` | boolean | `true` | Indicates if a non-smoking room was requested or booked. |\n| `specialRequests` | string | `\"I need a hair dryer\"` | Any special requests made by the guest for the hotel. |\n| `adults` | integer | `3` | Number of adults in the hotel booking. |\n| `children` | integer | `3` | Number of children in the hotel booking. |\n| `childAges` | array of integers | `[1, 14, 10]` | An array of ages for each child guest. |\n| `rooms` | array of objects | `[...]` (see `orderHotelInfo.room` below) | An array of objects, where each object represents a booked room. |\n| `cancellationPolicies` | array of objects | `[...]` (see `orderHotelInfo.cancellationPolicy` below) | An array of objects describing the cancellation policies. |\n\n### `orderHotelInfo.rooms[]` (Booked Room) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"a765a69a-44f9-4050-a06d-b2383569d402\"` | Unique identifier for the room. |\n| `hotelBookingInfoId` | string | `\"07fec2ea-e08f-4fff-95b7-71c69c15912c\"` | Foreign key linking to `orderHotelInfo.id`. |\n| `providerCode` | string | `\"hotel.provider1\"` | Provider code for this specific room. |\n| `providerReferenceId` | string | `\"12622279-201309111\"` | Provider's reference ID for this specific room. |\n| `confirmationCode` | string | `\"762790247167277\"` | Confirmation code specific to this room. |\n| `roomName` | string | `\"3 Bedroom Premier with Balcony\"` | Name or type of the room. |\n| `guestIndex` | integer | `1` | Index identifying the guest or room group. |\n| `guestType` | string | `\"1adt,3chd-1,14,10\"` | Description of guest composition for this room. |\n| `bedOption` | object | (see `bedOption` object below) | Details about the bed option for this room. |\n| `guests` | array | `[...]` (see `orderHotelInfo.room.guest` below) | An array of objects, where each object represents a guest in this room. |\n\n### `orderHotelInfo.rooms[].bedOption` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"7069f565-6dd9-454c-b185-7994f3582e87\"` | Unique identifier for the bed option. |\n| `hotelRoomId` | string | `\"a765a69a-44f9-4050-a06d-b2383569d402\"` | Foreign key linking to the room's ID (`orderHotelInfo.rooms[].id`). |\n| `providerReferenceId` | string | `\"37417\"` | Provider's reference ID for this bed option. |\n| `name` | string | `\"1 giường cỡ king và 2 giường đơn\"` | Description of the bed type. |\n| `quantity` | integer | `3` | Quantity of this bed type in the room. |\n\n### `orderHotelInfo.rooms[].guests[]` (Booked Guest) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"c69d7aac-5623-4e7c-fce1-08dd9f581b89\"` | Unique identifier for the guest. |\n| `guestIndex` | integer | `1` | Index linking this guest to a room or group, matches `orderHotelInfo.rooms[].guestIndex`. |\n| `hotelRoomId` | string | `\"a765a69a-44f9-4050-a06d-b2383569d402\"` | Foreign key linking to the room's ID (`orderHotelInfo.rooms[].id`). |\n| `firstName` | string | `\"Thế CTO\"` | Guest's first name. |\n| `lastName` | string | `\"Võ\"` | Guest's last name. |\n| `gender` | string | `\"M\"` | Guest's gender (e.g., \"M\", \"F\"). |\n| `dateOfBirth` | string | `\"0001-01-01T00:00:00:0000\"` | Guest's date of birth (ISO 8601 format, default indicates not provided). |\n| `countryTelCode` | string | `\"84\"` | Guest's country telephone code. |\n| `phoneNumber` | string | `\"987646747\"` | Guest's phone number. |\n| `email` | string | `\"the.vo@skyjet.vn\"` | Guest's email address. |\n| `updatedUtc` | string | `\"2025-05-30T08:58:12:8600\"` | ISO 8601 timestamp of the last update for this guest's information. |\n| `deleted` | boolean | `false` | Indicates if this guest record is marked as deleted. |\n\n### `orderHotelInfo.cancellationPolicies[]` (Cancellation Policy) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"d966c86a-3e58-40a3-9f4e-064a08ca6f7a\"` | Unique identifier for the cancellation policy entry. |\n| `hotelBookingInfoId` | string | `\"07fec2ea-e08f-4fff-95b7-71c69c15912c\"` | Foreign key linking to `orderHotelInfo.id`. |\n| `penaltyPercent` | decimal | `0.0` | Penalty percentage if cancellation occurs within the specified date range. |\n| `startDate` | string | `\"2025-05-30T18:00:00:0000\"` | ISO 8601 timestamp for the start date/time of this policy rule. |\n| `endDate` | string | `\"2025-06-01T18:00:00:0000\"` | ISO 8601 timestamp for the end date/time of this policy rule. |\n\n### `contactInfo` (Booking Contact) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"774a8bff-50bc-4ee6-92a7-f10bef90aee2\"` | Unique identifier for the contact information. |\n| `email` | string | `\"the.vo@skyjet.vn\"` | Primary contact email for the booking. |\n| `flightBookingId` | string | `\"00000000-0000-0000-0000-000000000000\"` | Associated flight booking ID, if any (`0000...` indicates not applicable). |\n| `deleted` | boolean | `false` | Indicates if this contact information is marked as deleted. |\n\n### `priceInfo` (Booking Price) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"d4765828-355d-43a6-834c-116c0a77617a\"` | Unique identifier for the price information block. |\n| `orderId` | string | `\"518d166a-c0a2-4e9a-85c5-58bc3662c723\"` | Foreign key linking to the main booking ID (`id` at the root). |\n| `providerReferenceId` | string | `\"11206348125\"` | Provider's reference ID related to pricing. |\n| `totalAmount` | decimal | `198786000.0` | Overall total amount for the price information block. |\n| `currency` | string | `\"VND\"` | Currency code for these price details (e.g., `VND`). |\n| `totalTax` | decimal | `26544000.0` | Total tax amount. |\n| `surcharges` | decimal | `0.0` | Total surcharge amount. |\n| `amount` | decimal | `172242000.0` | Base amount before taxes and fees. |\n| `numberOfRooms` | integer | `3` | Number of rooms included in this price calculation. |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average price per night. |\n| `numberOfNights` | integer | `14` | Total number of nights for the booking. |\n| `priceDetails` | array of objects | `[...]` (see `priceInfo.priceDetail` below) | An array of objects, providing a breakdown of price components. |\n| `createdUtc` | string | `\"0001-01-01T00:00:00:0000\"` | ISO 8601 timestamp of price information creation (default indicates not set/applicable). |\n| `updatedUtc` | string | `\"0001-01-01T00:00:00:0000\"` | ISO 8601 timestamp of price information last update (default indicates not set/applicable). |\n| `refundable` | boolean | `true` | Indicates if this price component is refundable. |\n\n### `priceInfo.priceDetails[]` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"e84ed499-034b-4dc8-9749-74f4d7105152\"` | Unique identifier for this price detail line. |\n| `priceInfoId` | string | `\"d4765828-355d-43a6-834c-116c0a77617a\"` | Foreign key linking to `priceInfo.id`. |\n| `count` | integer | `1` | Number of units this price detail applies to (e.g., number of rooms of a certain type). |\n| `type` | integer | `0` | Numeric code representing the type of this price detail. |\n| `amount` | decimal | `57414000.0` | Base amount for this specific detail. |\n| `tax` | decimal | `8848000.0` | Tax amount for this detail. |\n| `fee` | decimal | `0.0` | Fee amount for this detail. |\n| `totalAmount` | decimal | `66262000.0` | Total amount for this price detail (amount + tax + fee - discount). |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average price per night for this specific detail. |\n| `taxAmount` | decimal | `8848000.0` | Tax amount specifically for this detail item. |\n| `numberOfNights` | integer | `14` | Number of nights applicable to this price detail. |\n| `surcharges` | decimal | `0.0` | Surcharges applicable to this price detail. |\n| `discount` | decimal | `23959000.0` | Discount amount applied to this price detail. |\n| `hotelPricePerNights` | array | `[]` | Array to hold per-night pricing details (empty in sample). |\n| `taxes` | array | `[]` | Array to hold detailed tax breakdown (empty in sample). |\n| `discounts` | array | `[]` | Array to hold detailed discount breakdown (empty in sample). |\n\n---\n\n## Notes\n\n- This API provides a comprehensive view of a specific hotel booking.\n    \n- The `bookingId` in the URL path is the sole input required.\n    \n- The response structure is very similar to the \"Book Hotel API\" and \"Ticketing Hotel API\" responses, providing a consistent data model for bookings at different stages.\n    \n- Key fields to note are `orderBaseInfo.status` to understand the current state of the booking and `orderHotelInfo.confirmationCode` for the hotel's confirmation.\n    \n- The `orderHotelInfo.rooms[].guestType` field provides a summary of the guest composition for each room, which might have been derived from the initial booking request.\n    \n\n---"
									},
									"response": []
								},
								{
									"name": "3. Ticketing - Agent",
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}"
											},
											{
												"key": "Content-Type",
												"value": "application/json"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/booking/{{orderId}}/ticketing",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"booking",
												"{{orderId}}",
												"ticketing"
											]
										},
										"description": "# Ticketing Hotel API Documentation\n\n## Overview\n\nThis API is used to finalize or confirm a hotel booking that is in a non-final state (e.g., \"PENDING\" after a \"Book Hotel API\" call), often after payment processing or other necessary steps have been completed. The specific `bookingId` of the reservation to be ticketed must be provided in the URL path.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/booking/{{orderId}}/ticketing`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n### Path Parameters\n\n| Parameter | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `orderId` | string | ✅ | `\"5c217387-8616-47f7-8f0d-fb12860b5f50\"` | The unique identifier of the booking to be ticketed. |\n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Response format |\n| `Authorization` | `Bearer {token}` | access token |\n\n---\n\n## Request Body\n\n``` json\n{}\n\n ```\n\n_(The request body is empty, as the primary identifier for the action is the_ `_bookingId_` _in the URL path.)_\n\n---\n\n## Request Field Description\n\n_(Not applicable as the request body is empty.)_\n\n---\n\n## Sample Request\n\nReplace `{{orderId}}` with the actual ID of the booking you wish to ticket (e.g., `5c217387-8616-47f7-8f0d-fb12860b5f50`).\n\n``` bash\ncurl --location 'https://api.skyjet.vn/hub/hotel/booking/5c217387-8616-47f7-8f0d-fb12860b5f50/ticketing' \\\n--header 'Authorization: Bearer {token}' \\\n--header 'Content-Type: application/json' \\\n--data '{}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n  \"id\": \"5c217387-8616-47f7-8f0d-fb12860b5f50\",\n  \"readableId\": \"KS300525B001\",\n  \"solutionId\": \"703ab26b-59be-4f1c-ad85-54a25073dc15\",\n  \"orderBaseInfo\": {\n    \"providerCode\": \"hotel.provider1\",\n    \"providerReferenceId\": \"772748716\",\n    \"status\": \"BOOKED\",\n    \"statusIsFinal\": false,\n    \"bookingType\": \"hotel\",\n    \"totalAmount\": 198786000.0,\n    \"totalAmountUSD\": 0.0,\n    \"totalAmountVND\": 0.0,\n    \"currency\": \"VND\",\n    \"convertionRate\": 0.0,\n    \"isNeedRebookPNR\": false,\n    \"passengerCount\": 0,\n    \"totalAmountAtHotel\": 0.0,\n    \"payAtHotelCurrency\": \"\",\n    \"refunded\": false,\n    \"lastTicketTime\": \"2025-05-30T09:13:12.1954104Z\"\n  },\n  \"orderHotelInfo\": {\n    \"id\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n    \"hotelBookingId\": \"518d166a-c0a2-4e9a-85c5-58bc3662c723\",\n    \"providerReferenceId\": \"12622279\",\n    \"confirmationEmail\": \"thanh.nguyen2@skyjet.vn\",\n    \"hotelName\": \"Sherwood Residence\",\n    \"checkInDate\": \"2025-06-01T00:00:00:0000\",\n    \"checkOutDate\": \"2025-06-15T00:00:00:0000\",\n    \"vatIncluded\": false,\n    \"totalAmount\": 0.0,\n    \"hasBreakfast\": true,\n    \"nonSmoking\": true,\n    \"specialRequests\": \"I need a hair dryer\",\n    \"adults\": 3,\n    \"children\": 3,\n    \"childAges\": [1, 14, 10],\n    \"rooms\": [\n      {\n        \"id\": \"a765a69a-44f9-4050-a06d-b2383569d402\",\n        \"hotelBookingInfoId\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 1,\n        \"bedOption\": {\n          \"id\": \"47362a83-23a1-49bb-9476-05a9c006d3d6\",\n          \"hotelRoomId\": \"a765a69a-44f9-4050-a06d-b2383569d402\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"c69d7aac-5623-4e7c-fce1-08dd9f581b89\",\n            \"guestIndex\": 1,\n            \"hotelRoomId\": \"a765a69a-44f9-4050-a06d-b2383569d402\",\n            \"firstName\": \"Thế CTO\",\n            \"lastName\": \"Võ\",\n            \"gender\": \"M\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"84\",\n            \"phoneNumber\": \"987646747\",\n            \"email\": \"the.vo@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:58:12:8600\",\n            \"deleted\": false\n          }\n        ]\n      },\n      {\n        \"id\": \"b37b0946-74c7-4361-a0b0-22736a270e4e\",\n        \"hotelBookingInfoId\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 2,\n        \"bedOption\": {\n          \"id\": \"48c4e86f-becd-48cf-ad01-c63c79a298f1\",\n          \"hotelRoomId\": \"b37b0946-74c7-4361-a0b0-22736a270e4e\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"ff6fc3f6-432f-45cf-fce2-08dd9f581b89\",\n            \"guestIndex\": 2,\n            \"hotelRoomId\": \"b37b0946-74c7-4361-a0b0-22736a270e4e\",\n            \"firstName\": \"Thành Dev4\",\n            \"lastName\": \"Nguyễn\",\n            \"gender\": \"F\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"\",\n            \"email\": \"thanh.nguyen@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:58:12:8600\",\n            \"deleted\": false\n          }\n        ]\n      },\n      {\n        \"id\": \"e247f7af-051d-45df-b3c9-3627e4ef726e\",\n        \"hotelBookingInfoId\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n        \"providerCode\": \"hotel.provider1\",\n        \"providerReferenceId\": \"12622279-201309111\",\n        \"roomName\": \"3 Bedroom Premier with Balcony\",\n        \"guestIndex\": 3,\n        \"bedOption\": {\n          \"id\": \"ee0763f7-cfe0-4027-b8b1-6ded67377d18\",\n          \"hotelRoomId\": \"e247f7af-051d-45df-b3c9-3627e4ef726e\",\n          \"providerReferenceId\": \"37417\",\n          \"name\": \"1 giường cỡ king và 2 giường đơn\",\n          \"quantity\": 3\n        },\n        \"guests\": [\n          {\n            \"id\": \"e4ebaa25-69b1-4dca-fce3-08dd9f581b89\",\n            \"guestIndex\": 3,\n            \"hotelRoomId\": \"e247f7af-051d-45df-b3c9-3627e4ef726e\",\n            \"firstName\": \"Thế CTO\",\n            \"lastName\": \"Võ\",\n            \"gender\": \"M\",\n            \"dateOfBirth\": \"0001-01-01T00:00:00:0000\",\n            \"countryTelCode\": \"84\",\n            \"phoneNumber\": \"987646747\",\n            \"email\": \"the.vo@skyjet.vn\",\n            \"updatedUtc\": \"2025-05-30T08:58:12:8600\",\n            \"deleted\": false\n          }\n        ]\n      }\n    ],\n    \"cancellationPolicies\": [\n      {\n        \"id\": \"d966c86a-3e58-40a3-9f4e-064a08ca6f7a\",\n        \"hotelBookingInfoId\": \"07fec2ea-e08f-4fff-95b7-71c69c15912c\",\n        \"penaltyPercent\": 0.0,\n        \"startDate\": \"2025-05-30T18:00:00:0000\",\n        \"endDate\": \"2025-06-01T18:00:00:0000\"\n      }\n    ]\n  },\n  \"passengers\": [],\n  \"contactInfo\": {\n    \"id\": \"774a8bff-50bc-4ee6-92a7-f10bef90aee2\",\n    \"email\": \"the.vo@skyjet.vn\",\n    \"flightBookingId\": \"00000000-0000-0000-0000-000000000000\",\n    \"deleted\": false\n  },\n  \"priceInfo\": {\n    \"id\": \"d4765828-355d-43a6-834c-116c0a77617a\",\n    \"orderId\": \"518d166a-c0a2-4e9a-85c5-58bc3662c723\",\n    \"providerReferenceId\": \"11206348125\",\n    \"couponId\": \"00000000-0000-0000-0000-000000000000\",\n    \"itemType\": 0,\n    \"passengerTotalAmount\": 0.0,\n    \"passengerTotalAmountUSD\": 0.0,\n    \"passengerTotalAmountVND\": 0.0,\n    \"ancillaryTotalAmount\": 0.0,\n    \"ancillaryTotalAmountUSD\": 0.0,\n    \"ancillaryTotalAmountVND\": 0.0,\n    \"seatTotalAmount\": 0.0,\n    \"seatTotalAmountUSD\": 0.0,\n    \"seatTotalAmountVND\": 0.0,\n    \"ticketFeeAmount\": 0.0,\n    \"ticketFeeAmountUSD\": 0.0,\n    \"ticketFeeAmountVND\": 0.0,\n    \"totalAmount\": 198786000.0,\n    \"totalAmountUSD\": 0.0,\n    \"totalAmountVND\": 0.0,\n    \"couponAmount\": 0.0,\n    \"couponAmountUSD\": 0.0,\n    \"couponAmountVND\": 0.0,\n    \"handlingFee\": 0.0,\n    \"handlingFeeUSD\": 0.0,\n    \"handlingFeeVND\": 0.0,\n    \"totalFare\": 0.0,\n    \"totalFareUSD\": 0.0,\n    \"totalFareVND\": 0.0,\n    \"convertionRate\": 0.0,\n    \"currency\": \"VND\",\n    \"totalTax\": 26544000.0,\n    \"surcharges\": 0.0,\n    \"amount\": 172242000.0,\n    \"numberOfRooms\": 3,\n    \"averagePerNightAmount\": 4101000.0,\n    \"numberOfNights\": 14,\n    \"priceDetails\": [\n      {\n        \"id\": \"e84ed499-034b-4dc8-9749-74f4d7105152\",\n        \"priceInfoId\": \"d4765828-355d-43a6-834c-116c0a77617a\",\n        \"count\": 1,\n        \"type\": 0,\n        \"amount\": 57414000.0,\n        \"amountVND\": 0.0,\n        \"amountUSD\": 0.0,\n        \"tax\": 8848000.0,\n        \"taxVND\": 0.0,\n        \"taxUSD\": 0.0,\n        \"fee\": 0.0,\n        \"feeVND\": 0.0,\n        \"feeUSD\": 0.0,\n        \"totalAmount\": 66262000.0,\n        \"totalAmountVND\": 0.0,\n        \"totalAmountUSD\": 0.0,\n        \"averagePerNightAmount\": 4101000.0,\n        \"taxAmount\": 8848000.0,\n        \"numberOfNights\": 14,\n        \"surcharges\": 0.0,\n        \"discount\": 23959000.0,\n        \"hotelPricePerNights\": [],\n        \"taxes\": [],\n        \"discounts\": []\n      },\n      {\n        \"id\": \"23bcbe6b-5280-4221-b583-aec82ea22fed\",\n        \"priceInfoId\": \"d4765828-355d-43a6-834c-116c0a77617a\",\n        \"count\": 2,\n        \"type\": 0,\n        \"amount\": 57414000.0,\n        \"amountVND\": 0.0,\n        \"amountUSD\": 0.0,\n        \"tax\": 8848000.0,\n        \"taxVND\": 0.0,\n        \"taxUSD\": 0.0,\n        \"fee\": 0.0,\n        \"feeVND\": 0.0,\n        \"feeUSD\": 0.0,\n        \"totalAmount\": 132524000.0,\n        \"totalAmountVND\": 0.0,\n        \"totalAmountUSD\": 0.0,\n        \"averagePerNightAmount\": 4101000.0,\n        \"taxAmount\": 8848000.0,\n        \"numberOfNights\": 14,\n        \"surcharges\": 0.0,\n        \"discount\": 23959000.0,\n        \"hotelPricePerNights\": [],\n        \"taxes\": [],\n        \"discounts\": []\n      }\n    ],\n    \"createdUtc\": \"0001-01-01T00:00:00:0000\",\n    \"updatedUtc\": \"0001-01-01T00:00:00:0000\",\n    \"totalAmountAtHotel\": 0.0,\n    \"payAtHotelCurrency\": \"\",\n    \"refundable\": true,\n    \"hasBreakfast\": false,\n    \"extraBed\": false,\n    \"nonSmoking\": false\n  },\n  \"createdBy\": \"thanh.nguyen2@skyjet.vn\",\n  \"createdUtc\": \"2025-05-30T08:58:12:7000\",\n  \"updatedBy\": \"thanh.nguyen2@skyjet.vn\",\n  \"updatedUtc\": \"2025-05-30T08:58:48:4783\"\n}\n\n ```\n\n---\n\n## Response Field Description\n\nThe top-level response object contains the following fields:\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"5c217387-8616-47f7-8f0d-fb12860b5f50\"` | The unique identifier for this booking/order. This is the primary ID for referencing the booking. |\n| `readableId` | string | `\"KS300525B001\"` | A human-readable identifier for the booking. |\n| `solutionId` | string | `\"703ab26b-59be-4f1c-ad85-54a25073dc15\"` | The Solution ID that was originally used to price and book this reservation. |\n| `orderBaseInfo` | object | (see `orderBaseInfo` object below) | Contains general information about the order. |\n| `orderHotelInfo` | object | (see `orderHotelInfo` object below) | Contains detailed information specific to the hotel booking. |\n| `passengers` | array | `[]` | Array of passenger details (typically empty for hotel-only bookings). |\n| `contactInfo` | object | (see `contactInfo` (Booking Contact) below) | Contact information associated with the booking. |\n| `priceInfo` | object | (see `priceInfo` (Booking Price) below) | Detailed breakdown of the price for this booking. |\n| `createdBy` | string | `\"thanh.nguyen2@skyjet.vn\"` | Identifier of the user/system that created the booking. |\n| `createdUtc` | string | `\"2025-05-30T08:58:12:7000\"` | ISO 8601 datetime string of when the booking was created. |\n| `updatedBy` | string | `\"thanh.nguyen2@skyjet.vn\"` | Identifier of the user/system that performed the ticketing action. |\n| `updatedUtc` | string | `\"2025-05-30T08:58:48:4783\"` | ISO 8601 datetime string of when the ticketing action was performed (last update). |\n\n### `orderBaseInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `providerCode` | string | `\"hotel.provider1\"` | The code of the hotel provider. |\n| `providerReferenceId` | string | `\"772748716\"` | A reference ID from the provider for this booking (e.g., a confirmation number from the hotel system). |\n| `status` | string | `\"BOOKED\"` | **Updated status of the booking (e.g., \"BOOKED\", \"CONFIRMED\").** |\n| `statusIsFinal` | boolean | `false` | Indicates if the current status is the final status of the booking (may still change, e.g., to \"CANCELLED\"). |\n| `bookingType` | string | `\"hotel\"` | Type of booking. |\n| `totalAmount` | decimal | `198786000.0` | The grand total amount for the booking in the specified currency. |\n| `totalAmountUSD` | decimal | `0.0` | Total amount converted to USD. |\n| `totalAmountVND` | decimal | `0.0` | Total amount converted to VND. |\n| `currency` | string | `\"VND\"` | The currency code for `totalAmount`. |\n| `convertionRate` | decimal | `0.0` | Conversion rate used if amounts are provided in multiple currencies. |\n| `isNeedRebookPNR` | boolean | `false` | Indicates if a PNR rebooking is needed. |\n| `passengerCount` | integer | `0` | Total number of passengers. |\n| `totalAmountAtHotel` | decimal | `0.0` | Amount to be paid directly at the hotel, if any. |\n| `payAtHotelCurrency` | string | `\"\"` | Currency for the amount to be paid at the hotel. |\n| `refunded` | boolean | `false` | Indicates if the booking has been refunded. |\n| `lastTicketTime` | string | `\"2025-05-30T09:13:12.1954104Z\"` | ISO 8601 datetime string representing the deadline for any further actions or the ticketing time itself. |\n\n### `orderHotelInfo` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"07fec2ea-e08f-4fff-95b7-71c69c15912c\"` | Unique identifier for the hotel-specific part of this booking. |\n| `hotelBookingId` | string | `\"518d166a-c0a2-4e9a-85c5-58bc3662c723\"` | References a related booking ID (might be different from the root `id` in some complex scenarios). |\n| `providerReferenceId` | string | `\"12622279\"` | The hotel's unique ID from the provider's system. |\n| `confirmationEmail` | string | `\"thanh.nguyen2@skyjet.vn\"` | Email address to which the booking confirmation was/will be sent. |\n| `hotelName` | string | `\"Sherwood Residence\"` | Name of the booked hotel. |\n| `checkInDate` | string | `\"2025-06-01T00:00:00:0000\"` | ISO 8601 datetime string for the check-in date. |\n| `checkOutDate` | string | `\"2025-06-15T00:00:00:0000\"` | ISO 8601 datetime string for the check-out date. |\n| `vatIncluded` | boolean | `false` | Indicates if VAT is included in the price. |\n| `totalAmount` | decimal | `0.0` | Total amount specific to hotel info (overall total usually in `orderBaseInfo` or `priceInfo`). |\n| `hasBreakfast` | boolean | `true` | Indicates if breakfast is included in the booking. |\n| `nonSmoking` | boolean | `true` | Indicates if the booked room is non-smoking. |\n| `specialRequests` | string | `\"I need a hair dryer\"` | Special requests submitted with the booking. |\n| `adults` | integer | `3` | Number of adults in the booking. |\n| `children` | integer | `3` | Number of children in the booking. |\n| `childAges` | array of integers | `[1, 14, 10]` | Ages of the children. |\n| `rooms` | array of objects | `[...]` (see `orderHotelInfo.room` below) | Details of each room booked. |\n| `cancellationPolicies` | array of objects | `[...]` (see `orderHotelInfo.cancellationPolicy` below) | Applicable cancellation policies for the booking. |\n\n### `orderHotelInfo.rooms[]` (Booked Room) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"a765a69a-44f9-4050-a06d-b2383569d402\"` | Unique identifier for this specific booked room instance. |\n| `hotelBookingInfoId` | string | `\"07fec2ea-e08f-4fff-95b7-71c69c15912c\"` | References `orderHotelInfo.id`. |\n| `providerCode` | string | `\"hotel.provider1\"` | Provider code for this room. |\n| `providerReferenceId` | string | `\"12622279-201309111\"` | The room type's ID from the provider. |\n| `roomName` | string | `\"3 Bedroom Premier with Balcony\"` | Name of the booked room type. |\n| `guestIndex` | integer | `1` | Index indicating primary guest association or room sequence from the original booking request. |\n| `bedOption` | object | (see `bedOption` object below) | Details of the bed option selected for this room. |\n| `guests` | array | `[...]` (see `orderHotelInfo.room.guest` below) | Guest(s) assigned to this specific room instance. |\n\n### `orderHotelInfo.rooms[].bedOption` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"47362a83-23a1-49bb-9476-05a9c006d3d6\"` | Unique identifier for this booked bed option instance. |\n| `hotelRoomId` | string | `\"a765a69a-44f9-4050-a06d-b2383569d402\"` | References `orderHotelInfo.rooms[].id`. |\n| `providerReferenceId` | string | `\"37417\"` | The bed option's ID from the provider. |\n| `name` | string | `\"1 giường cỡ king và 2 giường đơn\"` | Description of the bed option. |\n| `quantity` | integer | `3` | Quantity related to the bed option. |\n\n### `orderHotelInfo.rooms[].guests[]` (Booked Guest) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"c69d7aac-5623-4e7c-fce1-08dd9f581b89\"` | Unique identifier for this guest instance in the booking. |\n| `guestIndex` | integer | `1` | The `GuestIndex` from the original booking associated with this guest. |\n| `hotelRoomId` | string | `\"a765a69a-44f9-4050-a06d-b2383569d402\"` | References `orderHotelInfo.rooms[].id`. |\n| `firstName` | string | `\"Thế CTO\"` | First name of the guest. |\n| `lastName` | string | `\"Võ\"` | Last name of the guest. |\n| `gender` | string | `\"M\"` | Gender of the guest. |\n| `dateOfBirth` | string | `\"0001-01-01T00:00:00:0000\"` | ISO 8601 datetime string for the guest's date of birth (defaults if not provided). |\n| `countryTelCode` | string | `\"84\"` | Country telephone code for the guest. |\n| `phoneNumber` | string | `\"987646747\"` | Phone number of the guest. |\n| `email` | string | `\"the.vo@skyjet.vn\"` | Email address of the guest. |\n| `updatedUtc` | string | `\"2025-05-30T08:58:12:8600\"` | ISO 8601 datetime string of the last update to this guest's record. |\n| `deleted` | boolean | `false` | Indicates if this guest record is marked as deleted. |\n\n### `orderHotelInfo.cancellationPolicies[]` (Cancellation Policy) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"d966c86a-3e58-40a3-9f4e-064a08ca6f7a\"` | Unique identifier for the cancellation policy instance. |\n| `hotelBookingInfoId` | string | `\"07fec2ea-e08f-4fff-95b7-71c69c15912c\"` | References `orderHotelInfo.id`. |\n| `penaltyPercent` | decimal | `0.0` | Percentage of booking value charged as penalty if cancellation occurs within the specified dates. |\n| `startDate` | string | `\"2025-05-30T18:00:00:0000\"` | ISO 8601 datetime string for the start date of this cancellation policy window. |\n| `endDate` | string | `\"2025-06-01T18:00:00:0000\"` | ISO 8601 datetime string for the end date of this cancellation policy window. |\n\n### `contactInfo` (Booking Contact) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"774a8bff-50bc-4ee6-92a7-f10bef90aee2\"` | Unique identifier for the contact information record. |\n| `email` | string | `\"the.vo@skyjet.vn\"` | Email of the primary contact. |\n| `flightBookingId` | string | `\"00000000-0000-0000-0000-000000000000\"` | Identifier for a flight booking if linked (typically zero GUID for hotel-only). |\n| `deleted` | boolean | `false` | Indicates if this contact record is marked as deleted. |\n\n### `priceInfo` (Booking Price) Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"d4765828-355d-43a6-834c-116c0a77617a\"` | Unique identifier for this price information record. |\n| `orderId` | string | `\"518d166a-c0a2-4e9a-85c5-58bc3662c723\"` | References the main booking `id` (or `orderHotelInfo.hotelBookingId` in this sample). |\n| `providerReferenceId` | string | `\"11206348125\"` | The price option ID from the provider, associated with the original `SolutionId`. |\n| `totalAmount` | decimal | `198786000.0` | Grand total amount for the booking (should match `orderBaseInfo.totalAmount`). |\n| `currency` | string | `\"VND\"` | Currency code for the pricing (e.g., \"VND\"). |\n| `totalTax` | decimal | `26544000.0` | Total tax amount included in `totalAmount`. |\n| `surcharges` | decimal | `0.0` | Total surcharges included in `totalAmount`. |\n| `amount` | decimal | `172242000.0` | Base amount before taxes and surcharges (`totalAmount` - `totalTax` - `surcharges`). |\n| `numberOfRooms` | integer | `3` | Number of rooms in the booking. |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average base price per night per room. |\n| `numberOfNights` | integer | `14` | Total number of nights for the stay. |\n| `priceDetails` | array of objects | `[...]` (see `priceInfo.priceDetail` below) | Detailed price breakdown, often per room or guest type configuration. |\n| `createdUtc` | string | `\"0001-01-01T00:00:00:0000\"` | ISO 8601 datetime string of when this price info was created. |\n| `updatedUtc` | string | `\"0001-01-01T00:00:00:0000\"` | ISO 8601 datetime string of the last update. |\n| `refundable` | boolean | `true` | Indicates if the booked rate is refundable. |\n\n_(Note: Other fields like_ `_couponId_`_,_ `_passengerTotalAmount_`_, etc., are omitted for brevity but exist in the sample.)_\n\n### `priceInfo.priceDetails[]` Object\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `id` | string | `\"e84ed499-034b-4dc8-9749-74f4d7105152\"` | Unique ID for this price detail line. |\n| `priceInfoId` | string | `\"d4765828-355d-43a6-834c-116c0a77617a\"` | References `priceInfo.id`. |\n| `count` | integer | `1` | Number of units (e.g., rooms) this price detail line applies to. |\n| `type` | integer | `0` | Type categorizing this price detail. |\n| `amount` | decimal | `57414000.0` | Sub-total base amount for this line. |\n| `tax` | decimal | `8848000.0` | Sub-total tax for this line. |\n| `fee` | decimal | `0.0` | Sub-total fee for this line. |\n| `totalAmount` | decimal | `66262000.0` | Sub-total amount for this line (amount + tax + fee - discount). |\n| `averagePerNightAmount` | decimal | `4101000.0` | Average per night amount for this line. |\n| `taxAmount` | decimal | `8848000.0` | Tax amount for this line (often same as `tax`). |\n| `numberOfNights` | integer | `14` | Number of nights for this line. |\n| `surcharges` | decimal | `0.0` | Surcharges for this line. |\n| `discount` | decimal | `23959000.0` | Discount amount applied to this line. |\n| `hotelPricePerNights` | array | `[]` | Array for daily price breakdown (empty in sample). |\n| `taxes` | array | `[]` | Array for detailed tax breakdown (empty in sample). |\n| `discounts` | array | `[]` | Array for detailed discount breakdown (empty in sample). |\n\n---\n\n## Notes\n\n- This API is used to confirm/finalize a previously created hotel booking.\n    \n- The `bookingId` must be provided in the URL path and must correspond to an existing booking in a state that allows ticketing (e.g., \"PENDING\").\n    \n- The request body is empty for this operation.\n    \n- A successful response will typically show the `orderBaseInfo.status` updated to a confirmed state like \"CLOSE\",etc...\n    \n- The `orderBaseInfo.providerReferenceId` is populated or updated by the provider upon successful ticketing/confirmation.\n    \n- The `orderHotelInfo.confirmationEmail` is the email address where the provider sends their direct confirmation.\n    \n\n---"
									},
									"response": []
								},
								{
									"name": "4. Send email booking confirmation",
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/booking/{{orderId}}/confirmation-email/send",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"booking",
												"{{orderId}}",
												"confirmation-email",
												"send"
											]
										},
										"description": "# Resend Booking Confirmation Email API Documentation\n\n## Overview\n\nThis API allows users to resend a confirmation email for a specific hotel booking to a designated email address. This is useful for ensuring customers receive their booking details or for administrative purposes.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/booking/{{orderId}}/confirmation-email/send`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Specifies the format of the request body. |\n| `Authorization` | `Bearer {token}` | Access token. |\n\n---\n\n## Path Parameters\n\n| Parameter | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `orderId` | string | ✅ | `518d166a-c0a2-4e9a-85c5-58bc3662c723` | The unique identifier (UUID) of the booking. |\n\n---\n\n## Request Body\n\n``` json\n{ }\n\n ```\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request POST \\\n  'https://api.skyjet.vn/hub/hotel/booking/518d166a-c0a2-4e9a-85c5-58bc3662c723/confirmation-email/send' \\\n  --header 'Authorization: Bearer {token}' \\\n  --header 'Content-Type: application/json' \\\n}'\n\n ```\n\n---\n\n## Sample Response\n\n### Success Response (`200 OK`)\n\n``` json\n{\n    \"isSuccess\": true\n}\n\n ```\n\n---\n\n## Response Field Description\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `isSuccess` | boolean | `true` | Indicates whether the request to send the confirmation email was successfully processed. |\n\n---\n\n## Notes\n\n- This API endpoint is used to trigger or re-trigger the sending of a booking confirmation email.\n    \n- The `bookingId` in the URL path is mandatory and identifies the specific booking for which the email should be sent.\n    \n- A successful response (`isSuccess: true`) typically means the request to send the email has been accepted and queued.\n    \n\n---"
									},
									"response": []
								},
								{
									"name": "5. Export Confirmation PDF",
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"type\": \"PAYMENT_CONFIRMATION\"\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/booking/{{orderId}}/confirmation/export",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"booking",
												"{{orderId}}",
												"confirmation",
												"export"
											]
										},
										"description": "# Export Booking Confirmation PDF API Documentation\n\n## Overview\n\nThis API allows users to generate and retrieve a URL for downloading a PDF confirmation for a specific hotel booking. The type of confirmation (e.g., payment confirmation) can be specified in the request. The generated URL contains a unique token and is typically valid for a single download attempt.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/booking/{{orderId}}/confirmation/export`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Specifies the format of the request body. |\n| `Authorization` | `Bearer {token}` | Access token. |\n\n---\n\n## Path Parameters\n\n| Parameter | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `orderId` | string | ✅ | `e61413de-579a-4556-b444-1e610a99875e` | The unique identifier (UUID) of the booking. |\n\n---\n\n## Request Body\n\n``` json\n{\n    \"type\": \"PAYMENT_CONFIRMATION\"\n}\n\n ```\n\n---\n\n## Request Field Description\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `type` | string | ✅ | `PAYMENT_CONFIRMATION` or `BOOKING_CONFIRMATION` | Specifies the type of PDF confirmation to be generated. |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request POST \\\n  'https://api.skyjet.vn/hub/hotel/booking/e61413de-579a-4556-b444-1e610a99875e/confirmation/export' \\\n  --header 'Authorization: Bearer {token}' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\n    \"type\": \"PAYMENT_CONFIRMATION\"\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n    \"fileUrl\": \"https://api.skyjet.vn/stg/files/hotel-booking/e61413de-579a-4556-b444-1e610a99875e/PAYMENT_CONFIRMATION_vi-VN.pdf?token=7d67b15b1a7b4a29b6cbdb94c276935a\"\n}\n\n ```\n\n---\n\n## Response Field Description\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `fileUrl` | string | `https://api.skyjet.vn/stg/files/hotel-booking/e61413de-579a-4556-b444-1e610a99875e/PAYMENT_CONFIRMATION_vi-VN.pdf?token=7d67b15b1a7b4a29b6cbdb94c276935a` | A pre-signed URL to download the generated PDF file. This URL includes a token and is intended for a **single download**. Subsequent attempts to use the same URL may fail. |\n\n---\n\n## Notes\n\n- This API endpoint is used to generate a downloadable PDF confirmation for a hotel booking.\n    \n- The `bookingId` in the URL path is mandatory.\n    \n- The `type` field in the request body is mandatory and specifies which confirmation document to generate (e.g., `PAYMENT_CONFIRMATION` and `BOOKING_CONFIRMATION`).\n    \n- **Important:** The `fileUrl` returned in a successful response is designed for a **single use**. The token appended to the URL typically expires after the first successful download or after a short period. Client applications should initiate the download immediately upon receiving the URL.\n    \n- The filename within the `fileUrl` will likely be dynamically generated by the server.\n    \n- The generation of the PDF might take a few moments. Clients should be prepared for a slight delay before the response is received.\n    \n- The language displayed on the file depends on the user's settings.\n    \n\n---"
									},
									"response": []
								},
								{
									"name": "6. Update Confirmation Email",
									"request": {
										"method": "PATCH",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}",
												"type": "text"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{\r\n    \"confirmationEmail\": \"admin@skyjet.vn\"\r\n}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/booking/{{orderId}}/confirmation-email",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"booking",
												"{{orderId}}",
												"confirmation-email"
											]
										},
										"description": "# Update Booking Confirmation Email API Documentation\n\n## Overview\n\nThis API allows users to update a confirmation email.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/booking/{{orderId}}/confirmation-email`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Specifies the format of the request body. |\n| `Authorization` | `Bearer {token}` | Access token. |\n\n---\n\n## Path Parameters\n\n| Parameter | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `orderId` | string | ✅ | `039BF21F-530A-4660-BE7D-1209624CE4D2` | The unique identifier (UUID) of the booking. |\n\n---\n\n## Request Body\n\n``` json\n{\n    \"confirmationEmail\": \"admin@skyjet.vn\"\n}\n\n ```\n\n---\n\n## Request Field Description\n\n| Field | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `confirmationEmail` | string | ✅ | `admin@skyjet.vn` | The email address to which the booking confirmation email will be update. Must be a valid email format. |\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request POST \\\n  'https://api.skyjet.vn/hub/hotel/booking/039BF21F-530A-4660-BE7D-1209624CE4D2/confirmation-email' \\\n  --header 'Authorization: Bearer {token}' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{\n    \"confirmationEmail\": \"admin@skyjet.vn\"\n}'\n\n ```\n\n---\n\n## Sample Response\n\n``` json\n{\n    \"isSuccess\": true\n}\n\n ```\n\n---\n\n## Response Field Description\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `isSuccess` | boolean | `true` | Indicates whether the request to send the confirmation email was successfully processed. |\n\n---\n\n## Notes\n\n---"
									},
									"response": []
								},
								{
									"name": "7. Cancel booking",
									"request": {
										"method": "POST",
										"header": [
											{
												"key": "Authorization",
												"value": "Bearer {{access_token}}"
											},
											{
												"key": "Content-Type",
												"value": "application/json"
											}
										],
										"body": {
											"mode": "raw",
											"raw": "{}",
											"options": {
												"raw": {
													"language": "json"
												}
											}
										},
										"url": {
											"raw": "{{host}}/hub/hotel/booking/{{orderId}}/cancel",
											"host": [
												"{{host}}"
											],
											"path": [
												"hub",
												"hotel",
												"booking",
												"{{orderId}}",
												"cancel"
											]
										},
										"description": "# Cancel Hotel Booking API Documentation\n\n## Overview\n\nThis endpoint allows users to cancel a hotel booking identified by the `orderId`. This is a crucial operation for users who need to modify their travel plans.\n\n---\n\n## API Endpoint\n\n- **URL:** `https://api.skyjet.vn/hub/hotel/booking/{{orderId}}/cancel`\n    \n- **Method:** `POST`\n    \n- **Content-Type:** `application/json`\n    \n\n---\n\n## Headers\n\n| Key | Value | Description |\n| --- | --- | --- |\n| `Content-Type` | `application/json` | Specifies the format of the request body. |\n| `Authorization` | `Bearer {token}` | Access token for authentication. |\n\n---\n\n## Path Parameters\n\n| Parameter | Type | Required | Example | Description |\n| --- | --- | --- | --- | --- |\n| `orderId` | string | ✅ | `039BF21F-530A-4660-BE7D-1209624CE4D2` | The unique identifier (UUID) of the booking to be canceled. |\n\n---\n\n## Request Body\n\nThis request does not require any parameters in the body. The payload is an empty JSON object.\n\n``` json\n{}\n\n ```\n\n---\n\n## Request Field Description\n\nThe request body is empty and does not require any fields.\n\n---\n\n## Sample Request\n\n``` bash\ncurl --location --request POST \\\n  'https://api.skyjet.vn/hub/hotel/booking/039BF21F-530A-4660-BE7D-1209624CE4D2/cancel' \\\n  --header 'Authorization: Bearer {token}' \\\n  --header 'Content-Type: application/json' \\\n  --data-raw '{}'\n\n ```\n\n---\n\n## Sample Response\n\nThe response indicates that the cancellation request has been successfully received for processing.\n\n``` json\n{\n    \"isSuccess\": true\n}\n\n ```\n\n---\n\n## Response Field Description\n\n| Field | Type | Example | Description |\n| --- | --- | --- | --- |\n| `isSuccess` | boolean | `true` | Indicates whether the cancellation request was successfully received by the system. A `true` value means the booking's status is being changed to `CANCELLING`. |\n\n---\n\n## Notes\n\n- **Asynchronous Operation:**\n    \n    - This is an asynchronous process. Upon a successful API call, the booking's status will immediately be changed to **`CANCELLING`**.\n        \n    - The system will then process the cancellation request in the background.\n        \n- **Final Status Update:**\n    \n    - After a minimum of 2 minutes, the booking's final status will be updated. You must call the \"Get Booking Details\" API again to verify the final outcome:\n        \n        - **Successful Cancellation:** The status will become **`CANCELLED`**. The `refund_amount` and `refund_fee` fields will be populated with the relevant values.\n            \n        - **Failed Cancellation:** The status will become **`CANCEL_FAILED`**. The booking will remain in its previous active state.\n            \n- Ensure that the `orderId` provided in the URL corresponds to an existing booking."
									},
									"response": []
								}
							],
							"description": "ManageBooking focuses on post-booking operations such as retrieving reservations, processing agent payments, handling refunds, and viewing booking details. It ensures that both customers and agents can efficiently manage confirmed bookings.\n\n| Method | Endpoint | Description |\n| --- | --- | --- |\n| `POST` | `Resend email confirmation` | Resend email confirmation. |\n| `POST` | `Export Confirmation PDF` | Export confirmation pdf (booking, payment). |\n| `PATCH` | `Update Confirmation Email` | Update confirmation email. |\n| `POST` | `Search Booking` | Search for existing bookings by reference code, customer name, or date. |\n| `POST` | `Ticketing - Agent` | Process post-booking payment for the agent. |\n| `GET` | `Get Booking By Id` | Retrieve booking details using a specific booking ID. |"
						}
					],
					"description": "This API provides a complete solution for searching, booking, and managing hotel reservations. It is divided into three main sections: Metadata, which provides reference information such as cities, countries, and accommodation types; Booking, which handles the entire hotel search and reservation process; and ManageBooking, which supports post-booking operations like retrieving booking details or marking refunds."
				}
			]
		}
	]
}