4. Endpoint — FAQ JSON-LD feed
GET
/api/v3/content/{entityId}/faq.jsonReturns Schema.org QAPage structured data as application/ld+json. This is the endpoint partners ingest for FAQ content.
Path parameters
| Name | Type | Description |
|---|---|---|
entityId required | string | Bonafide ID for a hotel brand or hotel property. May resolve to a BusinessEntity (brand rollup; bulk response) or a single property (bare QAPage). Pattern: ^HO-.+$. Examples: HO-XXXXXXXXXXXX (brand), HO-NNNNN-CC-RR-XXXXXXXX-N (property). |
Query parameters
| Name | Type | Description |
|---|---|---|
includePropertyId optional | boolean | Default false. When true, each HotelQAPage’s about object will include a propertyId field (JSON integer) sourced from otherKnownIds.propertyId in the backing Properties dataset. The field is omitted when the source value is null or missing, and the flag is a no-op for non-Hotel entities. Distinct flag values produce distinct ETags, so toggling this flag will never return a stale 304. See §5.3 for the field on the response shape. |
includeCategory optional | boolean | Default false. When true, each emitted Question object gains a category field (string) whose value is the feature-type group name the question was drawn from (e.g. Bedding, Cribs & Rollaways, Pool & Spa, Parking) — the same grouping the HTML and Markdown outputs render as headings. The key is positioned deterministically between @type and name, and is omitted entirely when the flag is off or when the group name is null or blank — never emitted as null or "". The flag is purely additive and does not change which questions are returned. Distinct flag values produce distinct ETags, so toggling this flag will never return a stale 304. See §5.4 for the field on the response shape. |
Request headers
| Header | Required? | Description |
|---|---|---|
X-API-Key or Authorization | required | API key as described in §3. |
If-None-Match | optional | Replay a weak ETag from a prior 200 response (W/"…") to receive a 304 Not Modified when content is unchanged. |
Accept | optional | Defaults to application/ld+json. Other media types are not negotiated. |
Response status codes
| Status | Body | When |
|---|---|---|
200 | JSON-LD | Success — bulk @graph or bare QAPage depending on the resolved ID. |
304 | (empty) | If-None-Match matched the current ETag. Re-use the cached body. |
401 | ErrorResponse | Missing, invalid, or expired API key. |
404 | FeedErrorResponse | entityId did not resolve to anything. |
413 | FeedErrorResponse | Bulk response exceeds entity-count or body-byte ceiling. Fall back per fallbackUrlPattern. |
429 | ErrorResponse | Hourly per-key rate limit exceeded. Headers carry quota state. |
503 | two-field envelope | Operators have toggled the feed off — see §7. |
Response headers (200)
Content-Type | application/ld+json |
Cache-Control | public, max-age=3600 (one hour) |
ETag | Weak ETag, format W/"<16-hex>" (SHA-256 of body, first 8 bytes). |
Last updated on