# Operator Site FAQs API API for operators to manage a venue's public-facing FAQ list, and for partners to read it. FAQs are a JSON array of `{question, answer}` items stored per venue. `question`/`answer` values are plain strings and may contain markdown syntax (e.g. `**bold**`, links, lists); the server does not parse or sanitize markdown — it is rendered client-side. The venue is identified by its composite ID — `{venueGroupId}|{rmsSlug}|{venueId}` — and the caller's venue-group ownership of (or partner mapping to) that venue is enforced server-side. **Verbs:** - `GET` returns the current FAQ array (empty array when none stored). Readable by operators and mapped partners. - `PUT` replaces the whole array — this is also the bulk-import mechanism for a single venue's full FAQ list. - `PATCH` applies an [RFC 6902](https://datatracker.ietf.org/doc/html/rfc6902) JSON Patch document against the array (item-index pointers, e.g. `/0/answer`, or `/-` to append). - `DELETE` wipes the stored array. Idempotent. - `POST /venues/site-faqs/bulk` applies changes across many venues in one transaction (all-or-nothing). Version: 1.0.0 ## Servers Live ``` https://api.bookabletech.com ``` ## Security ### Live OAuth2 client credentials via Auth0. Type: oauth2 ### Sandbox OAuth2 client credentials via Auth0 (Sandbox). Type: oauth2 ## Download OpenAPI description [Operator Site FAQs API](https://docs.bookabletech.com/_bundle/apis/production/OperatorSiteFaqsApi.yaml) ## operator-site-faqs Public-facing FAQ list attached to a venue, owned and managed by the operator, readable by mapped partners. ### Get site FAQs for a venue - [GET /venues/{venueCompositeId}/site-faqs](https://docs.bookabletech.com/apis/production/operatorsitefaqsapi/operator-site-faqs/getvenuesitefaqs.md): Returns the stored FAQ array for the venue. When no FAQs are stored, returns an empty array. ### Replace site FAQs for a venue - [PUT /venues/{venueCompositeId}/site-faqs](https://docs.bookabletech.com/apis/production/operatorsitefaqsapi/operator-site-faqs/replacevenuesitefaqs.md): Replaces the stored FAQ array with the provided body. This is the bulk-import mechanism for a single venue — send the complete FAQ list in one call to import/replace it. Upserts the row when no FAQs are currently stored for the venue. ### Patch site FAQs for a venue (RFC 6902) - [PATCH /venues/{venueCompositeId}/site-faqs](https://docs.bookabletech.com/apis/production/operatorsitefaqsapi/operator-site-faqs/patchvenuesitefaqs.md): Applies an RFC 6902 JSON Patch document to the stored FAQ array. Supported operations are add, remove, and replace. Paths are JSON Pointers (RFC 6901) into the stored array — e.g. /0/answer references the answer key of the first FAQ item, /- appends a new item to the end. Upserts when no row exists; the patch is applied against an empty array in that case. Examples: Append a new FAQ item: json [ { "op": "add", "path": "/-", "value": { "question": "Do you take walk-ins?", "answer": "Yes, subject to availability." } } ] Replace an existing item's answer: json [ { "op": "replace", "path": "/0/answer", "value": "Updated answer text." } ] Remove an item: json [ { "op": "remove", "path": "/2" } ] ### Delete all site FAQs for a venue - [DELETE /venues/{venueCompositeId}/site-faqs](https://docs.bookabletech.com/apis/production/operatorsitefaqsapi/operator-site-faqs/deletevenuesitefaqs.md): Removes the entire stored FAQ row for the venue. Idempotent — returns 204 whether or not the row existed. ### Bulk apply site FAQs across many venues - [POST /venues/site-faqs/bulk](https://docs.bookabletech.com/apis/production/operatorsitefaqsapi/operator-site-faqs/bulkapplyvenuesitefaqs.md): Applies FAQ changes to many venues in a single all-or-nothing transaction. Any per-item failure (unknown venue, foreign venue group, invalid composite ID, invalid patch) rolls back the whole request. Each item declares the target venue (venueCompositeId) and the mode: - replace — overwrite the stored array with faqs. - patch — apply an RFC 6902 JSON Patch document (patch field) to the stored array. Per mode, exactly one payload field is expected: faqs for replace, patch for patch.