# HotelStaticDetail

`POST /api/search/hotelStaticDetail`

⚠️ [DEVELOPMENT] Not yet finished — do not build production traffic on this endpoint; use the HotelsMetadata API instead for production.

Fetches the full static profile of one hotel: core identity fields, facilities, imagery, contact details and geo/location data.

**Primary Use Cases:**
- Rendering a hotel detail page
- Enriching a booking flow with hotel content
- Managing hotel profiles inside a CMS

**Required Parameters:**
- **hotelId**: unique hotel identifier (required)

**Integration Notes:**
- Returns a detailed hotel profile localised into EN / ZH / AR
- Carries hotel facilities, imagery and contact details
- Supplies geo coordinates plus destination information
- Intended for hotel detail rendering and content administration

## Request headers

| Header | Required | Description |
| --- | --- | --- |
| `Client-Request-Timestamp` | No | Client-side send time for this request, expressed as a unix timestamp. |
| `IP` | No | Caller IP address; both IPv4 and IPv6 are accepted. |
| `Language` | No | IETF BCP 47 language tag (see https://masonreview.com/posts/ietf-bcp-47-language-tags/), for example "en" or "en-US". Falls back to "en-US" when omitted. |
| `Market` | No | Point-of-sale market for this call, as an ISO 3166-1 alpha-2 country code. Required only when your account carries a market restriction: an allow-list cannot admit a market you have not stated, so such an account refuses calls that omit it. |
| `Request-Id` | No | Identifier for this individual request; values must not repeat. |
| `Trace-Id` | No | Identifier used to correlate a group of related requests. |
| `User-Ref` | No | Your own identifier for the person on whose behalf this call is made. Required only once named users have been authorised on your account, after which every call must identify one and is authorised against that user's scopes as well as the key's. |
| `Authorization` | Yes | Bearer credential — the value must be prefixed with "Bearer ". Obtain the token from the Ticket response. The Ticket call itself does not require this header. |

## Request body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `hotelId` | string | Yes |  |


### Example request

```json
{
  "hotelId": "461850557"
}
```

## Response

Successful calls return the standard envelope. `code` is `0` on success — check it rather than the HTTP status alone, because some business failures are delivered with HTTP 200.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | integer | No |  |
| `msg` | string | No |  |
| `data` | hotel.search.protocol.HotelStaticDetailResp | No |  |
|    `data.hotel` | Hotel | No |  |
|       `data.hotel.id` | string | No |  |
|       `data.hotel.destinationId` | string | No | index |
|       `data.hotel.name` | I18N | No | Hotel name. |
|          `data.hotel.name.en` | string | No | English; the default system language. |
|          `data.hotel.name.zh` | string | No | Chinese (中文). |
|          `data.hotel.name.ar` | string | No | Arabic (اللغة العربية). |
|       `data.hotel.rating` | number | No | Hotel rating, on a scale from 0.0 to 5.0. (The range is documented in prose only; the source declares no minimum/maximum keywords.) |
|       `data.hotel.address` | I18N | No | Localised string set. Keys are fixed language codes. |
|          `data.hotel.address.en` | string | No | English; the default system language. |
|          `data.hotel.address.zh` | string | No | Chinese (中文). |
|          `data.hotel.address.ar` | string | No | Arabic (اللغة العربية). |
|       `data.hotel.latlngCoordinator` | LatlngCoordinator | No |  |
|          `data.hotel.latlngCoordinator.google` | Latlng | Yes |  |
|          `data.hotel.latlngCoordinator.gaode` | Latlng | No |  |
|       `data.hotel.logoURL` | string | No |  |
|       `data.hotel.minPrice` | Money | No | The lowest price satisfying the search criteria. |
|          `data.hotel.minPrice.currency` | string | Yes | Currency code, e.g. "USD". |
|          `data.hotel.minPrice.amount` | number | Yes | Monetary amount, e.g. "14.50". |
|       `data.hotel.minPricesByCurrency[]` | array<Money> | No | Lowest prices expressed in a range of currencies. |
|          `data.hotel.minPricesByCurrency[].currency` | string | Yes | Currency code, e.g. "USD". |
|          `data.hotel.minPricesByCurrency[].amount` | number | Yes | Monetary amount, e.g. "14.50". |
|       `data.hotel.isAvailable` | boolean | No |  |
|       `data.hotel.rooms[]` | array<Room> | No |  |
|          `data.hotel.rooms[].roomTypeId` | string | Yes | Standardized room type ID, e.g. "R001". |
|          `data.hotel.rooms[].roomTypeName` | I18N | Yes | Standardized room type name. When the supplier's type cannot be recognised, a fallback such as "Standard Room" is returned. |
|          `data.hotel.rooms[].hotelId` | string | Yes | Hotel ID. Repeats the parent hotel's ID so the room can be identified on its own. |
|          `data.hotel.rooms[].rates[]` | array<hotel.supplier.domain.RoomRatePkg> | No | The core structure — the room offers available for this room. |


## Failure responses

| HTTP | Meaning |
| --- | --- |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 429 | Too Many Requests |

Every failure uses the `{ code, msg }` envelope. See [Error handling](../guides/error-handling) for the full business-code table.
