MCP tool reference
The current KrabiClaw MCP tools, their inputs, access requirements and effects, generated from the deployed server contract.
Chris Luke
438 min read
KrabiClaw’s MCP connects an AI assistant to your business website and operations. This reference describes the tools exposed by the running server. Access still depends on your business membership, role and enabled features. Your assistant may need a tool refresh before it can use recently added tools.
For setup, see Connect KrabiClaw to ChatGPT. For practical tasks, start with updating your menu, managing bookings, adding photos and video, publishing a post, or handling inquiries.
See what AI assistants can and cannot do for the overview and refreshing your tools if your connected assistant has an older list.
This reference is generated from the tool definitions running on this server. It updates when those definitions are deployed.
Reference fingerprint: sha256:de0cf37d3e6b2eebcc32c6499d11afef58c2ad17dd448899cd8365dd8bbb4925
Tools: 158.
Connect with the setup guide, then read what AI assistants can do. Select the intended business and use its internal IDs returned by the tools. Permissions and entitlements are checked when each operation runs.
For step-by-step tasks, see menu updates, bookings, photos and video, publishing a post, and guest messages and requests.
Before asking an assistant to change data, review the business, records and intended result. Tool descriptions specify any operation-specific approval steps. Client confirmation controls depend on your AI assistant. Read-only, destructive, open-world and idempotent hints describe the tool; they do not grant permission or approve an operation.
Input and output tables list each field, its required state and schema constraints. Nested objects, array items and schema alternatives link to shared shapes below. These shapes are generated from the same definitions, including local JSON Schema references.
Tool groups
- analytics:
get_organization_analytics,query_organization_analytics - blog:
create_article_category,create_blog_post,delete_article_category,delete_blog_post,get_blog_post,list_article_categories,list_blog_posts,publish_blog_post,reorder_article_categories,reorder_blog_posts,update_article_category,update_blog_post - bookings:
cancel_product_booking,cancel_table_reservation,confirm_product_booking,create_product_booking,create_product_session,create_table_reservation,get_product_booking,list_product_booking_sessions,list_product_bookings,reassign_product_booking,reject_product_booking,request_product_booking_change,request_table_reservation_change,update_product_session - content:
append_content_block,create_site_page,delete_content_block,delete_site_page,get_reservation_policy,get_site_page,list_site_pages,replace_content_block,update_reservation_policy,update_site_page - context:
get_workspace_context,set_workspace_context - google ads:
clone_google_ads_campaign,create_google_ads_search_campaign,get_google_ads_campaign,list_google_ads_campaigns,update_google_ads_campaign - guest messaging:
cancel_scheduled_guest_message,create_message_template,delete_message_template,get_guest_messaging_context,list_message_templates,list_scheduled_guest_messages,update_message_template,update_stay_arrival_guide - locales:
delete_organization_language,delete_resource_localization,get_product_catalog_localization,get_resource_localization,list_organization_locales,put_resource_localization,replace_resource_localizations,set_organization_language - locations:
block_dates,create_location,get_calendar,get_location,list_locations,open_dates,update_location - marketing:
launch_omnichannel_campaign - media:
attach_media,delete_media_asset,get_organization_media_assets,remove_media,reorder_media,save_media_attachment,set_media,update_media_asset - organizations:
cancel_organization_invitation,create_team,delete_team,get_organization,get_organization_settings,get_website_draft,invite_organization_member,list_organization_members,list_organizations,list_teams,publish_website,remove_organization_member,save_website_draft,set_consultation_mode,set_team_member,update_organization_member_role,update_organization_settings,update_team - payments:
get_payment,get_payment_payouts,get_payment_summary,get_payments_dashboard_link,get_payments_usage,list_payments - posts:
create_post,delete_channel_post,delete_post,get_channel_post,get_post,get_social_connections,list_channel_posts,list_posts,publish_post,reconcile_post_publication,update_post - products:
batch_create_products,create_collection,create_product,delete_collection,delete_product,delete_product_booking_config,get_product,list_collections,list_location_products,list_products,reconcile_products,remove_product_location,reorder_collections,replace_product_weekly_schedule,set_collection_products,set_product_booking_config,set_product_location,set_product_publication,update_collection,update_menu,update_product - providers:
get_member_scheduling,set_member_busy_calendars,set_member_scheduling - qa:
create_qa,delete_qa,list_location_qa,list_organization_qa,reorder_qa,update_qa - reviews:
list_location_reviews,list_organization_reviews - stays:
cancel_stay,create_stay,delete_stay_payment,get_stay,get_stay_calendar,list_stays,record_stay_payment,set_stay_nights,update_stay - submissions:
get_guest_conversation,list_guest_conversations,list_reservation_inquiries,reply_to_guest,set_guest_conversation_archived
Analytics
Get organization analytics — get_organization_analytics
Read website traffic, attribution, conversions, bookings, collected revenue and refunds. Amounts are minor units per currency; booking quotes are not collected revenue.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
end_date |
string | No | Inclusive local end date in YYYY-MM-DD format. Defaults to today. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
start_date |
string | No | Inclusive local start date in YYYY-MM-DD format. Defaults to 29 days before end_date. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
adSpend |
object (fields) | No | additionalProperties: false; required: ["totalSpendMicros","clicks","impressions","conversions","costPerClickMicros"] |
attributedValue |
array of object (fields) | Yes | |
attribution |
array of object (fields) | Yes | |
bookingValue |
array of object (fields) | Yes | |
cities |
array of object (fields) | Yes | |
conversions |
array of object (fields) | Yes | |
countries |
array of object (fields) | Yes | |
coverage |
object (fields) | Yes | additionalProperties: false; required: ["measurementContractStartedAt","outcomeEventsWithoutAttribution","ga4Delivery"] |
dailyConversions |
array of object (fields) | Yes | |
dailyData |
array of object (fields) | Yes | |
devices |
array of object (fields) | Yes | |
metrics |
object (fields) | Yes | additionalProperties: false; required: ["pageViews","uniqueSessions","uniqueVisitors","returningVisitors","avgSessionDuration","pagesPerSession","changePercent"] |
net |
array of object (fields) | Yes | |
outcomeAttribution |
array of object (fields) | Yes | |
period |
object (fields) | Yes | additionalProperties: false; required: ["startDate","endDate","timezone","analyticsDataStartAt"] |
referrers |
array of object (fields) | Yes | |
signupCohort |
object (fields) | Yes | additionalProperties: false; required: ["observedThrough","signups","onboardedSignups","firstPaidSignups","bySignupAttribution","onboardedBusinesses","firstPaidBusinesses"] |
topPages |
array of object (fields) | Yes | |
values |
array of object (fields) | Yes |
$schema: "https://json-schema.org/draft/2020-12/schema"; additionalProperties: false; required: ["period","metrics","dailyData","dailyConversions","topPages","attribution","outcomeAttribution","attributedValue","conversions","values","bookingValue","net","signupCohort","coverage","countries","cities","referrers","devices"]
Query organization analytics — query_organization_analytics
Read unsampled filtered events, sessions, breakdowns or daily summaries. Coverage reports missing facts; use next_cursor with the same query to continue.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
attribution_basis |
string | No | Which attribution the attribution fields read. Default event_snapshot (sessions: session_last_touch). enum: ["observed","event_snapshot","session_last_touch"] |
cursor |
string | No | next_cursor from the previous page of this same request. |
dimensions |
array of string (fields) | No | breakdown only: 1-6 fields to group by. |
end_date |
string | No | Inclusive local end date (YYYY-MM-DD). Defaults to today. |
filters |
object (fields) | No | Exact-match filters (all must match). path_prefix matches the public path or anything under it. Names are the queryable fields; enumerated ones list their values. additionalProperties: false |
limit |
integer | No | Rows per page (default 50). A page size is not a total-result limit. maximum: 200; minimum: 1 |
metrics |
array of string (fields) | No | breakdown only: 1-8 metrics. events (events); page_views (page views); interactions (interactions); outcomes (outcome events); sessions (distinct sessions); visitors (distinct visitors); entities (distinct business subjects); quoted_value_minor (minor units of the group currency); purchase_value_minor (minor units of the group currency); collected_minor (minor units of the group currency); refunded_minor (minor units of the group currency); net_collected_minor (minor units of the group currency); converting_sessions (distinct eligible sessions that completed the selected outcome in the range); eligible_sessions (distinct sessions with a pageview); session_conversion_rate (percent: converting sessions / eligible sessions, over the same sessions); checkouts_started (checkouts); payments_paid (payments); refunds_sent (refunds); checkout_conversion_rate (percent: checkouts started that were paid / checkouts started); refund_rate (percent: refunds sent / payments captured); payments_volume_minor (minor units of the group currency); avg_decision_seconds (seconds) |
mode |
string | Yes | events | sessions | breakdown | daily_summaries enum: ["events","sessions","breakdown","daily_summaries"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
outcome_event |
string | No | The outcome measured by converting_sessions and session_conversion_rate. |
sort |
string or object (fields) | No | events: occurred_at_desc (default) or occurred_at_asc. breakdown: { metric, direction } over a requested metric (default: the first metric, descending). Ties break deterministically. |
start_date |
string | No | Inclusive local start date (YYYY-MM-DD). Defaults to 29 days before end_date. |
additionalProperties: false; required: ["mode"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
coverage |
object | Yes | |
mode |
string | Yes | |
next_cursor |
string or null | Yes | |
query |
object | Yes | |
rows |
array of object (fields) | Yes | |
totals |
object | Yes |
required: ["mode","rows","next_cursor","query","totals","coverage"]
Blog
Create article category — create_article_category
Create a category in the blog or the documentation, at the top level or under another category (parent_id). It goes last among its siblings; place it with reorder_article_categories. Its slug comes from the name and does not change later. Returns the category and ID; articles are assigned separately.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection |
string | Yes | enum: ["blog","docs"] |
description |
string or null | No | What the category covers, shown on its page and used as the page description. maxLength: 500 |
name |
string | Yes | maxLength: 100; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
parent_id |
string or null | No | The category this one sits under, in the same collection; null or omitted for the top level. Categories nest at most 3 levels deep. |
additionalProperties: false; required: ["collection","name"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category |
object (fields) | Yes | additionalProperties: false; required: ["id","collection","name","slug","description","parent_id","sort_order","article_count","child_count"] |
additionalProperties: false; required: ["category"]
Create blog post — create_blog_post
Create a draft blog or documentation article with ordered content_blocks. It stays private until published. A category in the selected collection is required for publication. Use a new idempotency_key for each article; retrying the same key returns the same article. The preview_url allows draft review. When linking to dashboard settings in markdown copy, use /dashboard/app/
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category_id |
string | No | The article's category: the id of one of its collection's categories (list_article_categories). Required before publish_blog_post. To use a category that does not exist yet, create it with create_article_category first. |
collection |
string | No | Which of the site's collections the article belongs to: its blog, or its documentation. Defaults to the blog. enum: ["blog","docs"] |
content_blocks |
array of object (fields) | Yes | The article, in order. Any number of blocks of any type, images wherever they belong. The first block, when it is an image, is the cover. minItems: 1 |
excerpt |
string | No | |
idempotency_key |
string | Yes | A value you make up once for this article, such as a UUID, and reuse only to retry this same request. maxLength: 200; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
seo_keywords |
string or null | No | Comma-separated SEO keyword phrases when useful. |
title |
string | Yes | |
visibility |
string | No | Unlisted posts work by direct URL but are excluded from indexes, search, feeds, and sitemap. enum: ["listed","unlisted"] |
additionalProperties: false; required: ["idempotency_key","title","content_blocks"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
post |
object (fields) | Yes | additionalProperties: false; required: ["id","title","slug","excerpt","collection","category","sort_order","seo_keywords","published","published_at","status","visibility","created_at","updated_at","cover","admin_edit_url","edit_url","public_path","public_url","preview_url","view_url","content_blocks"] |
additionalProperties: false; required: ["post"]
Delete article category — delete_article_category
Delete an empty category. A category that still has articles or subcategories is refused with how many it holds: ask the user where they should go, move each article with update_blog_post (category_id) and each subcategory with update_article_category (parent_id), then delete it.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["category_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category_id |
string | Yes | |
deleted |
boolean | Yes |
additionalProperties: false; required: ["category_id","deleted"]
Delete blog post — delete_blog_post
Permanently delete the selected blog or documentation article and its owned content. Use only when the user requests removing that article; a published article is removed from the website.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_id |
string | Yes | Post id or slug. |
additionalProperties: false; required: ["post_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes | |
post_id |
string | Yes |
additionalProperties: false; required: ["post_id","deleted"]
Get blog post — get_blog_post
Read one blog or documentation article by ID or slug, including its ordered content_blocks and updated_at token. Use that token when editing or publishing the article.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_id |
string | Yes | Post id or slug. |
additionalProperties: false; required: ["post_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
post |
object (fields) | Yes | additionalProperties: false; required: ["id","title","slug","excerpt","collection","category","sort_order","seo_keywords","published","published_at","status","visibility","created_at","updated_at","cover","admin_edit_url","edit_url","public_path","public_url","preview_url","view_url","content_blocks"] |
additionalProperties: false; required: ["post"]
List article categories — list_article_categories
List categories and subcategories in one site blog or documentation collection, in public display order, with article and child-category counts. Published articles require a category in their collection.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection |
string | Yes | enum: ["blog","docs"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["collection"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
categories |
array of object (fields) | Yes |
additionalProperties: false; required: ["categories"]
List blog posts — list_blog_posts
List draft and published long-form articles in the selected site’s blog or documentation collection. Results are paginated in public display order. Short website posts are listed separately by list_posts.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection |
string | No | enum: ["blog","docs"] |
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
status |
string | No | enum: ["draft","published"] |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
posts |
array of object (fields) | Yes |
additionalProperties: false; required: ["posts","page_info"]
Publish blog post — publish_blog_post
Publish the selected draft blog or documentation article when publication is requested. Requires expected_updated_at from the latest read. An already published article is unchanged, including its date and announcement. Returns the article and website URL; this does not publish to Facebook or Instagram.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
expected_updated_at |
string | Yes | Exact post.updated_at concurrency token from the latest get_blog_post or successful blog mutation. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_id |
string | Yes | Post id or slug. |
additionalProperties: false; required: ["post_id","expected_updated_at"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
post |
object (fields) | Yes | additionalProperties: false; required: ["id","title","slug","excerpt","collection","category","sort_order","seo_keywords","published","published_at","status","visibility","created_at","updated_at","cover","admin_edit_url","edit_url","public_path","public_url","preview_url","view_url","content_blocks"] |
additionalProperties: false; required: ["post"]
Reorder article categories — reorder_article_categories
Set the order of one set of sibling categories on the public site — the index, its sidebar and the menu: the collection's top level (parent_id null or omitted), or one category's subcategories. Send every sibling id exactly once; a partial order is rejected.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category_ids |
array of string (fields) | Yes | minItems: 1 |
collection |
string | Yes | enum: ["blog","docs"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
parent_id |
string or null | No | Whose subcategories are being ordered; null or omitted for the top level. |
additionalProperties: false; required: ["collection","category_ids"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
categories |
array of object (fields) | Yes |
additionalProperties: false; required: ["categories"]
Reorder blog posts — reorder_blog_posts
Replace the public display order of articles in one blog or documentation collection. Supply every article ID in that collection exactly once, including drafts. New articles with sort_order 0 appear first until ordered; category ordering is separate.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection |
string | Yes | enum: ["blog","docs"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_ids |
array of string (fields) | Yes | minItems: 1 |
additionalProperties: false; required: ["collection","post_ids"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
posts |
array of object (fields) | Yes |
required: ["posts"]
Update article category — update_article_category
Rename a category, change its description, or move it under another category (parent_id; null moves it to the top level, where it goes last). Its page's address (slug) stays the same. Omitted fields stay unchanged; returns the updated category without moving its articles.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category_id |
string | Yes | |
description |
string or null | No | maxLength: 500 |
name |
string | No | maxLength: 100; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
parent_id |
string or null | No | The category this one sits under, in the same collection; null or omitted for the top level. Categories nest at most 3 levels deep. |
additionalProperties: false; required: ["category_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category |
object (fields) | Yes | additionalProperties: false; required: ["id","collection","name","slug","description","parent_id","sort_order","article_count","child_count"] |
additionalProperties: false; required: ["category"]
Update blog post — update_blog_post
Edit the selected blog or documentation article. Only supplied metadata changes; content_blocks replaces the entire body and requires expected_updated_at from the latest read. Stale tokens conflict. Changes to a published article are public immediately. When linking to dashboard settings in markdown copy, use /dashboard/app/
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category_id |
string | No | The article's category: the id of one of its collection's categories (list_article_categories). Required before publish_blog_post. To use a category that does not exist yet, create it with create_article_category first. |
collection |
string | No | Move the article to the site's blog or its documentation. Omit to leave it where it is. enum: ["blog","docs"] |
content_blocks |
array of object (fields) | No | The whole article, in order, replacing every block. Blocks read back keep their id. The first block, when it is an image, is the cover. minItems: 1 |
excerpt |
string | No | |
expected_updated_at |
string | No | Required with content_blocks. Use updated_at returned by get_blog_post; stale tokens are rejected with a conflict. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_id |
string | Yes | Post id or slug. |
redirect_old_slug |
boolean | No | Defaults true after first publish. |
reset_slug_override |
boolean | No | |
seo_keywords |
string or null | No | Comma-separated SEO keyword phrases when useful. |
slug |
string or null | No | Manual URL slug override. Published slug changes preserve a permanent redirect by default. |
title |
string | No | |
visibility |
string | No | enum: ["listed","unlisted"] |
additionalProperties: false; required: ["post_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
post |
object (fields) | Yes | additionalProperties: false; required: ["id","title","slug","excerpt","collection","category","sort_order","seo_keywords","published","published_at","status","visibility","created_at","updated_at","cover","admin_edit_url","edit_url","public_path","public_url","preview_url","view_url","content_blocks"] |
additionalProperties: false; required: ["post"]
Bookings
Cancel product booking — cancel_product_booking
Cancel a pending or confirmed product booking or consultation before it ends, release its places and email the guest. A required refund returns financial_action_required and a dashboard URL before status changes.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
operational_booking_id |
string | Yes | Booking ID returned by list_product_bookings or create_product_booking. Distinct from request_id, which identifies the inbox conversation. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["operational_booking_id","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
availableActions |
array of string (fields) | Yes | |
ok |
boolean | Yes | const: true |
record |
object (fields) | Yes | required: ["id","kind","status","party_size","starts_at","ends_at","timezone","assigned_member_id","location_id","product_id","product_name"] |
request_id |
string | Yes | minLength: 1 |
status |
number | Yes | const: 200 |
thread |
object (fields) | Yes | required: ["id","kind","conversation_state"] |
required: ["ok","status","request_id","record","availableActions","thread"]
Cancel table reservation — cancel_table_reservation
Cancel a table reservation, release its capacity and email the guest. A required refund returns financial_action_required and a dashboard URL before cancellation.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
operational_reservation_id |
string | Yes | Reservation ID from list_reservation_inquiries. Distinct from the inbox conversation ID. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["operational_reservation_id","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
availableActions |
array of string (fields) | Yes | |
ok |
boolean | Yes | const: true |
record |
object (fields) | Yes | required: ["id","kind","status","party_size","starts_at","ends_at","timezone","assigned_member_id","location_id","product_id","product_name"] |
request_id |
string | Yes | minLength: 1 |
status |
number | Yes | const: 200 |
thread |
object (fields) | Yes | required: ["id","kind","conversation_state"] |
required: ["ok","status","request_id","record","availableActions","thread"]
Confirm product booking — confirm_product_booking
Confirm a pending product booking or consultation after staff review and email the guest, keeping its session and places. No payment is collected.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
operational_booking_id |
string | Yes | Booking ID returned by list_product_bookings or create_product_booking. Distinct from request_id, which identifies the inbox conversation. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["operational_booking_id","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
availableActions |
array of string (fields) | Yes | |
ok |
boolean | Yes | const: true |
record |
object (fields) | Yes | required: ["id","kind","status","party_size","starts_at","ends_at","timezone","assigned_member_id","location_id","product_id","product_name"] |
request_id |
string | Yes | minLength: 1 |
status |
number | Yes | const: 200 |
thread |
object (fields) | Yes | required: ["id","kind","conversation_state"] |
required: ["ok","status","request_id","record","availableActions","thread"]
Create product booking — create_product_booking
Book the named guest at a returned product session; review offerings start pending and instant offerings confirmed. Required online payment returns financial_action_required and a dashboard URL before any booking is created.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
external_reference |
string | No | maxLength: 200 |
guest_acknowledgement |
boolean | Yes | Explicit choice to send the guest creation email. Owner alerts, inbox, and audit always remain. |
guest_email |
string | Yes | |
guest_name |
string | Yes | minLength: 1 |
guest_phone |
string | No | Optional guest phone in international format. |
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
locale |
string | No | Guest confirmation language code; defaults to the website language. |
notes |
string | No | maxLength: 1000 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
party_size |
integer | Yes | maximum: 99; minimum: 1 |
product_slug |
string | Yes | |
session_id |
string | Yes | |
source |
string | Yes | Explicit provenance, such as operator or external scheduler. maxLength: 100; minLength: 1 |
variant_id |
string | No |
additionalProperties: false; required: ["product_slug","session_id","party_size","guest_name","guest_email","idempotency_key","source","guest_acknowledgement"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
http_status |
integer | Yes | maximum: 299; minimum: 200 |
operational_booking_id |
string | Yes | minLength: 1 |
replayed |
boolean | No | |
request_id |
string | Yes | minLength: 1 |
status |
string | Yes | enum: ["pending","confirmed","cancelled"] |
success |
boolean | Yes | const: true |
required: ["success","operational_booking_id","request_id","status","http_status"]
Create product session — create_product_session
Add a dated time at a location for an existing bookable offering using its actual start and end. An assigned team gets one session per member. Online offerings take no dated sessions: they are booked in their provider's working hours.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
capacity |
integer or null | No | minimum: 0 |
ends_at |
string | Yes | format: "date-time" |
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
location_id |
string | Yes | Session location. minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | minLength: 1 |
starts_at |
string | Yes | format: "date-time" |
additionalProperties: false; required: ["product_id","location_id","starts_at","ends_at","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
sessions |
array of object (fields) | Yes | minItems: 1 |
required: ["sessions"]
Create table reservation — create_table_reservation
Reserve a table for a named guest at a location’s local date and time under its saved reservation policy. Required deposits return financial_action_required and a dashboard URL before confirmation.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
external_reference |
string | No | |
guest_acknowledgement |
boolean | Yes | Explicit choice to email the guest; owner alerts, inbox and audit are always recorded. |
guest_email |
string | Yes | |
guest_name |
string | Yes | minLength: 1 |
guest_phone |
string | Yes | International phone number with calling code. |
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
locale |
string | No | Guest confirmation language code; defaults to the website language. |
location_id |
string | Yes | |
notes |
string | No | maxLength: 1000 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
party_size |
integer | Yes | maximum: 99; minimum: 1 |
source |
string | Yes | minLength: 1 |
time |
string | Yes | pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
additionalProperties: false; required: ["location_id","date","time","party_size","guest_name","guest_email","guest_phone","idempotency_key","source","guest_acknowledgement"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
http_status |
integer | Yes | |
operational_reservation_id |
string | Yes | minLength: 1 |
replayed |
boolean | No | |
request_id |
string | Yes | minLength: 1 |
status |
string | Yes | |
success |
boolean | Yes | const: true |
required: ["success","request_id","operational_reservation_id","status","http_status"]
Get product booking — get_product_booking
Read one product booking or consultation when the user wants its guest details, status or current session. Use its updated_at when proposing a change.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
operational_booking_id |
string | Yes | Booking ID returned by list_product_bookings or create_product_booking. Distinct from request_id, which identifies the inbox conversation. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["operational_booking_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
guest |
object (fields) | Yes | required: ["name","email"] |
guest_user_id |
string or null | Yes | |
operational_booking_id |
string | Yes | minLength: 1 |
operational_updated_at |
string | Yes | minLength: 1 |
provenance |
object or null (fields) | Yes | required: ["source","external_reference","guest_acknowledgement"] |
record |
object (fields) | Yes | required: ["id","kind","status","party_size","starts_at","ends_at","timezone","assigned_member_id","location_id","product_id","product_name"] |
request_id |
string | Yes | minLength: 1 |
updated_at |
string | Yes | minLength: 1 |
required: ["operational_booking_id","request_id","updated_at","operational_updated_at","guest_user_id","guest","provenance","record"]
List product booking sessions — list_product_booking_sessions
Read scheduled times and remaining places for a product, including shared calendar conflicts. Choose a returned session ID to create or change a booking.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
from |
string | Yes | Inclusive ISO UTC instant. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | |
to |
string | Yes | Exclusive ISO UTC instant, at most 93 days after from. |
additionalProperties: false; required: ["product_id","from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
sessions |
array of object (fields) | Yes |
required: ["sessions","page_info"]
List product bookings — list_product_bookings
Read product bookings and consultations with guests, session times, assigned members and status; use operational_booking_id to manage a booking. Restaurant table reservations use list_reservation_inquiries.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string | No | |
cursor |
string | No | Opaque next_cursor from the previous page. |
from |
string | No | Inclusive session start instant. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
location_id |
string or null | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | No | |
status |
string | No | enum: ["pending","confirmed","completed","cancelled"] |
to |
string | No | Exclusive session start instant. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
bookings |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
required: ["bookings","page_info"]
Reassign product booking — reassign_product_booking
Move a provider-led booking’s whole session to an available team member, preserving its time and attendees’ booking IDs. Sends guest and staff notifications; active checkout holds prevent the change.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
expected_updated_at |
string | Yes | |
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
member_id |
string | Yes | |
operational_booking_id |
string | Yes | Booking ID returned by list_product_bookings or create_product_booking. Distinct from request_id, which identifies the inbox conversation. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["operational_booking_id","member_id","expected_updated_at","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string | Yes | minLength: 1 |
session_id |
string | Yes | minLength: 1 |
required: ["session_id","assigned_member_id"]
Reject product booking — reject_product_booking
Decline a pending product booking or consultation, release its places and email the guest. A required refund returns financial_action_required and a dashboard URL before status changes.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
operational_booking_id |
string | Yes | Booking ID returned by list_product_bookings or create_product_booking. Distinct from request_id, which identifies the inbox conversation. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["operational_booking_id","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
availableActions |
array of string (fields) | Yes | |
ok |
boolean | Yes | const: true |
record |
object (fields) | Yes | required: ["id","kind","status","party_size","starts_at","ends_at","timezone","assigned_member_id","location_id","product_id","product_name"] |
request_id |
string | Yes | minLength: 1 |
status |
number | Yes | const: 200 |
thread |
object (fields) | Yes | required: ["id","kind","conversation_state"] |
required: ["ok","status","request_id","record","availableActions","thread"]
Request product booking change — request_product_booking_change
Email the guest a proposal to change a booking’s session or party size. The current booking and places remain unchanged until guest acceptance, which requires availability and preserves its review status.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
expected_updated_at |
string | Yes | Thread updated_at from get_product_booking. |
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
operational_booking_id |
string | Yes | Booking ID returned by list_product_bookings or create_product_booking. Distinct from request_id, which identifies the inbox conversation. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
party_size |
integer | Yes | maximum: 99; minimum: 1 |
session_id |
string | Yes |
additionalProperties: false; required: ["operational_booking_id","session_id","party_size","expected_updated_at","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
change_status |
string | Yes | const: "awaiting_guest_acceptance" |
record |
object (fields) | Yes | required: ["id","kind","status","party_size","starts_at","ends_at","timezone","assigned_member_id","location_id","product_id","product_name"] |
request_id |
string | Yes | minLength: 1 |
success |
boolean | Yes | const: true |
required: ["success","request_id","change_status","record"]
Request table reservation change — request_table_reservation_change
Email the guest a proposal to change a table reservation’s location, local date, time or party size. The current reservation remains unchanged until the guest accepts.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
date |
string | Yes | |
expected_updated_at |
string | Yes | |
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical operation. maxLength: 200; minLength: 1 |
location_id |
string | Yes | |
operational_reservation_id |
string | Yes | Reservation ID from list_reservation_inquiries. Distinct from the inbox conversation ID. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
override_policy |
boolean | No | True only when the business approves an exception to its change policy. |
party_size |
integer | Yes | maximum: 99; minimum: 1 |
time |
string | Yes |
additionalProperties: false; required: ["operational_reservation_id","location_id","date","time","party_size","expected_updated_at","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
change_status |
string | Yes | const: "awaiting_guest_acceptance" |
record |
object (fields) | Yes | required: ["id","kind","status","party_size","starts_at","ends_at","timezone","assigned_member_id","location_id","product_id","product_name"] |
request_id |
string | Yes | minLength: 1 |
success |
boolean | Yes | const: true |
required: ["success","request_id","change_status","record"]
Update product session — update_product_session
Edit one session’s time, capacity or state using its current timestamp. Committed bookings or checkout holds prevent time or state changes; use the guest booking-change workflow.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
capacity |
integer or null | No | minimum: 0 |
ends_at |
string | No | format: "date-time" |
expected_updated_at |
string | Yes | Session updated_at from the latest read. minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | minLength: 1 |
session_id |
string | Yes | minLength: 1 |
starts_at |
string | No | format: "date-time" |
status |
string | No | enum: ["scheduled","cancelled"] |
additionalProperties: false; required: ["product_id","session_id","expected_updated_at"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
session |
object (fields) | Yes | required: ["id","organization_id","product_id","location_id","assigned_member_id","starts_at","ends_at","timezone","capacity","status","claimed","remaining","is_full","updated_at"] |
required: ["session"]
Content
Append content block — append_content_block
Add a block to an existing article or site page, returning the changed block and document timestamp. An image in the first article block becomes its cover.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
after_block_id |
string or null | No | The block this one follows. Omit to append at the end. |
data |
#/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_cta or #/$defs/content_contact_cta or #/$defs/content_booking_cta or #/$defs/content_callout or #/$defs/content_hero or #/$defs/content_button_group or #/$defs/content_feature_grid or #/$defs/content_comparison or #/$defs/content_stat_grid or #/$defs/content_workflow_grid or #/$defs/content_showcase or #/$defs/content_language_reach or #/$defs/content_steps or #/$defs/content_video_feature or #/$defs/content_media_text or #/$defs/content_contact_form or #/$defs/content_team_grid or #/$defs/content_testimonial_grid or #/$defs/content_donation_choices or #/$defs/content_page_grid or #/$defs/content_product_grid or #/$defs/content_location_grid or #/$defs/content_social_posts or #/$defs/content_ai_assistance (fields) | Yes | |
document_id |
string | Yes | The blog post id or site page variant id. |
level |
integer or null | No | Heading blocks only. maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. Send a block's media as a read returned it. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
type |
string | Yes | enum: ["heading","markdown","image","gallery","video","faq","how_to","divider","cta","contact_cta","booking_cta","callout","hero","button_group","feature_grid","comparison","stat_grid","workflow_grid","showcase","language_reach","steps","video_feature","media_text","contact_form","team_grid","testimonial_grid","donation_choices","page_grid","product_grid","location_grid","social_posts","ai_assistance"] |
additionalProperties: false; required: ["document_id","type","data"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
blocks |
array of object (fields) | Yes | Changed blocks with IDs and timestamps; empty after deletion. |
document_id |
string | Yes | |
updated_at |
string | Yes | The document's new concurrency token. |
additionalProperties: false; required: ["document_id","updated_at","blocks"]
Create site page — create_site_page
Create an authored site page in the named language, returning its document, blocks and editor information. A secondary language must name an existing source page. Supply the actual content for that language; no translation is generated. Pages on a live site can become public immediately; blog articles and short announcements use their own tools.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
blocks |
array of object (fields) | Yes | Complete canonical block array. Each existing block must retain its id unless its removal is explicitly confirmed. Block data never contains asset IDs or delivery URLs. Omit media to preserve that block's current placements; provide media explicitly to replace them, or call set_media with owner_type "content_block", the block id, and the intended slot. |
locale |
string or null | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
pageType |
string | No | The page's type. Send the page_type from the last read unless you are changing it. enum: ["custom","recipe","legal","system"] |
page_id |
string or null | No | |
path |
string | Yes | The page path to write. Send the current path unless you are moving the page; a different path moves it and creates the locale-scoped redirect. |
recipe |
string or null | No | The template section this page fills, or null for a page that fills none. Send the recipe from the last read unless you are changing it; an omitted recipe is not kept. |
sortOrder |
number | No | The page's position in the site's page list. Send the sort_order from the last read unless you are reordering. |
summary |
string or null | No | Omit to preserve on update; null clears it. |
title |
string | Yes | The page title to write. Always sent in full — an omitted title is not kept. |
variant_id |
string or null | No |
additionalProperties: false; required: ["path","title","blocks"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page |
object (fields) | Yes | required: ["id","page_id","organization_id","product_id","locale","path","title","summary","page_type","recipe","sort_order","updated_at","blocks","document","admin_edit_url"] |
required: ["page"]
Delete content block — delete_content_block
Permanently delete one block and its descendants from an article or site page; published content changes immediately. Returns the document timestamp and no blocks.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
block_id |
string | Yes | |
expected_updated_at |
string | Yes | The block's updated_at from the last read. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["block_id","expected_updated_at"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
blocks |
array of object (fields) | Yes | Changed blocks with IDs and timestamps; empty after deletion. |
document_id |
string | Yes | |
updated_at |
string | Yes | The document's new concurrency token. |
additionalProperties: false; required: ["document_id","updated_at","blocks"]
Delete site page — delete_site_page
Delete the selected site page or translation. Deleting a translation removes that translation; deleting the source locale removes the page and every translation with it, and the response names the locales that went. A page the site template renders cannot be deleted, because its route would then have nothing to show.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
expected_updated_at |
string | Yes | The document timestamp from the last read, so a page edited since is refused rather than silently removed. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
variant_id |
string | Yes |
additionalProperties: false; required: ["variant_id","expected_updated_at"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
object (fields) | Yes | required: ["id","path","locale","removed_locales"] |
required: ["deleted"]
Get reservation policy — get_reservation_policy
Read one location’s table reservation settings and guest-facing policy summary. Product session bookings use get_product for their separate configuration.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locale |
string | No | |
location_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["location_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cancellation_policy |
string or null | Yes | The named cancellation policy the dashboard shows, or null when the stored cutoffs match none of them. enum: ["flexible","moderate","firm",null] |
policy |
object (fields) | Yes | required: ["location_id","duration_minutes","reschedule_allowed","deposit_required","accessibility_contact_required","created_at","updated_at"] |
summary |
object (fields) | Yes | required: ["heading","items","additional_notes_html"] |
required: ["policy","cancellation_policy","summary"]
Get site page — get_site_page
Read one site-page language variant, including its path, title, ordered blocks and current timestamp. Use its returned IDs and concurrency information for edits.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
variant_id |
string | Yes |
additionalProperties: false; required: ["variant_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page |
object (fields) | Yes | required: ["id","page_id","organization_id","product_id","locale","path","title","summary","page_type","recipe","sort_order","updated_at","blocks","document","admin_edit_url"] |
required: ["page"]
List site pages — list_site_pages
List authored pages and built-in public routes. Catalog routes display published products; they do not require custom page creation.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
locale |
string or null | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
built_in_pages |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
pages |
array of object (fields) | Yes |
required: ["pages","built_in_pages","page_info"]
Replace content block — replace_content_block
Replace one block’s complete data, keeping its ID and position; published content changes immediately. Read it first and preserve content outside the requested change; returns the changed block and document timestamp.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
block_id |
string | Yes | |
data |
#/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_cta or #/$defs/content_contact_cta or #/$defs/content_booking_cta or #/$defs/content_callout or #/$defs/content_hero or #/$defs/content_button_group or #/$defs/content_feature_grid or #/$defs/content_comparison or #/$defs/content_stat_grid or #/$defs/content_workflow_grid or #/$defs/content_showcase or #/$defs/content_language_reach or #/$defs/content_steps or #/$defs/content_video_feature or #/$defs/content_media_text or #/$defs/content_contact_form or #/$defs/content_team_grid or #/$defs/content_testimonial_grid or #/$defs/content_donation_choices or #/$defs/content_page_grid or #/$defs/content_product_grid or #/$defs/content_location_grid or #/$defs/content_social_posts or #/$defs/content_ai_assistance (fields) | Yes | Complete replacement data; omitted fields are removed. |
expected_updated_at |
string | Yes | The block's updated_at from the last read. |
media |
array of #/$defs/content_block_media (fields) | No | Omit to retain existing placements; supply the complete array to replace them. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["block_id","expected_updated_at","data"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
blocks |
array of object (fields) | Yes | Changed blocks with IDs and timestamps; empty after deletion. |
document_id |
string | Yes | |
updated_at |
string | Yes | The document's new concurrency token. |
additionalProperties: false; required: ["document_id","updated_at","blocks"]
Update reservation policy — update_reservation_policy
Enable or update table reservations using the location’s saved hours. New setup defaults to two hours, unlimited capacity, no advance notice and no deposit. Use the current updated_at when amending it; omitted fields keep their value. Deposits need an amount, currency, tax treatment and ready Payments.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accessibility_contact_required |
boolean | No | |
additional_notes_html |
string or null | No | Guest-facing notes. Sanitized on the way in; only basic formatting and links survive. |
advance_notice_minutes |
number or null | No | Required notice before the start. Defaults to zero on setup; null removes the rule. minimum: 0 |
cancellation_policy |
string | No | Flexible: 2 hours. Moderate: 1 day. Firm: 2 days. Sets the deposit-refund and reschedule cutoffs together; do not also pass those fields. enum: ["flexible","moderate","firm"] |
deposit_amount |
integer or null | No | Total deposit per reservation, in deposit_currency minor units. minimum: 1 |
deposit_currency |
string or null | No | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR",null] |
deposit_required |
boolean | No | Defaults to false on setup. Omit to keep the current requirement. |
deposit_tax_behavior |
string or null | No | enum: ["inclusive","exclusive",null] |
deposit_trigger_party_size |
number or null | No | minimum: 1 |
duration_minutes |
integer or null | No | Minutes per reservation. Defaults to 120 on setup; null restores that default. Omit to keep the current duration. default: 120; minimum: 1 |
expected_updated_at |
string or null | Yes | Current policy updated_at; null when creating. |
free_cancellation_until_minutes |
number or null | No | minimum: 0 |
locale |
string | No | |
location_id |
string | Yes | |
minimum_guest_age |
number or null | No | minimum: 0 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
reschedule_allowed |
boolean | No | |
reschedule_cutoff_minutes |
number or null | No | minimum: 0 |
slot_capacity |
number or null | No | Guests per start time. Defaults to unlimited on setup; null removes the limit. minimum: 0 |
additionalProperties: false; required: ["location_id","expected_updated_at"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
changed_fields |
array of string (fields) | No | |
context |
object | No | |
entity |
string | Yes | enum: ["reservation_policy"] |
location_id |
string | Yes | |
ok |
boolean | Yes | |
summary |
object (fields) | No | required: ["heading","items","additional_notes_html"] |
updated_at |
string | No |
required: ["ok","entity","location_id"]
Update site page — update_site_page
Replace a page’s metadata and complete ordered blocks using its current timestamp. Omitted summary and product binding retain their values; removing blocks requires their exact IDs.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
blocks |
array of object (fields) | Yes | Complete canonical block array. Each existing block must retain its id unless its removal is explicitly confirmed. Block data never contains asset IDs or delivery URLs. Omit media to preserve that block's current placements; provide media explicitly to replace them, or call set_media with owner_type "content_block", the block id, and the intended slot. |
expected_updated_at |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
pageType |
string | Yes | The page's type. Send the page_type from the last read unless you are changing it. enum: ["custom","recipe","legal","system"] |
path |
string | Yes | The page path to write. Send the current path unless you are moving the page; a different path moves it and creates the locale-scoped redirect. |
product_id |
string or null | No | Explicit canonical Product binding on the source page only. Omit to retain; null unbinds. Translations inherit the source binding; slugs never imply a relationship. |
recipe |
string or null | Yes | The template section this page fills, or null for a page that fills none. Send the recipe from the last read unless you are changing it; an omitted recipe is not kept. |
removed_block_ids |
array of string (fields) | No | Exact existing block IDs omitted from the replacement; omit when none are removed. |
sortOrder |
number | Yes | The page's position in the site's page list. Send the sort_order from the last read unless you are reordering. |
summary |
string or null | No | Omit to preserve on update; null clears it. |
title |
string | Yes | The page title to write. Always sent in full — an omitted title is not kept. |
variant_id |
string | Yes |
additionalProperties: false; required: ["variant_id","expected_updated_at","path","title","pageType","recipe","sortOrder","blocks"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page |
object (fields) | Yes | required: ["id","page_id","organization_id","product_id","locale","path","title","summary","page_type","recipe","sort_order","updated_at","blocks","document","admin_edit_url"] |
required: ["page"]
Context
Get workspace context — get_workspace_context
Read the active site and location and the sites available to the signed-in user. Use returned internal organization and location IDs to target site tools. URLs, domains and names are not IDs.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
Input: object.
additionalProperties: false
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object (fields) | Yes | required: ["organization_id","organization_name","organization_slug","organization_subdomain","organization_public_url","location_id","location_slug","location_title"] |
locations |
array of object (fields) | Yes | |
organizations |
array of object (fields) | Yes |
required: ["context","organizations","locations"]
Set workspace context — set_workspace_context
Save the selected active site and optional location for the signed-in user, shared across their connections. Returns the saved site and location. Use internal IDs returned by site/location reads. Explicit IDs supplied to later tools still determine their targets.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
location_id |
string | No | Internal location ID from list_locations or get_workspace_context. |
organization_id |
string | No |
additionalProperties: false
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object (fields) | Yes | required: ["organization_id","organization_name","organization_slug","organization_subdomain","organization_public_url","location_id","location_slug","location_title"] |
locations |
array of object (fields) | Yes | |
organizations |
array of object (fields) | Yes | |
success |
boolean | Yes |
required: ["success","context","organizations","locations"]
Google ads
Clone google ads campaign — clone_google_ads_campaign
Clone an existing Google Ads campaign structure for a new landing page or blog post, copying keywords, updating destination URL, and adapting ad headlines and daily budget.
Minimum role: admin. Required entitlement: marketing.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
additional_keywords |
array of string (fields) | No | Optional additional keywords to include. |
daily_budget_micros |
integer | No | Optional daily budget in micros. Defaults to the source campaign budget. minimum: 1000000 |
headline_replacements |
object | No | Optional mapping of text patterns to replace in source ad headlines (e.g. {"Old Title": "New Title"}). |
new_campaign_name |
string | Yes | Name for the cloned campaign. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
source_campaign_id |
string | Yes | Google Ads campaign ID of the template campaign to clone. |
status |
string | No | Initial status of the cloned campaign (default PAUSED). enum: ["ENABLED","PAUSED"] |
target_url |
string | Yes | Destination landing page or blog post URL for the new campaign. |
additionalProperties: false; required: ["source_campaign_id","new_campaign_name","target_url"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
ad_group_resource_name |
string | Yes | |
ad_resource_name |
string | Yes | |
budget_resource_name |
string | Yes | |
campaign_id |
string | Yes | |
resource_name |
string | Yes | |
status |
string | Yes |
required: ["campaign_id","resource_name","budget_resource_name","ad_group_resource_name","ad_resource_name","status"]
Create google ads search campaign — create_google_ads_search_campaign
Create and launch a new Google Ads Search campaign with an atomic mutate batch including daily budget, campaign, ad group, keywords, and responsive search ad.
Minimum role: admin. Required entitlement: marketing.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
daily_budget_micros |
integer | Yes | Daily budget in micros (e.g. 10000000 for 10 units in account currency). minimum: 1000000 |
descriptions |
array of string (fields) | Yes | Descriptions for Responsive Search Ad (2 to 4, max 90 chars each). maxItems: 4; minItems: 2 |
headlines |
array of string (fields) | Yes | Headlines for Responsive Search Ad (3 to 15, max 30 chars each). maxItems: 15; minItems: 3 |
keywords |
array of object (fields) | Yes | Keywords to target with optional match type (defaults to PHRASE). |
name |
string | Yes | Campaign name. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
status |
string | No | Initial campaign status (defaults to PAUSED). enum: ["ENABLED","PAUSED"] |
target_url |
string | Yes | Destination landing page or blog post URL (must start with http:// or https://). |
additionalProperties: false; required: ["name","daily_budget_micros","target_url","keywords","headlines","descriptions"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
ad_group_resource_name |
string | Yes | |
ad_resource_name |
string | Yes | |
budget_resource_name |
string | Yes | |
campaign_id |
string | Yes | |
resource_name |
string | Yes | |
status |
string | Yes |
required: ["campaign_id","resource_name","budget_resource_name","ad_group_resource_name","ad_resource_name","status"]
Get google ads campaign — get_google_ads_campaign
Read full details of a Google Ads campaign, including its budget, ad groups, criteria/keywords, and responsive search ad headlines, descriptions, and final URLs.
Minimum role: admin. Required entitlement: marketing.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaign_id |
string | Yes | Numeric Google Ads campaign ID. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["campaign_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
adGroups |
array of object (fields) | Yes | |
budgetAmountMicros |
number | Yes | |
budgetId |
string or null | No | |
channelType |
string | Yes | |
clicks |
number | Yes | |
conversions |
number | Yes | |
costMicros |
number | Yes | |
descriptions |
array of string (fields) | Yes | |
finalUrls |
array of string (fields) | Yes | |
headlines |
array of string (fields) | Yes | |
id |
string | Yes | |
impressions |
number | Yes | |
keywords |
array of object (fields) | Yes | |
name |
string | Yes | |
status |
string | Yes |
required: ["id","name","status","channelType","budgetAmountMicros","clicks","impressions","costMicros","conversions","adGroups","keywords","headlines","descriptions","finalUrls"]
List google ads campaigns — list_google_ads_campaigns
List Google Ads campaigns for the connected Google Ads account, including status, daily budget, spend, impressions, clicks, and conversions.
Minimum role: admin. Required entitlement: marketing.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
status |
string | No | Filter campaigns by status: ENABLED, PAUSED, or ALL (default: ALL). enum: ["ENABLED","PAUSED","ALL"] |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaigns |
array of object (fields) | Yes | |
customer_id |
string | Yes |
required: ["customer_id","campaigns"]
Update google ads campaign — update_google_ads_campaign
Update the status (ENABLED/PAUSED) or daily budget of an existing Google Ads campaign.
Minimum role: admin. Required entitlement: marketing.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
budget_id |
string | No | Optional budget ID when updating daily budget. |
campaign_id |
string | Yes | Google Ads campaign ID to update. |
daily_budget_micros |
integer | No | Optional new daily budget in micros. minimum: 1000000 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
status |
string | No | New campaign status (ENABLED or PAUSED). enum: ["ENABLED","PAUSED"] |
additionalProperties: false; required: ["campaign_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
budget_id |
string or null | No | |
campaign_id |
string | Yes | |
daily_budget_micros |
integer or null | No | |
status |
string or null | No |
required: ["campaign_id"]
Guest messaging
Cancel scheduled guest message — cancel_scheduled_guest_message
Cancel one pending automatic guest message. A message already sending, sent or requiring review cannot be cancelled or resent by this operation.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
message_id |
string | Yes | minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["message_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
message |
object (fields) | Yes | required: ["id","organizationId","productId","stayId","requestId","templateId","title","templateVersion","body","dueAt","timezone","status","reason","errorCode","errorField","entryId","startedAt","sentAt","createdAt","updatedAt"] |
required: ["message"]
Create message template — create_message_template
Save a guest reply. schedule:null saves a quick reply without automatic delivery. An explicit schedule plans only eligible future events at the named homes in their own timezones; ambiguous or nonexistent local times fail visibly.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string | Yes | maxLength: 5000; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
schedule |
null or object (fields) | Yes | |
title |
string | Yes | maxLength: 100; minLength: 1 |
additionalProperties: false; required: ["title","body","schedule"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
template |
object (fields) | Yes | required: ["id","organizationId","title","body","schedule","version","createdAt","updatedAt"] |
required: ["template"]
Delete message template — delete_message_template
Delete a saved reply using its current version and cancel its pending messages. Earlier delivery snapshots remain recorded; an in-flight send cannot be recalled.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
expected_version |
integer | Yes | minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
template_id |
string | Yes | minLength: 1 |
additionalProperties: false; required: ["template_id","expected_version"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
status |
string | Yes | const: "deleted" |
required: ["status"]
Get guest messaging context — get_guest_messaging_context
Read the actual home and optional stay behind a canonical guest conversation, including private check-in instructions the host may choose to share. Contact conversations may have no home or stay; channel inquiries can have a home without a booked stay.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
request_id |
string | Yes | minLength: 1 |
additionalProperties: false; required: ["request_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
home |
object or null (fields) | Yes | required: ["product_id","name","location_id","timezone","currency","base_price_minor","base_price_tax_behavior","check_in_time","check_out_time","max_guests","min_nights","description","published","address","latitude","longitude","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy","check_in_method","check_in_instructions","wifi_network","wifi_password","directions","house_manual","checkout_instructions","assigned_member_id","assigned_team_id","channel","photos"] |
requestId |
string | Yes | minLength: 1 |
stay |
object or null (fields) | Yes | required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"] |
required: ["requestId","home","stay"]
List message templates — list_message_templates
Read the workspace’s saved guest replies and their explicit automatic-delivery schedules. Follow page_info for every page.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
templates |
array of object (fields) | Yes |
required: ["templates","page_info"]
List scheduled guest messages — list_scheduled_guest_messages
Read scheduled guest-message snapshots and visible failure reasons, optionally for one canonical guest conversation. Members see only assigned homes. Read provider delivery receipts through get_guest_conversation; no provider result is inferred from a scheduled time.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
request_id |
string | No | minLength: 1 |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
messages |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
required: ["messages","page_info"]
Update message template — update_message_template
Replace a saved guest reply and its schedule using the current version. Completed, failed, skipped, cancelled and uncertain deliveries are never recreated by an edit.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string | Yes | maxLength: 5000; minLength: 1 |
expected_version |
integer | Yes | minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
schedule |
null or object (fields) | Yes | |
template_id |
string | Yes | minLength: 1 |
title |
string | Yes | maxLength: 100; minLength: 1 |
additionalProperties: false; required: ["template_id","expected_version","title","body","schedule"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
template |
object (fields) | Yes | required: ["id","organizationId","title","body","schedule","version","createdAt","updatedAt"] |
required: ["template"]
Update stay arrival guide — update_stay_arrival_guide
Save one home's private arrival guide: check-in method and instructions, wifi, directions, house manual and checkout instructions. Fields left out keep their values; null removes one. Saving does not send anything to a guest or publish it on the site.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
check_in_instructions |
string or null | No | maxLength: 5000; minLength: 1 |
check_in_method |
string or null | No | How guests get in. enum: ["smart_lock","keypad","lockbox","building_staff","in_person","other",null] |
checkout_instructions |
array of object (fields) | No | What guests do before leaving, in order, each task once; replaces the whole list. |
directions |
string or null | No | maxLength: 5000; minLength: 1 |
house_manual |
string or null | No | maxLength: 5000; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | minLength: 1 |
wifi_network |
string or null | No | maxLength: 100; minLength: 1 |
wifi_password |
string or null | No | maxLength: 100; minLength: 1 |
additionalProperties: false; required: ["product_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
home |
object (fields) | Yes | required: ["product_id","name","location_id","timezone","currency","base_price_minor","base_price_tax_behavior","check_in_time","check_out_time","max_guests","min_nights","description","published","address","latitude","longitude","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy","check_in_method","check_in_instructions","wifi_network","wifi_password","directions","house_manual","checkout_instructions","assigned_member_id","assigned_team_id","channel","photos"] |
required: ["home"]
Locales
Delete organization language — delete_organization_language
Permanently delete a disabled website language and all of its translations. Disable it before deletion. Source content is preserved.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locale |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["locale"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes | const: true |
locale |
string | Yes |
additionalProperties: false; required: ["deleted","locale"]
Delete resource localization — delete_resource_localization
Permanently remove one translation and its owned document and redirects. Source content is preserved; imported Q&A remains read-only.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locale |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
resource_id |
string | Yes | |
resource_type |
string | Yes | enum: ["organization","business_location","product","collection","article_category","media_asset","content_document"] |
additionalProperties: false; required: ["resource_type","resource_id","locale"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object | No | |
deleted |
boolean | Yes | |
locale |
string | Yes | |
resource_id |
string | Yes | |
resource_type |
string | Yes | enum: ["organization","business_location","product","collection","article_category","media_asset","content_document"] |
additionalProperties: false; required: ["deleted","resource_type","resource_id","locale"]
Get product catalog localization — get_product_catalog_localization
Read catalog text and existing translations for an authored secondary language, including its menu sections.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locale |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["locale"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collections |
array of object (fields) | Yes | |
locale |
string | Yes | |
products |
array of object (fields) | Yes |
additionalProperties: false; required: ["locale","products","collections"]
Get resource localization — get_resource_localization
Read the requested resource or document in exactly the named language. A missing translation returns not found rather than source-language content.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locale |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
resource_id |
string | Yes | |
resource_type |
string | Yes | enum: ["organization","business_location","product","collection","article_category","media_asset","content_document"] |
additionalProperties: false; required: ["resource_type","resource_id","locale"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
localization |
object (fields) | Yes |
additionalProperties: false; required: ["localization"]
List organization locales — list_organization_locales
Read the website’s source language and authored translations.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locales |
array of object (fields) | Yes |
additionalProperties: false; required: ["locales"]
Put resource localization — put_resource_localization
Replace an exact translation. Existing documents require expected_updated_at. Documents require route_path; authored Q&A uses title and summary without a route or blocks. Imported Q&A remains read-only.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
content_blocks |
array of object (fields) | No | Complete canonical block array. Each existing block must retain its id unless its removal is explicitly confirmed. Block data never contains asset IDs or delivery URLs. Omit media to preserve that block's current placements; provide media explicitly to replace them, or call set_media with owner_type "content_block", the block id, and the intended slot. |
expected_updated_at |
string or null | No | |
locale |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
resource_id |
string | Yes | |
resource_type |
string | Yes | enum: ["organization","business_location","product","collection","article_category","media_asset","content_document"] |
route_path |
string or null | No | Document path including the language prefix. Resource routes are automatic. |
values |
object (fields) | Yes | additionalProperties: false |
additionalProperties: false; required: ["resource_type","resource_id","locale","values"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object | No | |
localization |
object (fields) | Yes |
additionalProperties: false; required: ["localization"]
Replace resource localizations — replace_resource_localizations
Atomically replace 1–250 exact resource translations for one language. Omitted resources retain their translations; any invalid item rejects the batch. Uses supplied translations without generating them.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
items |
array of object (fields) | Yes | maxItems: 250; minItems: 1 |
locale |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
resource_type |
string | Yes | enum: ["organization","business_location","product","collection","article_category","media_asset"] |
additionalProperties: false; required: ["resource_type","locale","items"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object | No | |
locale |
string | Yes | |
resource_type |
string | Yes | enum: ["organization","business_location","product","collection","article_category","media_asset"] |
updated_resource_ids |
array of string (fields) | Yes |
additionalProperties: false; required: ["locale","resource_type","updated_resource_ids"]
Set organization language — set_organization_language
Add a website language for private authoring, publish its translations, or disable its public routes. Publishing shows only authored translations. Adding and publishing require the website’s language entitlement.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
action |
string | Yes | enum: ["add","publish","disable"] |
locale |
string | Yes | enum: ["en","ja","th","vi"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["locale","action"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locales |
array of object (fields) | Yes |
additionalProperties: false; required: ["locales"]
Locations
Block dates — block_dates
Close a location for a whole-day date range when the user wants to prevent bookings on those dates. Both endpoints are inclusive. Adds a closure to special hours while retaining existing closures and dated hours. Returns the saved hours; existing bookings and reservations are not cancelled or messaged.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
from |
string | Yes | First closed day, YYYY-MM-DD. format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$" |
location_id |
string | Yes | Internal location ID returned by list_locations or get_workspace_context. |
note |
string or null | No | Why, for the team; guests never see it. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
to |
string | Yes | Last closed day, YYYY-MM-DD, inclusive. Same as from for one day. format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$" |
additionalProperties: false; required: ["location_id","from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
affected_commitments |
array of object (fields) | Yes | |
changed_fields |
array of string (fields) | Yes | |
context |
object (fields) | Yes | required: ["organization_id","organization_name","organization_slug","organization_subdomain","organization_public_url","location_id","location_slug","location_title"] |
entity |
string | Yes | enum: ["location"] |
id |
string | Yes | |
ok |
boolean | Yes | const: true |
slug |
string | Yes | |
updated_at |
string | Yes |
required: ["ok","entity","id","slug","changed_fields","updated_at","context","affected_commitments"]
Create location — create_location
Add a location to the selected business website. Every plan includes 2 locations; on Growth and Business each additional location is $49 per month, added to the plan by its owner in Billing first, and a location beyond those the plan covers is refused. Repeat the same idempotency key with the same details on retry.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
object or null (fields) | No | required: ["regionCode","addressLines"] |
description |
string | No | |
email |
string | No | format: "email" |
idempotency_key |
string | Yes | maxLength: 200; minLength: 1; pattern: "\S" |
opening_hours |
null or object (fields) | No | Canonical weekly endpoint periods. Days use Sunday=0. Null means unknown; periods [] means closed. Sunday 00:00 without a close means always open. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
phone |
string | No | |
special_hours |
null or array of object (fields) | No | Explicit dated hours or closures. Closure starts_on is required; ends_on is inclusive and null means indefinite. Dated hours replace regular hours; periods [] closes the date. |
timezone |
string | Yes | Explicit IANA timezone identifier, such as Asia/Bangkok. Missing timezone is an error, never the browser timezone. minLength: 1 |
title |
string | Yes | maxLength: 200; minLength: 1; pattern: "\S" |
website_url |
string | No | format: "uri" |
additionalProperties: false; required: ["title","idempotency_key","timezone"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object | Yes | |
location |
object (fields) | Yes | required: ["id","slug","title","status","timezone","created_at","updated_at","media"] |
required: ["location","context"]
Get calendar — get_calendar
Read the business’s reservations, bookings, consultations, guest arrivals and departures, published posts and unavailable dates when the user wants to review its calendar. Dates are inclusive local calendar days, with at most 62 days per call. Use kinds to filter the agenda.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string | No | |
from |
string | Yes | First day, YYYY-MM-DD. format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$" |
kinds |
array of string (fields) | No | Limit to these kinds. Defaults to every kind the location offers. A stay appears on its arrival and its departure day. |
location_id |
string or null | No | Limit to this location, or null for the whole business including online bookings. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
to |
string | Yes | Last day, YYYY-MM-DD, inclusive. format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$" |
additionalProperties: false; required: ["from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
available_kinds |
array of string (fields) | Yes | |
context |
object | No | |
items |
array of object (fields) | Yes | |
unavailable_dates |
array of object (fields) | Yes |
required: ["items","available_kinds","unavailable_dates"]
Get location — get_location
Read one selected site location, including its contact details, opening hours, timezone and media. Use its returned ID for location-specific changes.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
location_id |
string | Yes | Internal location ID returned by list_locations or get_workspace_context. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["location_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
current_local_date |
string | Yes | Current date in the location timezone. format: "date" |
location |
object (fields) | Yes | required: ["id","slug","title","status","timezone","created_at","updated_at","media"] |
required: ["location","current_local_date"]
List locations — list_locations
List the selected site’s locations with their IDs, slugs, titles and active state. Location-scoped tools take these IDs.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locations |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
required: ["locations","page_info"]
Open dates — open_dates
Remove temporary closures for an inclusive date range when the user wants to reopen a location. Closure dates outside the range and their notes are preserved. Regularly closed weekdays stay closed; change opening_hours with update_location to open those weekdays. Returns the saved hours without creating or changing existing bookings.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
from |
string | Yes | First reopened day, YYYY-MM-DD. format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$" |
location_id |
string | Yes | Internal location ID returned by list_locations or get_workspace_context. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
to |
string | Yes | Last reopened day, YYYY-MM-DD, inclusive. Same as from for one day. format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$" |
additionalProperties: false; required: ["location_id","from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
affected_commitments |
array of object (fields) | Yes | |
changed_fields |
array of string (fields) | Yes | |
context |
object (fields) | Yes | required: ["organization_id","organization_name","organization_slug","organization_subdomain","organization_public_url","location_id","location_slug","location_title"] |
entity |
string | Yes | enum: ["location"] |
id |
string | Yes | |
ok |
boolean | Yes | const: true |
slug |
string | Yes | |
updated_at |
string | Yes |
required: ["ok","entity","id","slug","changed_fields","updated_at","context","affected_commitments"]
Update location — update_location
Update a location's own details: its name, URL slug and descriptions, regular opening hours, temporary closures/special hours, and contact info. Renaming changes the location's slug, and so its public URL, unless slug is given in the same call. To change its hero media, call set_media with { owner_type: "business_location", owner_id: <location.id>, slot: "hero" }. Only provided fields are changed. Returns the updated location; website details can change immediately. This does not change reservation capacity or a product’s session schedule.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
object or null (fields) | No | required: ["regionCode","addressLines"] |
canonical_url |
string or null | No | Optional canonical URL override. Leave unset for the default self-referencing canonical. |
description |
string or null | No | Long description shown on the location page. Pass null to clear it. |
email |
string or null | No | Public email shown to guests on the website and in booking/reservation confirmation emails. Pass null to clear it. |
location_id |
string | Yes | Internal location ID returned by list_locations or get_workspace_context. |
max_capacity |
number or null | No | Stored location capacity metadata; does not limit reservation availability. Reservation seats per start time are controlled by update_reservation_policy.slot_capacity. Pass null to clear the metadata. |
opening_hours |
null or object (fields) | No | Canonical weekly endpoint periods. Days use Sunday=0. Null means unknown; periods [] means closed. Sunday 00:00 without a close means always open. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
phone |
string | No | Public phone number shown to guests on the website and in booking/reservation confirmation emails. |
seo_description |
string or null | No | Optional SEO meta description override. Falls back to the computed default if unset. |
seo_title |
string or null | No | Optional SEO title override. Falls back to the computed default if unset. |
short_description |
string or null | No | One-line summary shown on location cards. Pass null to clear it. |
slug |
string | No | URL slug for the location page. Normalized, and suffixed -2, -3… when another location already uses it. Changes the public URL. maxLength: 200; minLength: 1; pattern: "\S" |
special_hours |
null or array of object (fields) | No | Explicit dated hours or closures. Closure starts_on is required; ends_on is inclusive and null means indefinite. Dated hours replace regular hours; periods [] closes the date. |
status |
string | No | inactive takes the location and everything held there off the website and frees its plan slot; active puts it back, and is refused when every slot the plan covers is in use. enum: ["active","inactive"] |
timezone |
string | No | IANA time zone identifier for this location, e.g. Asia/Bangkok. Used to interpret opening hours and booking slots. |
title |
string | No | Location name shown to guests. Changing it regenerates the slug from the new name unless slug is given in the same call. maxLength: 200; minLength: 1; pattern: "\S" |
additionalProperties: false; required: ["location_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
changed_fields |
array of string (fields) | Yes | |
context |
object (fields) | Yes | required: ["organization_id","organization_name","organization_slug","organization_subdomain","organization_public_url","location_id","location_slug","location_title"] |
entity |
string | Yes | enum: ["location"] |
id |
string | Yes | |
ok |
boolean | Yes | const: true |
slug |
string | Yes | |
updated_at |
string | Yes |
required: ["ok","entity","id","slug","changed_fields","updated_at","context"]
Marketing
Launch omnichannel campaign — launch_omnichannel_campaign
Launch and coordinate an omnichannel marketing campaign across Google Ads (search campaign create or clone), social channels (Instagram, Facebook, Discord), and on-site visitor announcements.
Minimum role: admin. Required entitlement: marketing.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaign_title |
string | Yes | Human-readable name or theme for the marketing campaign. |
google_ads |
object (fields) | No | Optional Google Ads Search campaign creation or cloning configuration. required: ["mode"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
social_post |
object (fields) | No | Optional social media broadcast across Facebook, Instagram, or Discord. required: ["caption"] |
target_url |
string | Yes | Destination URL (e.g. newly published blog post, product, or landing page). |
website_announcement |
object (fields) | No | Optional on-site visitor announcement banner/popup. required: ["headline"] |
additionalProperties: false; required: ["campaign_title","target_url"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaign_title |
string | Yes | |
google_ads |
object (fields) | No | |
ok |
boolean | Yes | |
social |
object (fields) | No | |
target_url |
string | Yes | |
website_announcement |
object (fields) | No |
required: ["ok","campaign_title","target_url"]
Media
Attach media — attach_media
Attach one existing media asset to an ordered collection placement (a gallery or a compliance document list), appending it after the current last item. An existing attachment stays in place; a full collection rejects a new attachment. For a single-valued placement (a cover, hero, or logo) use set_media instead.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_id |
string | Yes | The single media asset id to attach. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
placement |
object (fields) | Yes |
additionalProperties: false; required: ["placement","asset_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_ids |
array of string (fields) | Yes | |
cleared |
boolean | Yes | |
context |
object | No | |
entity |
string | Yes | |
id |
string | Yes | |
media |
array of object (fields) | Yes | |
ok |
boolean | Yes | |
placement |
object (fields) | Yes |
required: ["ok","entity","id","placement","asset_ids","media","cleared"]
Delete media asset — delete_media_asset
Delete the selected site media asset and remove its website placements. Deletes stored media when no other asset references it. Refused while a social publication pins the asset; published provider posts are not deleted.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["asset_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes |
required: ["deleted"]
Get organization media assets — get_organization_media_assets
List the images, videos and Markdown files in the selected site’s media library, with the asset IDs set_media and attach_media take. A file still in the conversation is saved with save_media_attachment.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
kind |
string | No | Filter by asset type. enum: ["image","video","file"] |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assets |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
required: ["assets","page_info"]
Remove media — remove_media
Detach one media asset from an ordered collection placement (a gallery or a compliance document list). Removing an asset that is not attached changes nothing; other attached assets keep their order.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_id |
string | Yes | The single media asset id to detach. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
placement |
object (fields) | Yes |
additionalProperties: false; required: ["placement","asset_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_ids |
array of string (fields) | Yes | |
cleared |
boolean | Yes | |
context |
object | No | |
entity |
string | Yes | |
id |
string | Yes | |
media |
array of object (fields) | Yes | |
ok |
boolean | Yes | |
placement |
object (fields) | Yes |
required: ["ok","entity","id","placement","asset_ids","media","cleared"]
Reorder media — reorder_media
Move attached gallery or compliance assets before or after an attached neighbor. Omitted anchors move the asset to the end; invalid assets or anchors reject the call.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
moves |
array of object (fields) | Yes | Ordered list of moves to apply sequentially. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
placement |
object (fields) | Yes |
additionalProperties: false; required: ["placement","moves"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_ids |
array of string (fields) | Yes | |
cleared |
boolean | Yes | |
context |
object | No | |
entity |
string | Yes | |
id |
string | Yes | |
media |
array of object (fields) | Yes | |
ok |
boolean | Yes | |
placement |
object (fields) | Yes |
required: ["ok","entity","id","placement","asset_ids","media","cleared"]
Save media attachment — save_media_attachment
Save an attached image, video with poster, or Markdown file. Uses the host’s file reference. An optional placement puts it on the requested website owner in this operation. Repeat the same idempotency key for a retry.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
category |
string | No | Optional visual subject used to organize the media library. It never assigns the asset to content. enum: ["exterior","interior","food","menu","team","other"] |
description |
string | No | Description of the media (stored as alt text). |
file |
object (fields) | Yes | Authorized file reference supplied by ChatGPT after rewriting the declared top-level file argument, including a temporary download_url and file_id. required: ["download_url","file_id"] |
idempotency_key |
string | Yes | maxLength: 200; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
placement |
object (fields) | No | |
poster_file |
object (fields) | No | Required poster/thumbnail image for video uploads. Invalid for non-video uploads. required: ["download_url","file_id"] |
additionalProperties: false; required: ["file","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_id |
string | Yes | |
kind |
string | Yes | enum: ["image","video","file"] |
placement |
object or null (fields) | No | |
public_url |
string | Yes | |
status |
string | Yes | enum: ["active"] |
thumbnail_url |
string or null | No |
required: ["asset_id","status","public_url","kind"]
File parameters: file, poster_file.
Set media — set_media
Assign an asset to one cover, hero, logo or menu section photo; null clears it. Use attach_media for galleries and presentation for logo cropping.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_id |
string or null | Yes | One asset id, or null to clear this single-valued placement. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
placement |
object (fields) | Yes | |
presentation |
object (fields) | No | Organization logo and logo_dark only. Omitted means original. additionalProperties: false; required: ["shape","focus"] |
additionalProperties: false; required: ["placement","asset_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_ids |
array of string (fields) | Yes | |
cleared |
boolean | Yes | |
context |
object | No | |
entity |
string | Yes | |
id |
string | Yes | |
media |
array of object (fields) | Yes | |
ok |
boolean | Yes | |
placement |
object (fields) | Yes |
required: ["ok","entity","id","placement","asset_ids","media","cleared"]
Update media asset — update_media_asset
Change the selected asset’s alt text or library category. At least one field is required. Category organizes the library and does not assign media to a page.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | No | Omit to retain; null clears the alt text. |
asset_id |
string | Yes | |
category |
string | No | enum: ["exterior","interior","food","menu","team","other"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["asset_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
updated |
boolean | Yes |
required: ["updated"]
Organizations
Cancel organization invitation — cancel_organization_invitation
Cancel a pending invitation to this business.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
invitation_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["invitation_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
invitation |
object (fields) | Yes | required: ["id","organizationId","email","role","status","inviterId","createdAt","expiresAt","delivery"] |
additionalProperties: false; required: ["invitation"]
Create team — create_team
Create a named team within this business using Better Auth. Existing teammates can then be added to it.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
name |
string | Yes | minLength: 1; pattern: "\S" |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["name"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
team |
object (fields) | Yes | required: ["id","name","organizationId","createdAt","members"] |
required: ["team"]
Delete team — delete_team
Delete a team from this business. Existing bookings keep their saved provider. Offerings assigned to this team require a new schedule assignment.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
team_id |
string | Yes |
additionalProperties: false; required: ["team_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes | const: true |
team_id |
string | Yes |
required: ["deleted","team_id"]
Get organization — get_organization
Read the selected KrabiClaw site’s identity, public address and settings. organization_id is the internal ID returned by get_workspace_context or list_organizations, not a URL, domain or business name.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization |
object (fields) | Yes | required: ["id","subdomain","status"] |
required: ["organization"]
Get organization settings — get_organization_settings
Read editable settings for the selected KrabiClaw site. Use its internal organization_id from get_workspace_context or list_organizations, not its public URL, domain or name.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
settings |
object (fields) | Yes | required: ["id","subdomain","default_currency","timezone"] |
required: ["settings"]
Get website draft — get_website_draft
Read your saved website setup. Omit draft_id to resume your unfinished website.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
draft_id |
string | No | minLength: 1 |
additionalProperties: false
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
currency |
string | No | |
draft_id |
string | Yes | |
hero_headline |
string | No | |
hero_subtitle |
string | No | |
idempotency_key |
string | No | |
location |
object (fields) | Yes | additionalProperties: false |
missing_fields |
array of string (fields) | Yes | |
name |
string | Yes | |
organization_id |
string | No | |
products |
array of object (fields) | Yes | |
revision |
string | Yes | format: "date-time" |
source_locale |
string | Yes | |
status |
string | Yes | enum: ["active","committed"] |
subdomain |
string | Yes | |
timezone |
string | No | |
vertical |
string | Yes | enum: ["restaurant","experience","service","lodging"] |
additionalProperties: false; required: ["draft_id","revision","status","subdomain","name","vertical","source_locale","location","products","missing_fields"]
Invite organization member — invite_organization_member
Invite a teammate by email using Better Auth. The invitation remains pending until they accept. Set resend only when the user wants an existing invitation sent again.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
email |
string | Yes | format: "email" |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
resend |
boolean | No | |
role |
string | Yes | enum: ["member","owner","admin"] |
additionalProperties: false; required: ["email","role"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
invitation |
object (fields) | Yes | required: ["id","organizationId","email","role","status","inviterId","createdAt","expiresAt","delivery"] |
additionalProperties: false; required: ["invitation"]
List organization members — list_organization_members
Read the business’s teammates and invitations. Member IDs identify organization memberships; user IDs identify people.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
limit |
integer | No | maximum: 100; minimum: 1 |
offset |
integer | No | minimum: 0 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
invitations |
array of object (fields) | Yes | |
members |
array of object (fields) | Yes | |
total |
integer | Yes | minimum: 0 |
additionalProperties: false; required: ["members","total","invitations"]
List organizations — list_organizations
List sites available to the signed-in user and the current account identity. Match the requested site against these results and use its internal ID; a public URL, domain or business name is not an organization_id.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
additionalProperties: false
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
currentUser |
object (fields) | Yes | required: ["id","isPlatformAdmin"] |
organizations |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
required: ["organizations","currentUser","page_info"]
List teams — list_teams
Read the business’s Better Auth teams and their members. Choose a team for an offering when any available member can host its bookings.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
teams |
array of object (fields) | Yes |
required: ["teams"]
Publish website — publish_website
Publish a saved website draft, select it as your workspace and notify KrabiClaw operators by email. Finish any returned missing fields before retrying.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
draft_id |
string | Yes | minLength: 1 |
revision |
string | Yes | format: "date-time" |
additionalProperties: false; required: ["draft_id","revision"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object (fields) | Yes | required: ["organization_id","organization_name","organization_slug","organization_subdomain","organization_public_url","location_id","location_slug","location_title"] |
draft_id |
string | Yes | |
location_id |
string | Yes | |
organization_id |
string | Yes | |
public_url |
string | Yes | format: "uri" |
ready |
boolean | Yes | const: true |
additionalProperties: false; required: ["organization_id","location_id","draft_id","public_url","ready","context"]
Remove organization member — remove_organization_member
Remove a teammate’s membership in this business. Better Auth enforces removal permissions and protects the last owner.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
member_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["member_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
member |
object (fields) | Yes | required: ["id","organizationId","userId","role","createdAt"] |
additionalProperties: false; required: ["member"]
Save website draft — save_website_draft
Save website answers without publishing. Use the returned draft_id and revision for changes; reuse the creation key on retry.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
currency |
string | No | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"] |
draft_id |
string | No | Existing draft to edit; omit when creating. minLength: 1 |
hero_headline |
string | No | maxLength: 500 |
hero_subtitle |
string | No | maxLength: 2000 |
idempotency_key |
string | Yes | maxLength: 200; minLength: 1; pattern: "\S" |
location |
object (fields) | No | additionalProperties: false |
name |
string | No | Required when creating; omitted on an edit to retain it. maxLength: 200; minLength: 1; pattern: "\S" |
products |
array of object (fields) | No | |
revision |
string | No | Required when editing: the revision returned by get_website_draft. format: "date-time" |
source_locale |
string | No | Required when creating; a saved draft cannot be relabelled into another language. enum: ["en","ja","th","vi"] |
subdomain |
string | No | maxLength: 63; minLength: 1; pattern: "^a-z0-9?$" |
timezone |
string | No | Explicit IANA timezone identifier, such as Asia/Bangkok. Missing timezone is an error, never the browser timezone. minLength: 1 |
vertical |
string | No | Required when creating; omitted on an edit to retain it. enum: ["restaurant","experience","service","lodging"] |
additionalProperties: false; required: ["idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
currency |
string | No | |
draft_id |
string | Yes | |
hero_headline |
string | No | |
hero_subtitle |
string | No | |
idempotency_key |
string | No | |
location |
object (fields) | Yes | additionalProperties: false |
missing_fields |
array of string (fields) | Yes | |
name |
string | Yes | |
organization_id |
string | No | |
products |
array of object (fields) | Yes | |
revision |
string | Yes | format: "date-time" |
source_locale |
string | Yes | |
status |
string | Yes | enum: ["active","committed"] |
subdomain |
string | Yes | |
timezone |
string | No | |
vertical |
string | Yes | enum: ["restaurant","experience","service","lodging"] |
additionalProperties: false; required: ["draft_id","revision","status","subdomain","name","vertical","source_locale","location","products","missing_fields"]
Set consultation mode — set_consultation_mode
Choose native bookings, an external scheduler, or Contact on the Schedule page. Supply external_url to connect a scheduler.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
external_url |
string or null | No | |
mode |
string | Yes | enum: ["native","external_url","native_disabled"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["mode"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
settings |
object (fields) | Yes | required: ["mode","external_url"] |
required: ["settings"]
Set team member — set_team_member
Add an existing business teammate to a team, or remove them from it. Existing bookings keep their saved provider.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
included |
boolean | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
team_id |
string | Yes | |
user_id |
string | Yes |
additionalProperties: false; required: ["team_id","user_id","included"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
team |
object (fields) | Yes | required: ["id","name","organizationId","createdAt","members"] |
required: ["team"]
Update organization member role — update_organization_member_role
Change a teammate’s business role. Better Auth enforces owner privileges and protects the last owner.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
member_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
role |
string | Yes | enum: ["member","owner","admin"] |
additionalProperties: false; required: ["member_id","role"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
member |
object (fields) | Yes | required: ["id","organizationId","userId","role","createdAt"] |
additionalProperties: false; required: ["member"]
Update organization settings — update_organization_settings
Change the selected site’s brand, description, website font, colors, contact email, default currency, visitor announcement banner/popup or Live/Draft status. Only supplied settings change. An announcement replaces all its fields, and null removes it. Logos and announcement images are separate media placements; this tool does not change them. Returns the updated settings. Published website settings change immediately; this does not create a short post, blog article or social publication.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address_visibility |
string | No | Show or hide office addresses on service websites. enum: ["visible","hidden"] |
announcement |
object or null (fields) | No | The universal announcement banner or modal shown to visitors on the public website, available to every theme. An image, when set, is a separate organization media placement (slot "announcement"), not a field here. |
brand_description |
string | No | |
canonical_url |
string or null | No | Optional site-wide canonical URL override for the homepage. |
careers_email |
string | No | |
catering_email |
string | No | |
contact_email |
string or null | No | Public contact email shown to guests. Pass null to clear it. |
default_currency |
string | No | ISO 4217 code. Existing prices keep their stored currency and amount; nothing is converted. enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"] |
font_preset |
string | No | Website heading and body fonts, on every template: default (Default), mali (Mali), sarabun (Sarabun), prompt (Prompt), kanit (Kanit with Sarabun), ibm-plex-sans-thai (IBM Plex Sans Thai), noto-serif-thai (Noto Serif Thai with Noto Sans Thai), inter (Inter), dm-sans (DM Sans), montserrat (Montserrat), lora (Lora), playfair-display (Playfair Display with Inter), cormorant-garamond (Cormorant Garamond with Inter). Thai, Vietnamese and Japanese text renders in every choice. enum: ["default","mali","sarabun","prompt","kanit","ibm-plex-sans-thai","noto-serif-thai","inter","dm-sans","montserrat","lora","playfair-display","cormorant-garamond"] |
name |
string | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
palette |
object or null (fields) | No | Saya and Blawby website colors, each with a light and a dark value. Roles: ground (The page background.) surface (Cards, the header and footer, dialogs and fields.) text (Body copy and headings.) muted (Captions, details and supporting copy.) action (Buttons, links and selected states.) accent (Emphasis, decoration and highlighted buttons.) Start from a starter (coastal, forest, terracotta, ink, blossom, saffron, slate, midnight) and/or name only the roles to change; colors are #RRGGBB or a plain description such as "forest green". Borders and tints are derived. null returns to the template's colors. The result reports any text or button pair below WCAG AA contrast. additionalProperties: false |
partnerships_email |
string | No | |
press_email |
string | No | |
seo_description |
string or null | No | Optional site-wide default SEO description override. Falls back to brand_description if unset. |
seo_title |
string or null | No | Optional site-wide default SEO title override for the homepage and any page without its own override. Falls back to name if unset. |
status |
string | No | Website status: active is Live (public and indexable), inactive is Draft (preview only). A suspended website cannot be changed. enum: ["active","inactive"] |
timezone |
string | No | The business's reporting timezone: the day boundaries of its analytics. Bookings keep their location's or provider's timezone. minLength: 1 |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address_visibility |
string | No | enum: ["visible","hidden"] |
changed_fields |
array of string (fields) | No | |
context |
object | No | |
contrast_warnings |
array of object (fields) | No | |
entity |
string | Yes | enum: ["organization_settings"] |
id |
string | Yes | |
ok |
boolean | Yes | |
updated_at |
string | No |
required: ["ok","entity","id"]
Update team — update_team
Rename a team in this business.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
name |
string | Yes | minLength: 1; pattern: "\S" |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
team_id |
string | Yes |
additionalProperties: false; required: ["team_id","name"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
team |
object (fields) | Yes | required: ["id","name","organizationId","createdAt","members"] |
required: ["team"]
Payments
Get payment — get_payment
Read one customer payment belonging to the selected business, including its original purchase details, current refund records, disputes and authenticated dashboard URL. Requires payment_id from list_payments. Does not issue a refund, prepare an approval or change payment state; use the authenticated dashboard for financial actions.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
payment_id |
string | Yes |
additionalProperties: false; required: ["payment_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
dashboard_url |
string | Yes | |
disputes |
array of object (fields) | Yes | |
organization_id |
string | Yes | |
payment |
object (fields) | Yes | additionalProperties: false; required: ["id","currency","amount","captured_amount","refunded_amount","state","title","to"] |
purchase |
object (fields) | Yes | required: ["title","quantity"] |
refunds |
array of object (fields) | Yes |
additionalProperties: false; required: ["organization_id","payment","purchase","refunds","disputes","dashboard_url"]
Get payment payouts — get_payment_payouts
Read the selected business’s connected Stripe balance and payout history, with source and retrieval time. Continue with next_cursor as after for another page. Use get_payment_summary for customer payment totals. This is a read of the business’s own connected account; it does not create a payout or transfer funds.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
after |
string | No | next_cursor from the previous payout page. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
balance |
object or null (fields) | No | required: ["available","pending"] |
configured |
boolean | Yes | |
dashboard_url |
string | Yes | |
next_cursor |
string or null | Yes | |
organization_id |
string | Yes | |
payouts |
array of object (fields) | Yes | |
refreshed_at |
string or null | No | |
source |
string | Yes |
additionalProperties: false; required: ["organization_id","configured","source","next_cursor","payouts","dashboard_url"]
Get payment summary — get_payment_summary
Read totals for the selected business’s customer payments in a UTC period: captured volume, refunds and disputes, separately by currency. Use list_payments for individual transactions. Trust receipts are distinct from earned revenue. Does not change payments or move money.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
from |
string | Yes | Inclusive UTC ISO instant. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
to |
string | Yes | Exclusive UTC ISO instant. |
additionalProperties: false; required: ["from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amounts |
array of object (fields) | Yes | |
dashboard_url |
string | Yes | |
from |
string | Yes | |
organization_id |
string | Yes | |
refreshed_at |
string or null | Yes | |
source |
string | Yes | |
timezone |
string | Yes | const: "UTC" |
to |
string | Yes | |
usage |
array of object (fields) | Yes | |
usage_status |
string | No |
additionalProperties: false; required: ["organization_id","timezone","from","to","amounts","usage","source","refreshed_at","dashboard_url"]
Get payments dashboard link — get_payments_dashboard_link
Get the selected business’s authenticated Payments setup and dashboard URL when the owner wants to manage its Stripe integration. Returns a link for the person to open; it does not open a page, create an account, start onboarding, prepare a refund or change the integration. Identity and bank details are entered only in the dashboard’s Stripe-hosted flow.
Minimum role: owner. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
dashboard_url |
string | Yes | |
organization_id |
string | Yes | |
source |
string | Yes |
required: ["organization_id","dashboard_url","source"]
Get payments usage — get_payments_usage
Read the selected business’s KrabiClaw Payments usage, Metronome invoices, accrued usage and undelivered provider-cost events. These are operating costs, separate from customer payments and platform subscription billing. Requires payment and billing read access. Does not change billing or move money.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
account |
object or null (fields) | No | |
configured |
boolean | Yes | |
credits |
array of object (fields) | Yes | |
dashboard_url |
string | Yes | |
invoices |
array of object (fields) | Yes | |
organization_id |
string | Yes | |
pending |
array of object (fields) | Yes | |
pricing |
object or null (fields) | Yes | required: ["currency","units","captured_volume_rate","captured_volume_rate_percent","ad_spend_rate","ad_spend_rate_percent","validated_at"] |
refreshed_at |
string or null | No | |
source |
string | Yes |
additionalProperties: false; required: ["organization_id","configured","source","pricing","pending","credits","invoices","dashboard_url"]
List payments — list_payments
List the selected business’s customer payment records in a UTC period, with purchase links and amounts in each currency’s minor units. Use the returned cursor as after for another page and get_payment for one transaction’s details. These are customer payments, separate from the business’s platform subscription bill. Does not change payments.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
after |
string | No | The cursor returned by the previous payment page. |
earnings_type |
string | No | Only payments still paid, or only payments with a refund. enum: ["paid","refunded"] |
from |
string | Yes | Inclusive UTC ISO instant. |
location_id |
string | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
to |
string | Yes | Exclusive UTC ISO instant. |
additionalProperties: false; required: ["from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
dashboard_url |
string | Yes | |
from |
string | No | |
next_cursor |
string or null | Yes | |
organization_id |
string | Yes | |
payments |
array of object (fields) | Yes | |
timezone |
string | No | const: "UTC" |
to |
string | No |
additionalProperties: false; required: ["organization_id","payments","next_cursor","dashboard_url"]
Posts
Create post — create_post
Create a draft short post when the user wants an announcement, event notice or offer. Supports a plain-text caption, ordered media, optional title, location and call to action. It stays private until publish_post. Use a new idempotency_key for each post and reuse it only for retries of that request. Long-form articles use create_blog_post.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string or null (fields) | No | The caption, plain text; newlines are kept. |
call_to_action |
object or null (fields) | No | |
idempotency_key |
string | Yes | A value you make up once for this post, such as a UUID, and reuse only to retry this same request. maxLength: 200; minLength: 1 |
location_id |
string or null (fields) | No | Scope the post to one of this organization's locations; omit for organization-wide. |
media |
array of object (fields) | No | Ordered media: at most one cover, then gallery items in order. Each asset appears once. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
slug |
string or null (fields) | No | Optional route segment for /posts/ |
title |
string or null (fields) | No | Optional headline. Never invented when absent. |
visibility |
enum | No | listed shows the post in feeds; unlisted keeps it reachable by its URL only. Neither makes a draft public. enum: ["listed","unlisted"] |
additionalProperties: false; required: ["idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object | No | |
ok |
boolean | Yes | |
post |
object (fields) | Yes | required: ["id","slug","status","visibility","media","publications","updated_at"] |
replayed |
boolean | No | True when this idempotency_key had already created the post. |
required: ["ok","post"]
Delete channel post — delete_channel_post
Permanently delete exactly the provider_post_id on the explicitly selected connected Facebook Page, or the KrabiClaw bot's message in the connected Discord channel. Keeps the website post and marks its publication receipt removed. Read get_social_connections and list_channel_posts first. Instagram deletion is unavailable with this app's Instagram Login connection; delete Instagram posts in Instagram. Use delete_post to remove website content separately.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | enum: ["facebook","instagram","discord"] |
connection_revision |
string | Yes | The connection_revision returned with that target. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
provider_post_id |
string | Yes | |
target_id |
string | Yes | The exact target_id returned by get_social_connections. |
additionalProperties: false; required: ["channel","target_id","connection_revision","provider_post_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | enum: ["facebook","discord"] |
deleted |
boolean | Yes | |
provider_post_id |
string | Yes | |
publication |
object or null (fields) | Yes | required: ["id","state"] |
target_id |
string | Yes |
required: ["channel","target_id","provider_post_id","deleted","publication"]
Delete post — delete_post
Delete a post from the website. Its Facebook, Instagram and Discord posts are not deleted; use delete_channel_post for an explicit supported channel deletion. Refused while a publication of it is in progress or unresolved.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_id |
string | Yes |
additionalProperties: false; required: ["post_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes | |
post_id |
string | Yes |
required: ["post_id","deleted"]
Get channel post — get_channel_post
Read one post from the selected connected Facebook Page, Instagram professional account or Discord channel when the user wants its current caption, media or link. Use provider_post_id from list_channel_posts with the exact target from get_social_connections. Website content is unchanged.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | enum: ["facebook","instagram","discord"] |
connection_revision |
string | Yes | The connection_revision returned with that target. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
provider_post_id |
string | Yes | |
target_id |
string | Yes | The exact target_id returned by get_social_connections. |
additionalProperties: false; required: ["channel","target_id","connection_revision","provider_post_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
post |
object (fields) | Yes | additionalProperties: false; required: ["channel","target_id","provider_post_id","body","public_url","published_at","media"] |
required: ["post"]
Get post — get_post
Read a short website post before editing or publishing it. Returns its caption, call to action, ordered media, website status, draft preview link and stored Facebook, Instagram or Discord publication receipts. Use get_channel_post for current provider content.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_id |
string | Yes |
additionalProperties: false; required: ["post_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
post |
object (fields) | Yes | required: ["id","slug","status","visibility","media","publications","updated_at"] |
required: ["post"]
Get social connections — get_social_connections
Read the site’s website, Facebook Page, Instagram and Discord channel publishing connections before selecting a publication target. Returns target_id, connection_revision, supported formats and operations, setup links, and problems, including whether Meta currently accepts each connection and whether the KrabiClaw bot can still post to the connected Discord channel. Credentials are not returned.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channels |
array of object (fields) | Yes | |
website |
object (fields) | Yes | required: ["channel","target_id","label"] |
required: ["website","channels"]
List channel posts — list_channel_posts
Read live posts directly from the explicitly selected connected Facebook Page, Instagram professional account or Discord channel; for Discord, the KrabiClaw bot's messages there. Does not import website posts or media. Read get_social_connections first and supply the exact channel, target_id and connection_revision. next_after is the provider's cursor; pass it as after for the next page.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
after |
string | No | |
channel |
string | Yes | enum: ["facebook","instagram","discord"] |
connection_revision |
string | Yes | The connection_revision returned with that target. |
limit |
integer | No | default: 25; maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
target_id |
string | Yes | The exact target_id returned by get_social_connections. |
additionalProperties: false; required: ["channel","target_id","connection_revision"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
next_after |
string or null | Yes | |
posts |
array of object (fields) | Yes |
required: ["posts","next_after"]
List posts — list_posts
List draft or published short website posts when the user wants to find announcements to review or edit. Results are paginated, newest change first. Filter by location_id for one location. Use list_channel_posts for live Facebook or Instagram posts.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
location_id |
string | No | Only posts scoped to this location. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
status |
string | No | enum: ["draft","published"] |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
posts |
array of object (fields) | Yes |
required: ["posts","page_info"]
Publish post — publish_post
Publish the post to the selected website or social destinations, returning one result per target. Retry processing with the same post; reconcile an unknown result before publishing again.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
expected_updated_at |
string | Yes | The post's updated_at as you last read it. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_id |
string | Yes | |
targets |
array of object (fields) | Yes | One entry per destination, each channel at most once. maxItems: 4; minItems: 1 |
additionalProperties: false; required: ["post_id","expected_updated_at","targets"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
ok |
boolean | Yes | True only when every requested target is published or already published. |
outcomes |
array of object (fields) | Yes | |
post_id |
string | Yes | |
updated_at |
string | Yes |
additionalProperties: false; required: ["ok","post_id","updated_at","outcomes"]
Reconcile post publication — reconcile_post_publication
Read an existing social publication and refresh its receipt without publishing. Supply provider_post_id only for the exact post on the connected destination; unproven outcomes remain unknown.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
provider_post_id |
string | No | Optional: the Facebook post id, Instagram media id or Discord message id it became. |
publication_id |
string | Yes | The publication id from get_post or a publish_post outcome. |
additionalProperties: false; required: ["publication_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
publication |
object | Yes | |
state |
string | Yes |
required: ["state","publication"]
Update post — update_post
Change only supplied website post fields using its current revision. Published social posts are unchanged; unresolved publication prevents content edits.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string or null (fields) | No | The caption, plain text; newlines are kept. |
call_to_action |
object or null (fields) | No | |
expected_updated_at |
string | Yes | |
location_id |
string or null (fields) | No | Scope the post to one of this organization's locations; omit for organization-wide. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
post_id |
string | Yes | |
slug |
string or null (fields) | No | Optional route segment for /posts/ |
title |
string or null (fields) | No | Optional headline. Never invented when absent. |
visibility |
enum | No | listed shows the post in feeds; unlisted keeps it reachable by its URL only. Neither makes a draft public. enum: ["listed","unlisted"] |
additionalProperties: false; required: ["post_id","expected_updated_at"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
context |
object | No | |
ok |
boolean | Yes | |
post |
object (fields) | Yes | required: ["id","slug","status","visibility","media","publications","updated_at"] |
replayed |
boolean | No | True when this idempotency_key had already created the post. |
required: ["ok","post"]
Products
Batch create products — batch_create_products
Create several products in the selected site’s catalog when the user supplies a new catalog batch. Validates every entry before writing; any invalid entry rejects the complete request. Publication and location offerings are assigned separately.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: false, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
idempotency_key |
string | Yes | maxLength: 200; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
products |
array of object (fields) | Yes | maxItems: 400; minItems: 1 |
additionalProperties: false; required: ["products","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
products |
array of object (fields) | Yes |
required: ["products"]
Create collection — create_collection
Create an empty product collection, such as a menu section, site-wide or at the named location. Returns the saved collection and its ID. Add products separately with set_collection_products; existing products and collections stay unchanged.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
location_id |
string or null | No | Narrow this collection to one location, or omit for site-wide. |
name |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
sort_order |
integer | No |
additionalProperties: false; required: ["name"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection |
object (fields) | Yes | required: ["id","organization_id","location_id","name","slug","description","image","sort_order"] |
required: ["collection"]
Create product — create_product
Add a catalog item, experience, service or place to stay. Experiences need booking duration, capacity, location and actual times, or an external booking URL. Supplying booking creates its configuration, offering, schedule and public page together, using instant confirmation and no online collection by default. A place to stay needs stay (its location and stay settings), takes its guest-facing rules in details.house_rules, and is priced per night by its variant price; guests book it on the site and pay in full, so it takes no order_url and publishes only once it has a nightly price and online payments are set up. Repeat the same idempotency key on retry.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | Enable or disable sale of this product. Independent of site and location publication. |
booking |
object (fields) | No | Complete booking setup for a published offering. At a location, provide weekly_slots or dated sessions; an update can retain its saved weekly times. location_id null holds it online: it needs scheduling_mode provider with an assigned member or team, takes no weekly_slots or sessions, and is booked in that provider's working hours. Runtime validation requires actual future availability before publication. additionalProperties: false; required: ["location_id","duration_minutes","default_capacity"] |
description |
string | No | |
details |
object (fields) | No | Named customer-facing facts for the product kind. This is a complete replacement map; preserve fields to retain. pricing_note contains explicitly stated price wording and requires empty numeric prices. additionalProperties: false |
idempotency_key |
string | Yes | Repeat the same key with the same request to get the product it created instead of a second one. maxLength: 200; minLength: 1 |
kind |
string | Yes | The customer-facing kind: dish, experience, service, item or stay (a place to stay). Determines the allowed descriptive fields; booking and stock remain separate capabilities. enum: ["dish","experience","service","item","stay"] |
marketing_features |
array of string (fields) | No | Generic selling bullets. Inclusions, preparation instructions and policies are separate details. maxItems: 15 |
metadata |
object | No | Opaque string annotations for integrations. No pricing, scheduling, stock or filtering behavior may read these. additionalProperties: {"type":"string"} |
name |
string | Yes | |
options |
array of object (fields) | No | maxItems: 3 |
order_url |
string or null | No | External ordering or booking destination, such as Uber Eats, an experience checkout, or Clio Grow. When set, public actions use this URL instead of native booking. Null restores the configured native flow. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
page |
object (fields) | No | A source page created with this product and bound to it, in the same write. Omit for a product without a page of its own. additionalProperties: false; required: ["title","blocks"] |
stay |
object (fields) | No | Required for kind stay and refused for every other kind: the location the home is at (fixed once created) and its stay settings. Guest-facing house rules go in details.house_rules. Base nightly rate is the variant price. additionalProperties: false; required: ["location_id","check_in_time","check_out_time","max_guests"] |
tax_code |
string or null | No | |
unit_label |
string or null | No | A unit noun such as "person" or "night". Never pricing prose. |
variants |
array of object (fields) | No | Omit to create a single default variant. Required once the product has options. maxItems: 250; minItems: 1 |
additionalProperties: false; required: ["name","kind","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
product |
object (fields) | Yes | required: ["id","kind","name","slug","description","active","options","variants","details","publications","locations","collections","source","created_at","updated_at"] |
required: ["product"]
Delete collection — delete_collection
Permanently delete the selected product collection and its memberships when the user asks to remove that group. Returns deleted status; its products remain in the catalog and other collections.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["collection_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes |
required: ["deleted"]
Delete product — delete_product
Delete a product and its public page. Booking history prevents deletion; pause bookings or withhold publication to retain it.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes |
additionalProperties: false; required: ["product_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes |
required: ["deleted"]
Delete product booking config — delete_product_booking_config
Delete the selected product’s booking configuration to disable its session booking. Returns deleted status. Refused if any booking history exists, including cancelled bookings; the catalog product itself remains.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes |
additionalProperties: false; required: ["product_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes |
required: ["deleted"]
Get product — get_product
Read one site product before reviewing or editing its options, variants, prices, media, publication, locations, collections, named product facts or booking defaults. Prices belong to variants; booking defaults apply to new sessions.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes |
additionalProperties: false; required: ["product_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
product |
object (fields) | Yes | required: ["id","kind","name","slug","description","active","options","variants","details","publications","locations","collections","source","created_at","updated_at"] |
required: ["product"]
List collections — list_collections
List the selected site’s product collections when the user wants to find menu sections or other product groups. Returns their public display order. Supply location_id to narrow the list to one location.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
location_id |
string or null | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collections |
array of object (fields) | Yes |
required: ["collections"]
List location products — list_location_products
List product identities offered at one selected location. Results are paginated; published_only narrows to published offerings. Use list_products for the whole site.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
featured |
boolean | No | |
kind |
string | No | enum: ["dish","experience","service","item","stay"] |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
location_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
published_only |
boolean | No |
additionalProperties: false; required: ["location_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
counts |
object (fields) | Yes | additionalProperties: false; required: ["total","by_kind"] |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
products |
array of object (fields) | Yes | |
scope |
object (fields) | Yes | additionalProperties: false; required: ["view","organization_id","kind","published_only"] |
additionalProperties: false; required: ["scope","counts","products","page_info"]
List products — list_products
List products carried by the selected site, published or withheld. Results include products across the site; list_location_products narrows to one location.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
featured |
boolean | No | |
kind |
string | No | enum: ["dish","experience","service","item","stay"] |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
published_only |
boolean | No |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
counts |
object (fields) | Yes | additionalProperties: false; required: ["total","by_kind"] |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
products |
array of object (fields) | Yes | |
scope |
object (fields) | Yes | additionalProperties: false; required: ["view","organization_id","kind","published_only"] |
additionalProperties: false; required: ["scope","counts","products","page_info"]
Reconcile products — reconcile_products
Synchronize complete catalog entries in one atomic write. Existing product IDs preserve identity; supplied variants, prices and options replace their lists. Omitted products stay unchanged unless deactivate_missing disables them. Repeat the same idempotency key for an identical retry. Use update_menu for a restaurant menu and update_product for a partial edit.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deactivate_missing |
boolean | No | |
idempotency_key |
string | Yes | maxLength: 200; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
products |
array of object (fields) | Yes | maxItems: 200 |
additionalProperties: false; required: ["products","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
products |
array of object (fields) | Yes |
required: ["products"]
Remove product location — remove_product_location
Remove the selected product’s offering at one explicit location and return the updated product. This removes that location relationship; the catalog product, prices and other location offerings remain.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
location_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes |
additionalProperties: false; required: ["product_id","location_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
product |
object (fields) | Yes | required: ["id","kind","name","slug","description","active","options","variants","details","publications","locations","collections","source","created_at","updated_at"] |
required: ["product"]
Reorder collections — reorder_collections
Set the display order of product collections for the whole site or one explicit location. Supply every collection ID in that scope exactly once; a partial list is rejected. Returns the ordered collections without changing their products.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_ids |
array of string (fields) | Yes | minItems: 1 |
location_id |
string or null | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["collection_ids"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collections |
array of object (fields) | Yes |
required: ["collections"]
Replace product weekly schedule — replace_product_weekly_schedule
Replace a product’s weekly time slots at one location when the user wants to change its recurring schedule. Times are in that location’s timezone and use the product duration/capacity. An online offering has no weekly slots: it is booked in its provider’s working hours (set_member_scheduling). An empty slots array clears that schedule. Sessions with any booking history are preserved; removed future sessions without bookings are cancelled, and re-added unbooked slots can reopen with current defaults.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
location_id |
string | Yes | A saved location ID. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | |
slots |
array of object (fields) | Yes |
additionalProperties: false; required: ["product_id","location_id","slots"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cancelled |
integer | Yes | |
rules |
array of object (fields) | Yes | |
sessions |
object (fields) | Yes | required: ["created","existing","skipped"] |
required: ["rules","sessions","cancelled"]
Set collection products — set_collection_products
Replace a product collection’s membership and display order when the user wants to change which items it contains. Supply every product ID to retain, in the intended order. Omitted products are removed from this collection but remain in the catalog.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_ids |
array of string (fields) | Yes | maxItems: 2000 |
additionalProperties: false; required: ["collection_id","product_ids"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
products |
array of object (fields) | Yes |
required: ["products"]
Set product booking config — set_product_booking_config
Configure booking duration, capacity and scheduling. New settings default to instant confirmation and no online collection. Omitted fields retain saved settings; existing sessions keep their times and capacity. Read settings with get_product.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string or null | No | One organization member for provider scheduling. Clear assigned_team_id when choosing a member. |
assigned_team_id |
string or null | No | Better Auth team whose available members can host bookings. Clear assigned_member_id when choosing a team. |
confirmation_mode |
string | No | instant confirms immediately (default); review waits for staff approval. default: "instant"; enum: ["instant","review"] |
default_capacity |
integer or null | No | Places per session; null means unlimited, zero closes seats. minimum: 0 |
duration_minutes |
integer or null | No | Minutes each visit occupies its booking slot or seats, independent of the interval between start times. Null clears an existing duration. minimum: 1 |
held_online |
boolean | No | True holds the offering online: its times are its provider's working hours, in the provider's timezone. Requires scheduling_mode provider with an assigned member or team. |
online_payment_required |
boolean | No | True requires online payment when booking; false is the default and does not collect online. default: false |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | |
scheduling_mode |
string | No | enum: ["legacy","provider"] |
additionalProperties: false; required: ["product_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
config |
object or null (fields) | Yes | required: ["duration_minutes","default_capacity","confirmation_mode","online_payment_required","held_online"] |
required: ["config"]
Set product location — set_product_location
Set whether the selected location offers a product and whether it appears on that location’s website surfaces. Existing product prices do not establish a location offering.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | |
location_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | |
published |
boolean | No |
additionalProperties: false; required: ["product_id","location_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
product |
object (fields) | Yes | required: ["id","kind","name","slug","description","active","options","variants","details","publications","locations","collections","source","created_at","updated_at"] |
required: ["product"]
Set product publication — set_product_publication
Publish or withhold a product when the user wants to change its visibility on the selected site. This setting is independent of whether the product is available for sale and of visibility at individual locations.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | |
published |
boolean | Yes |
additionalProperties: false; required: ["product_id","published"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
product |
object (fields) | Yes | required: ["id","kind","name","slug","description","active","options","variants","details","publications","locations","collections","source","created_at","updated_at"] |
required: ["product"]
Update collection — update_collection
Change the selected product collection’s name, description or display position and return the saved collection. Only supplied fields change; membership uses set_collection_products and ordering several collections uses reorder_collections.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_id |
string | Yes | |
description |
string or null | No | |
name |
string | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
sort_order |
integer | No |
additionalProperties: false; required: ["collection_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection |
object (fields) | Yes | required: ["id","organization_id","location_id","name","slug","description","image","sort_order"] |
required: ["collection"]
Update menu — update_menu
Update and publish supplied menu dishes, prices and sections at the selected location. Omitted items, variants, prices and order remain; new items and sections append in supplied order.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
idempotency_key |
string | Yes | maxLength: 200; minLength: 1 |
location_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
sections |
array of object (fields) | Yes | maxItems: 30; minItems: 1 |
additionalProperties: false; required: ["location_id","idempotency_key","sections"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
public_url |
string or null | Yes | |
replayed |
boolean | Yes | |
sections |
array of object (fields) | Yes |
required: ["sections","replayed","public_url"]
Update product — update_product
Edit a product and return its updated record. For a price change, supply the variant ID, price ID and unit_amount. Variants and prices merge by ID; omitted entries stay. Supplied options and text details replace their current values. Booking setup also creates sessions and publishes the offering.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | Enable or disable sale of this product. Independent of site and location publication. |
booking |
object (fields) | No | Complete booking setup for a published offering. At a location, provide weekly_slots or dated sessions; an update can retain its saved weekly times. location_id null holds it online: it needs scheduling_mode provider with an assigned member or team, takes no weekly_slots or sessions, and is booked in that provider's working hours. Runtime validation requires actual future availability before publication. additionalProperties: false; required: ["location_id","duration_minutes","default_capacity"] |
description |
string | No | |
details |
object (fields) | No | Named customer-facing facts for the product kind. This is a complete replacement map; preserve fields to retain. pricing_note contains explicitly stated price wording and requires empty numeric prices. additionalProperties: false |
idempotency_key |
string | No | Required with booking setup. Repeat the same key with the same request for an identical retry. maxLength: 200; minLength: 1 |
kind |
string | No | The customer-facing kind: dish, experience, service, item or stay (a place to stay). Determines the allowed descriptive fields; booking and stock remain separate capabilities. enum: ["dish","experience","service","item","stay"] |
marketing_features |
array of string (fields) | No | Generic selling bullets. Inclusions, preparation instructions and policies are separate details. maxItems: 15 |
metadata |
object | No | Opaque string annotations for integrations. No pricing, scheduling, stock or filtering behavior may read these. additionalProperties: {"type":"string"} |
name |
string | No | |
options |
array of object (fields) | No | Complete option list when supplied; omitted options are removed. Omit to preserve existing options and selections. maxItems: 3 |
order_url |
string or null | No | External ordering or booking destination, such as Uber Eats, an experience checkout, or Clio Grow. When set, public actions use this URL instead of native booking. Null restores the configured native flow. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | |
stay |
object (fields) | No | Stay settings to change on a place to stay. Its location is fixed. additionalProperties: false |
tax_code |
string or null | No | |
unit_label |
string or null | No | A unit noun such as "person" or "night". Never pricing prose. |
variants |
array of object (fields) | No | Partial existing variants by id or new variants. Omitted variants and their prices/options remain unless variants_mode is replace. Existing variant and price IDs retain their identities. maxItems: 250; minItems: 1 |
variants_mode |
string | No | merge preserves variants omitted from the supplied list. replace explicitly removes omitted variants and their owned records; removal is refused once a variant has booking history. Applies only with variants. default: "merge"; enum: ["merge","replace"] |
additionalProperties: false; required: ["product_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
product |
object (fields) | Yes | required: ["id","kind","name","slug","description","active","options","variants","details","publications","locations","collections","source","created_at","updated_at","channel_push"] |
required: ["product"]
Providers
Get member scheduling — get_member_scheduling
List accessible members and their scheduling when member_id is omitted, or read one member’s hours, time off, explicitly approved public profile and Calendar status. Ordinary members can read only their own scheduling record; owners/admins can inspect their team. No Google event content or credentials are returned.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
member_id |
string | No | Existing Better Auth organization member ID. Ordinary members may name only themselves. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
members |
array of object (fields) | No | |
scheduling |
object (fields) | No | additionalProperties: false; required: ["member_id","organization_id","timezone","updated_at","weekly","time_off","calendar_status"] |
additionalProperties: false
Set member busy calendars — set_member_busy_calendars
Select busy-input calendars on the member’s already-linked Google account, returning scheduling and check status. Stale or disconnected selected calendars block availability; no selection uses internal scheduling.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
account_id |
string or null | Yes | Existing member Google account with free/busy scopes; null with no calendars disconnects. Does not grant OAuth access. |
calendar_ids |
array of string (fields) | Yes | Busy-input calendars, separate from organization booking output. Empty pauses checking; existing bookings and Google events are unchanged. maxItems: 10 |
member_id |
string | Yes | Existing Better Auth organization member ID. Ordinary members may name only themselves. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["member_id","account_id","calendar_ids"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
scheduling |
object (fields) | Yes | additionalProperties: false; required: ["member_id","organization_id","timezone","updated_at","weekly","time_off","calendar_status"] |
additionalProperties: false; required: ["scheduling"]
Set member scheduling — set_member_scheduling
Replace a member’s own timezone, weekly working hours and UTC time-off intervals using the latest updated_at. Owner/admin may oversee any member and approve public profile. Profile edits revoke approval unless explicitly approved by an admin. Existing Booking assignments and times stay fixed. Returns the saved scheduling record; no guest messages are sent.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
expected_updated_at |
string or null | Yes | |
member_id |
string | Yes | Existing Better Auth organization member ID. Ordinary members may name only themselves. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
public_approved |
boolean | No | |
public_bio |
string or null | No | |
public_name |
string or null | No | |
public_photo_url |
string or null | No | |
time_off |
array of object (fields) | Yes | maxItems: 100 |
timezone |
string | Yes | |
weekly |
array of object (fields) | Yes | maxItems: 28 |
additionalProperties: false; required: ["member_id","timezone","weekly","time_off","expected_updated_at"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
scheduling |
object (fields) | Yes | additionalProperties: false; required: ["member_id","organization_id","timezone","updated_at","weekly","time_off","calendar_status"] |
additionalProperties: false; required: ["scheduling"]
Qa
Create qa — create_qa
Create authored Q&A in the explicit site, page or location scope. Omitted sort_order appends. This creates a new record on every call and is not idempotent: do not automatically retry an uncertain response. Imported Google content remains managed in Google.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
answer |
string or null | No | |
is_owner_answer |
boolean | No | |
location_id |
string or null | No | Location scope; omit for site or page Q&A. Cannot be combined with page_path. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
page_path |
string or null | No | Page scope such as /about; omit for general site Q&A. |
question |
string | Yes | Required non-empty question; at most 500 characters after trimming. |
question_author |
string or null | No | |
sort_order |
integer | No | |
status |
string | No | enum: ["published","hidden"] |
additionalProperties: false; required: ["question"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
created |
boolean | Yes | |
id |
string | Yes |
required: ["id","created"]
Delete qa — delete_qa
Delete authored Q&A and its content document tree in its explicit scope. Imported Google records are protected.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
location_id |
string or null | No | Location scope; omit for site or page Q&A. Cannot be combined with page_path. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
page_path |
string or null | No | Page scope such as /about; omit for general site Q&A. |
qa_id |
string | Yes |
additionalProperties: false; required: ["qa_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
deleted |
boolean | Yes | |
qa_id |
string | Yes |
required: ["qa_id","deleted"]
List location qa — list_location_qa
Read Q&A for an explicit location. This tool lists authored and imported Q&A. Authored Q&A can be managed through the CMS and authored Q&A tools; imported Google question and answer content is managed in Google.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
location_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["location_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
items |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
required: ["items","page_info"]
List organization qa — list_organization_qa
Read the site’s general Q&A, or the Q&A of one page when page_path is provided. This tool lists authored and imported Q&A. Authored Q&A can be managed through the CMS and authored Q&A tools; imported Google question and answer content is managed in Google.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
page_path |
string or null | No | Public route path such as /about, /pricing, or /blog. Omit for general site Q&A. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
items |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
required: ["items","page_info"]
Reorder qa — reorder_qa
Set sort positions of authored Q&A records in one explicit scope. Every id must be distinct, manual and in scope; otherwise no record is reordered. Imported Google records are protected.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
location_id |
string or null | No | Location scope; omit for site or page Q&A. Cannot be combined with page_path. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
page_path |
string or null | No | Page scope such as /about; omit for general site Q&A. |
updates |
array of object (fields) | Yes | minItems: 1 |
additionalProperties: false; required: ["updates"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
updated |
integer | Yes |
required: ["updated"]
Update qa — update_qa
Update authored Q&A in its explicit scope. Omitted fields retain their values. Imported Google records and translations cannot be edited through this tool.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
answer |
string or null | No | |
is_owner_answer |
boolean | No | |
location_id |
string or null | No | Location scope; omit for site or page Q&A. Cannot be combined with page_path. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
page_path |
string or null | No | Page scope such as /about; omit for general site Q&A. |
qa_id |
string | Yes | |
question |
string | No | Required non-empty question; at most 500 characters after trimming. |
question_author |
string or null | No | |
sort_order |
integer | No | |
status |
string | No | enum: ["published","hidden"] |
additionalProperties: false; required: ["qa_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
qa_id |
string | Yes | |
updated |
boolean | Yes |
required: ["qa_id","updated"]
Reviews
List location reviews — list_location_reviews
Read reviews and existing replies for the selected location. Includes review provenance and verification status. Replies to imported Google reviews are managed in Google; this tool makes no changes.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
location_id |
string | Yes | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: ["location_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
reviews |
array of object (fields) | Yes |
required: ["reviews","page_info"]
List organization reviews — list_organization_reviews
Read site-wide reviews that have no location, including existing replies, provenance and verification status. This tool makes no changes.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
reviews |
array of object (fields) | Yes |
required: ["reviews","page_info"]
Stays
Cancel stay — cancel_stay
Cancel a stay the host took and free its nights. Refunds are recorded separately with record_stay_payment as a negative amount.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
expected_version |
integer | Yes | The stay version from the latest read; a stale version is refused. minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
reason |
string | No | maxLength: 500 |
stay_id |
string | Yes | Stay ID from list_stays. minLength: 1 |
additionalProperties: false; required: ["stay_id","expected_version"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
stay |
object (fields) | Yes | required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"] |
required: ["stay"]
Create stay — create_stay
Add a stay the host took directly (phone, repeat guest) at a place to stay. It holds its nights; a night another stay already holds refuses it with STAY_OVERLAP. Takes no payment and sends no guest email.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: false, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
adults |
integer | Yes | maximum: 99; minimum: 1 |
arrival_time |
string or null | No | pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
check_in_date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
check_out_date |
string | Yes | The morning the guest leaves; the stay holds the nights before it. pattern: "^\d{4}-\d{2}-\d{2}$" |
children |
integer | No | maximum: 99; minimum: 0 |
guest_email |
string or null | No | |
guest_name |
string | Yes | maxLength: 200; minLength: 1 |
guest_phone |
string or null | No | International phone number with calling code. |
guest_surname |
string or null | No | maxLength: 200 |
idempotency_key |
string | Yes | Caller-supplied durable idempotency key. Reuse only for the identical stay. maxLength: 200; minLength: 1 |
infants |
integer | No | maximum: 99; minimum: 0 |
notes |
string or null | No | maxLength: 2000 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | The place to stay: a product of kind stay, from list_products. minLength: 1 |
total_minor |
integer | Yes | Whole minor units of the organization currency, e.g. cents. minimum: 0 |
additionalProperties: false; required: ["product_id","check_in_date","check_out_date","adults","guest_name","total_minor","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
stay |
object (fields) | Yes | required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"] |
required: ["stay"]
Delete stay payment — delete_stay_payment
Remove a payment recorded by mistake from a stay.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
payment_id |
string | Yes | minLength: 1 |
stay_id |
string | Yes | Stay ID from list_stays. minLength: 1 |
additionalProperties: false; required: ["stay_id","payment_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
stay |
object (fields) | Yes | required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"] |
required: ["stay"]
Get stay — get_stay
Read one stay with its guest details and, for a stay the host took, the payments recorded against it.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
stay_id |
string | Yes | Stay ID from list_stays. minLength: 1 |
additionalProperties: false; required: ["stay_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
stay |
object (fields) | Yes | required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"] |
required: ["stay"]
Get stay calendar — get_stay_calendar
Read every night of a date range at one place to stay: whether it is free, its price and stay rules, and the stay holding it.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
from |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | Yes | The place to stay: a product of kind stay, from list_products. minLength: 1 |
to |
string | Yes | Exclusive; at most 500 days after from. pattern: "^\d{4}-\d{2}-\d{2}$" |
additionalProperties: false; required: ["product_id","from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel_push |
object or null (fields) | No | What the home's connected channel took from this change: null when the home has no channel; needs_review with the reason when the channel did not take it. |
home |
object (fields) | Yes | required: ["product_id","name","location_id","timezone","currency","base_price_minor","base_price_tax_behavior","check_in_time","check_out_time","max_guests","min_nights","description","published","address","latitude","longitude","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy","check_in_method","check_in_instructions","wifi_network","wifi_password","directions","house_manual","checkout_instructions","assigned_member_id","assigned_team_id","channel","photos"] |
nights |
array of object (fields) | Yes | |
stays |
array of object (fields) | Yes |
required: ["home","nights","stays"]
List stays — list_stays
Read guests staying at the organization’s places to stay overlapping a date range, with dates, party, channel and status. Members see only the homes they look after.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
from |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
include_cancelled |
boolean | No | |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
product_id |
string | No | The place to stay: a product of kind stay, from list_products. minLength: 1 |
to |
string | Yes | Exclusive; at most 400 days after from. pattern: "^\d{4}-\d{2}-\d{2}$" |
additionalProperties: false; required: ["from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
stays |
array of object (fields) | Yes |
required: ["stays"]
Record stay payment — record_stay_payment
Record money the host received outside KrabiClaw for a stay they took (cash, bank transfer, a card machine). A negative amount records a refund. Moves no money.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: false, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount_minor |
integer | Yes | Whole minor units; negative for a refund, never zero. |
idempotency_key |
string | Yes | Caller-supplied durable key. A retry with it returns the stay without a second payment. maxLength: 200; minLength: 1 |
method |
string | Yes | enum: ["cash","bank_transfer","card_external","other"] |
note |
string | No | maxLength: 1000 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
paid_on |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
reference |
string | No | maxLength: 200 |
stay_id |
string | Yes | Stay ID from list_stays. minLength: 1 |
additionalProperties: false; required: ["stay_id","amount_minor","method","paid_on","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
stay |
object (fields) | Yes | required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"] |
required: ["stay"]
Set stay nights — set_stay_nights
Close or open nights, set a nightly price, or set stay rules for a date range at one place to stay. Fields left out keep each night’s value; price_minor null returns to the base price; reset removes the range’s overrides.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
closed |
boolean | No | |
closed_to_arrival |
boolean | No | |
closed_to_departure |
boolean | No | |
from |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
max_stay |
integer or null | No | minimum: 1 |
min_stay_arrival |
integer or null | No | minimum: 1 |
min_stay_through |
integer or null | No | minimum: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
price_minor |
integer or null | No | minimum: 0 |
product_id |
string | Yes | The place to stay: a product of kind stay, from list_products. minLength: 1 |
reset |
boolean | No | |
to |
string | Yes | Exclusive; at most 500 days after from. pattern: "^\d{4}-\d{2}-\d{2}$" |
additionalProperties: false; required: ["product_id","from","to"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel_push |
object or null (fields) | No | What the home's connected channel took from this change: null when the home has no channel; needs_review with the reason when the channel did not take it. |
home |
object (fields) | Yes | required: ["product_id","name","location_id","timezone","currency","base_price_minor","base_price_tax_behavior","check_in_time","check_out_time","max_guests","min_nights","description","published","address","latitude","longitude","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy","check_in_method","check_in_instructions","wifi_network","wifi_password","directions","house_manual","checkout_instructions","assigned_member_id","assigned_team_id","channel","photos"] |
nights |
array of object (fields) | Yes | |
stays |
array of object (fields) | Yes |
required: ["home","nights","stays"]
Update stay — update_stay
Change a stay the host took: dates, party, guest details, total or notes. Fields left out keep their values. Stays from Airbnb or another channel change only on that channel.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
adults |
integer | No | maximum: 99; minimum: 1 |
arrival_time |
string or null | No | pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
check_in_date |
string | No | pattern: "^\d{4}-\d{2}-\d{2}$" |
check_out_date |
string | No | The morning the guest leaves; the stay holds the nights before it. pattern: "^\d{4}-\d{2}-\d{2}$" |
children |
integer | No | maximum: 99; minimum: 0 |
expected_version |
integer | Yes | The stay version from the latest read; a stale version is refused. minimum: 1 |
guest_email |
string or null | No | |
guest_name |
string | No | maxLength: 200; minLength: 1 |
guest_phone |
string or null | No | International phone number with calling code. |
guest_surname |
string or null | No | maxLength: 200 |
infants |
integer | No | maximum: 99; minimum: 0 |
notes |
string or null | No | maxLength: 2000 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
stay_id |
string | Yes | Stay ID from list_stays. minLength: 1 |
total_minor |
integer | No | Whole minor units of the organization currency, e.g. cents. minimum: 0 |
additionalProperties: false; required: ["stay_id","expected_version"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
stay |
object (fields) | Yes | required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"] |
required: ["stay"]
Submissions
Get guest conversation — get_guest_conversation
Read the entire guest conversation, including messages, booking/reservation, proposals, attachments and delivery receipts. Requires request_id from the inbox or booking read.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
request_id |
string | Yes |
additionalProperties: false; required: ["request_id"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
conversation |
object (fields) | Yes | required: ["request_id","type","state","archived","updated_at","participant_label","reply_channel","guest","operational_record","entries"] |
required: ["conversation"]
List guest conversations — list_guest_conversations
Read the business inbox for contacts, table reservations, bookings and stay conversations. Filter by type, current/past and whether a reply is needed. Follow page_info; use request_id to read the whole conversation.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
location_id |
string | No | |
mailbox |
string | No | enum: ["current","past"] |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
state |
string | No | enum: ["needs_attention","waiting_on_guest","resolved"] |
type |
string | No | enum: ["contact","reservation","booking","stay"] |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
conversations |
array of object (fields) | Yes | |
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
required: ["conversations","page_info"]
List reservation inquiries — list_reservation_inquiries
Read table reservations for the selected site, optionally filtered by location and creation window of up to 90 days. Returns guest contact details, reservation details and status counts. Use list_product_bookings to read product session bookings and consultations.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: true, idempotentHint: true, openWorldHint: false, destructiveHint: false.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cursor |
string | No | Opaque next_cursor from the previous page. |
days |
number | No | Optional: only include reservations made in the last N days (max 90). |
limit |
number | No | Page size. Defaults to 50; maximum 100. maximum: 100; minimum: 1 |
location_id |
string | No | Optional location id to list only that location's reservations. |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
additionalProperties: false; required: []
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
page_info |
object (fields) | Yes | required: ["has_more","next_cursor"] |
submissions |
array of object (fields) | Yes | |
summary |
object (fields) | Yes | required: ["total","by_status"] |
required: ["submissions","summary","page_info"]
Reply to guest — reply_to_guest
Reply through this conversation’s reply_channel and save the reply. Airbnb replies accept text; email replies accept text, a photo or both. A stay guest without an email is reached in their KrabiClaw inbox once they accept the host’s invite link; until then the reply is refused with GUEST_INVITE_REQUIRED and the host shares an invite from the KrabiClaw app. Reuse the same key for an identical retry. A pending or uncertain Airbnb send needs review and is never resent automatically.
Minimum role: member. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: true, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
file |
object (fields) | No | Photo attachment; required when no reply text is supplied. required: ["download_url","file_id"] |
idempotency_key |
string | Yes | maxLength: 200; minLength: 1 |
message |
string | No | Reply text; required when no photo is attached. minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
request_id |
string | Yes |
additionalProperties: false; required: ["request_id","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
conversation |
object (fields) | Yes | required: ["request_id","type","state","archived","updated_at","participant_label","reply_channel","guest","operational_record","entries"] |
required: ["conversation"]
File parameters: file.
Set guest conversation archived — set_guest_conversation_archived
Archive or restore this inbox conversation. Does not cancel a booking or reservation and does not send the guest a message.
Minimum role: admin. Required entitlement: None.
Annotations: readOnlyHint: false, openWorldHint: false, destructiveHint: true, idempotentHint: true.
Authentication: oauth2, scopes tenant.
Input
| Field | Type | Required | Description and constraints |
|---|---|---|---|
archived |
boolean | Yes | |
idempotency_key |
string | Yes | maxLength: 200; minLength: 1 |
organization_id |
string | No | Internal KrabiClaw organization ID from get_workspace_context or list_organizations, e.g. org-pottery-house. Do not pass a public URL, hostname, subdomain, custom domain, slug, or business name here. |
request_id |
string | Yes |
additionalProperties: false; required: ["request_id","archived","idempotency_key"]
Output
| Field | Type | Required | Description and constraints |
|---|---|---|---|
conversation |
object (fields) | Yes | required: ["request_id","type","state","archived","updated_at","participant_label","reply_channel","guest","operational_record","entries"] |
required: ["conversation"]
Shared field shapes
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
clicks |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
conversions |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
costPerClickMicros |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
error |
string or null | No | |
impressions |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
totalSpendMicros |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["totalSpendMicros","clicks","impressions","conversions","costPerClickMicros"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
ga4Delivery |
array of object (fields) | Yes | |
measurementContractStartedAt |
string or null | Yes | |
outcomeEventsWithoutAttribution |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["measurementContractStartedAt","outcomeEventsWithoutAttribution","ga4Delivery"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
avgSessionDuration |
number | Yes | minimum: 0 |
changePercent |
number or null | Yes | |
pageViews |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
pagesPerSession |
number | Yes | minimum: 0 |
returningVisitors |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
uniqueSessions |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
uniqueVisitors |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["pageViews","uniqueSessions","uniqueVisitors","returningVisitors","avgSessionDuration","pagesPerSession","changePercent"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
analyticsDataStartAt |
string or null | Yes | |
endDate |
string | Yes | |
startDate |
string | Yes | |
timezone |
string | Yes |
additionalProperties: false; required: ["startDate","endDate","timezone","analyticsDataStartAt"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
bySignupAttribution |
array of object (fields) | Yes | |
firstPaidBusinesses |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
firstPaidSignups |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
observedThrough |
string | Yes | |
onboardedBusinesses |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
onboardedSignups |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
signups |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["observedThrough","signups","onboardedSignups","firstPaidSignups","bySignupAttribution","onboardedBusinesses","firstPaidBusinesses"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of string fields
Value: array of string.
Array items: string.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
actor_id |
string | No | the staff member, agent or user who acted, when not the subject |
attribution_basis |
string | No | how the event snapshot arose: own_touch, inherited, session_current, checkout or none |
campaign |
string | No | campaign on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
campaign_prefix |
string | No | Literal, case-sensitive campaign prefix under the selected attribution basis; % and _ are ordinary characters. |
city |
string | No | city |
content |
string | No | content on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
conversion_type |
string | No | contact, reservation, booking or subscription |
country |
string | No | ISO country code |
currency |
string | No | currency of a monetary outcome |
device |
string | No | device class derived from the user agent |
dimension |
string | No | daily_summaries with dimension_day: the dimension to read. enum: ["country","city","device","referrer"] |
entity_id |
string | No | the business subject of an outcome or interaction |
entity_type |
string | No | the business subject type of an outcome or interaction |
event_name |
string | No | pageview, or the catalog event name |
fbclid |
string | No | fbclid on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
ga4_delivery_status |
string | No | the outcome of the optional GA4 delivery |
gbraid |
string | No | gbraid on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
gclid |
string | No | gclid on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
kind |
string | No | pageview, conversion (a business outcome) or interaction |
locale |
string | No | the language of the visit |
location_id |
string | No | the business location |
medium |
string | No | medium on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
member_id |
string | No | the team member a paid booking or booking decision is with |
msclkid |
string | No | msclkid on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
outcome_event |
string | No | The outcome measured by converting_sessions and session_conversion_rate (sign_up, contact_submit, booking_submit, purchase, ...) |
page_id |
string | No | the canonical page document |
page_path |
string | No | the public path exactly as visited (localized visits keep their prefix) |
page_type |
string | No | the page type |
path_prefix |
string | No | A public path prefix such as /th/ or /locations/main |
product_id |
string | No | the product the event is about |
referrer_host |
string | No | referrer_host on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
region |
string | No | region |
session_id |
string | No | the native session; null for a server outcome with no browser |
source |
string | No | source on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
source_path |
string | No | the locale-bare path documents are stored under |
stage |
string | No | outcome or interaction stage |
summary_kind |
string | No | daily_summaries only (required): the summary grain: one row per day, per day and public page path, or per day and country/city/device/referrer value. enum: ["organization_day","page_day","dimension_day"] |
surface |
string | No | the surface that produced the event |
tenant_organization_id |
string | No | on the platform organization: the business a Payments volume or fee invoice belongs to |
term |
string | No | term on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
value |
string | No | daily_summaries with dimension_day: one value of the dimension. |
value_basis |
string | No | quoted, purchase or refund |
variant_id |
string | No | the product variant the event is about |
visitor_id |
string | No | the native visitor; null for a server outcome with no browser |
wbraid |
string | No | wbraid on the requested attribution_basis (observed: as the event carried it; event_snapshot: the attribution in force for the event when it happened; session_last_touch: the session's current last touch) |
additionalProperties: false
array of string fields
Value: array of string.
Array items: string.
string or object fields
Value: string or object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
article_count |
integer | Yes | Articles in the category itself, drafts included. |
child_count |
integer | Yes | Subcategories directly under it. |
collection |
string | Yes | enum: ["blog","docs"] |
description |
string or null | Yes | |
id |
string | Yes | |
name |
string | Yes | |
parent_id |
string or null | Yes | The category it sits under; null at the top level. |
slug |
string | Yes | The category page's address: /blog/category/{slug} or /docs/category/{slug}. It does not change when the category is renamed. |
sort_order |
integer | Yes | Its place among its siblings. |
additionalProperties: false; required: ["id","collection","name","slug","description","parent_id","sort_order","article_count","child_count"]
array of object fields
Value: array of object.
minItems: 1
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
admin_edit_url |
string or null | Yes | |
category |
object or null (fields) | Yes | additionalProperties: false; required: ["id","name","slug"] |
collection |
string | Yes | enum: ["blog","docs"] |
content_blocks |
array of object (fields) | Yes | |
cover |
object or null (fields) | Yes | additionalProperties: false; required: ["asset_id","public_url","thumbnail_url","kind","alt_text","width","height"] |
created_at |
string | Yes | |
edit_url |
string or null | Yes | |
excerpt |
string or null | Yes | |
id |
string | Yes | |
preview_url |
string or null | Yes | |
public_path |
string or null | Yes | |
public_url |
string or null | Yes | |
published |
boolean | Yes | |
published_at |
string or null | Yes | |
seo_keywords |
string or null | Yes | |
slug |
string | Yes | |
sort_order |
integer | Yes | |
status |
string | Yes | enum: ["draft","published"] |
title |
string | Yes | |
updated_at |
string | Yes | |
view_url |
string or null | Yes | |
visibility |
string | Yes | enum: ["listed","unlisted"] |
additionalProperties: false; required: ["id","title","slug","excerpt","collection","category","sort_order","seo_keywords","published","published_at","status","visibility","created_at","updated_at","cover","admin_edit_url","edit_url","public_path","public_url","preview_url","view_url","content_blocks"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
has_more |
boolean | Yes | |
next_cursor |
string or null | Yes |
required: ["has_more","next_cursor"]
array of object fields
Value: array of object.
Array items: object.
array of string fields
Value: array of string.
minItems: 1
Array items: string.
array of object fields
Value: array of object.
minItems: 1
Array items: object.
array of string fields
Value: array of string.
Array items: string.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string or null | Yes | |
ends_at |
string | Yes | minLength: 1 |
id |
string | Yes | minLength: 1 |
kind |
string | Yes | enum: ["booking","reservation"] |
location_id |
string or null | Yes | |
party_size |
integer | Yes | minimum: 1 |
product_id |
string or null | Yes | |
product_name |
string or null | Yes | |
starts_at |
string | Yes | minLength: 1 |
status |
string | Yes | enum: ["pending","confirmed","cancelled"] |
timezone |
string | Yes | minLength: 1 |
required: ["id","kind","status","party_size","starts_at","ends_at","timezone","assigned_member_id","location_id","product_id","product_name"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
conversation_state |
string | Yes | minLength: 1 |
id |
string | Yes | minLength: 1 |
kind |
string | Yes | enum: ["booking","reservation"] |
required: ["id","kind","conversation_state"]
array of object fields
Value: array of object.
minItems: 1
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
email |
string | Yes | minLength: 1 |
name |
string | Yes | minLength: 1 |
phone |
string or null | No |
required: ["name","email"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
external_reference |
string or null | Yes | |
guest_acknowledgement |
boolean | Yes | |
source |
string | Yes | minLength: 1 |
required: ["source","external_reference","guest_acknowledgement"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string or null | Yes | |
capacity |
integer or null | Yes | |
claimed |
integer | Yes | |
ends_at |
string | Yes | minLength: 1 |
id |
string | Yes | minLength: 1 |
is_full |
boolean | Yes | |
location_id |
string or null | Yes | |
organization_id |
string | Yes | minLength: 1 |
product_id |
string | Yes | minLength: 1 |
remaining |
integer or null | Yes | |
starts_at |
string | Yes | minLength: 1 |
status |
string | Yes | minLength: 1 |
timezone |
string | Yes | minLength: 1 |
updated_at |
string | Yes | minLength: 1 |
required: ["id","organization_id","product_id","location_id","assigned_member_id","starts_at","ends_at","timezone","capacity","status","claimed","remaining","is_full","updated_at"]
#/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_cta or #/$defs/content_contact_cta or #/$defs/content_booking_cta or #/$defs/content_callout or #/$defs/content_hero or #/$defs/content_button_group or #/$defs/content_feature_grid or #/$defs/content_comparison or #/$defs/content_stat_grid or #/$defs/content_workflow_grid or #/$defs/content_showcase or #/$defs/content_language_reach or #/$defs/content_steps or #/$defs/content_video_feature or #/$defs/content_media_text or #/$defs/content_contact_form or #/$defs/content_team_grid or #/$defs/content_testimonial_grid or #/$defs/content_donation_choices or #/$defs/content_page_grid or #/$defs/content_product_grid or #/$defs/content_location_grid or #/$defs/content_social_posts or #/$defs/content_ai_assistance fields
Value: #/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_cta or #/$defs/content_contact_cta or #/$defs/content_booking_cta or #/$defs/content_callout or #/$defs/content_hero or #/$defs/content_button_group or #/$defs/content_feature_grid or #/$defs/content_comparison or #/$defs/content_stat_grid or #/$defs/content_workflow_grid or #/$defs/content_showcase or #/$defs/content_language_reach or #/$defs/content_steps or #/$defs/content_video_feature or #/$defs/content_media_text or #/$defs/content_contact_form or #/$defs/content_team_grid or #/$defs/content_testimonial_grid or #/$defs/content_donation_choices or #/$defs/content_page_grid or #/$defs/content_product_grid or #/$defs/content_location_grid or #/$defs/content_social_posts or #/$defs/content_ai_assistance.
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7, shape 8, shape 9, shape 10, shape 11, shape 12, shape 13, shape 14, shape 15, shape 16, shape 17, shape 18, shape 19, shape 20, shape 21, shape 22, shape 23, shape 24, shape 25, shape 26, shape 27, shape 28, shape 29, shape 30, shape 31, shape 32.
array of #/$defs/content_block_media fields
Value: array of #/$defs/content_block_media.
Array items: #/$defs/content_block_media.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
admin_edit_url |
string or null | Yes | |
blocks |
array of object (fields) | Yes | |
document |
object (fields) | Yes | required: ["id","updated_at"] |
id |
string | Yes | minLength: 1 |
locale |
string | Yes | minLength: 1 |
organization_id |
string | Yes | minLength: 1 |
page_id |
string | Yes | minLength: 1 |
page_type |
string | Yes | enum: ["custom","recipe","legal","system"] |
path |
string | Yes | |
product_id |
string or null | Yes | |
recipe |
string or null | Yes | |
sort_order |
number | Yes | |
summary |
string or null | Yes | |
title |
string | Yes | |
updated_at |
string | Yes | minLength: 1 |
required: ["id","page_id","organization_id","product_id","locale","path","title","summary","page_type","recipe","sort_order","updated_at","blocks","document","admin_edit_url"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
locale |
string | Yes | |
path |
string | Yes | |
removed_locales |
array of string (fields) | Yes |
required: ["id","path","locale","removed_locales"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accessibility_contact_required |
boolean | Yes | |
additional_notes_html |
string or null | No | |
advance_notice_minutes |
number or null | No | |
created_at |
string | Yes | |
deposit_amount |
integer or null | No | Total deposit per reservation, in deposit_currency minor units. minimum: 1 |
deposit_currency |
string or null | No | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR",null] |
deposit_required |
boolean | Yes | |
deposit_tax_behavior |
string or null | No | enum: ["inclusive","exclusive",null] |
deposit_trigger_party_size |
number or null | No | |
duration_minutes |
integer | Yes | minimum: 1 |
free_cancellation_until_minutes |
number or null | No | |
location_id |
string | Yes | |
minimum_guest_age |
number or null | No | |
reschedule_allowed |
boolean | Yes | |
reschedule_cutoff_minutes |
number or null | No | |
slot_capacity |
number or null | No | Guests seatable at one start time. Null means unlimited. |
updated_at |
string | Yes |
required: ["location_id","duration_minutes","reschedule_allowed","deposit_required","accessibility_contact_required","created_at","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
additional_notes_html |
string or null | Yes | |
heading |
string | Yes | |
items |
array of object (fields) | Yes |
required: ["heading","items","additional_notes_html"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
#/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_cta or #/$defs/content_contact_cta or #/$defs/content_booking_cta or #/$defs/content_callout or #/$defs/content_hero or #/$defs/content_button_group or #/$defs/content_feature_grid or #/$defs/content_comparison or #/$defs/content_stat_grid or #/$defs/content_workflow_grid or #/$defs/content_showcase or #/$defs/content_language_reach or #/$defs/content_steps or #/$defs/content_video_feature or #/$defs/content_media_text or #/$defs/content_contact_form or #/$defs/content_team_grid or #/$defs/content_testimonial_grid or #/$defs/content_donation_choices or #/$defs/content_page_grid or #/$defs/content_product_grid or #/$defs/content_location_grid or #/$defs/content_social_posts or #/$defs/content_ai_assistance fields
Value: #/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_cta or #/$defs/content_contact_cta or #/$defs/content_booking_cta or #/$defs/content_callout or #/$defs/content_hero or #/$defs/content_button_group or #/$defs/content_feature_grid or #/$defs/content_comparison or #/$defs/content_stat_grid or #/$defs/content_workflow_grid or #/$defs/content_showcase or #/$defs/content_language_reach or #/$defs/content_steps or #/$defs/content_video_feature or #/$defs/content_media_text or #/$defs/content_contact_form or #/$defs/content_team_grid or #/$defs/content_testimonial_grid or #/$defs/content_donation_choices or #/$defs/content_page_grid or #/$defs/content_product_grid or #/$defs/content_location_grid or #/$defs/content_social_posts or #/$defs/content_ai_assistance.
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7, shape 8, shape 9, shape 10, shape 11, shape 12, shape 13, shape 14, shape 15, shape 16, shape 17, shape 18, shape 19, shape 20, shape 21, shape 22, shape 23, shape 24, shape 25, shape 26, shape 27, shape 28, shape 29, shape 30, shape 31, shape 32.
array of #/$defs/content_block_media fields
Value: array of #/$defs/content_block_media.
Array items: #/$defs/content_block_media.
array of string fields
Value: array of string.
Array items: string.
array of string fields
Value: array of string.
Array items: string.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
location_id |
string or null | Yes | |
location_slug |
string or null | Yes | |
location_title |
string or null | Yes | |
organization_id |
string or null | Yes | |
organization_name |
string or null | Yes | |
organization_public_url |
string or null | Yes | |
organization_slug |
string or null | Yes | |
organization_subdomain |
string or null | Yes |
required: ["organization_id","organization_name","organization_slug","organization_subdomain","organization_public_url","location_id","location_slug","location_title"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of string fields
Value: array of string.
Array items: string.
array of string fields
Value: array of string.
maxItems: 4; minItems: 2
Array items: string.
array of string fields
Value: array of string.
maxItems: 15; minItems: 3
Array items: string.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string | Yes | minLength: 1 |
createdAt |
string | Yes | minLength: 1 |
dueAt |
string or null | Yes | |
entryId |
string or null | Yes | |
errorCode |
string or null | Yes | |
errorField |
string or null | Yes | |
id |
string | Yes | minLength: 1 |
organizationId |
string | Yes | minLength: 1 |
productId |
string | Yes | minLength: 1 |
reason |
string or null | Yes | |
requestId |
string or null | Yes | |
sentAt |
string or null | Yes | |
startedAt |
string or null | Yes | |
status |
string | Yes | enum: ["pending","sending","sent","failed","needs_review","cancelled","skipped"] |
stayId |
string | Yes | minLength: 1 |
templateId |
string or null | Yes | |
templateVersion |
integer | Yes | minimum: 1 |
timezone |
string | Yes | minLength: 1 |
title |
string | Yes | minLength: 1 |
updatedAt |
string | Yes | minLength: 1 |
required: ["id","organizationId","productId","stayId","requestId","templateId","title","templateVersion","body","dueAt","timezone","status","reason","errorCode","errorField","entryId","startedAt","sentAt","createdAt","updatedAt"]
null or object fields
Value: null or object.
oneOf: shape 1, shape 2, shape 3.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string | Yes | minLength: 1 |
createdAt |
string | Yes | minLength: 1 |
id |
string | Yes | minLength: 1 |
organizationId |
string | Yes | minLength: 1 |
schedule |
null or object (fields) | Yes | |
title |
string | Yes | minLength: 1 |
updatedAt |
string | Yes | minLength: 1 |
version |
integer | Yes | minimum: 1 |
required: ["id","organizationId","title","body","schedule","version","createdAt","updatedAt"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
object or null (fields) | Yes | The home's address: street, city, state, ISO country and postal code. Null only for a location saved without one. required: ["address","city","state","country","zip_code"] |
amenities |
array of string (fields) | Yes | Amenity codes the home offers; replaces the whole list. Empty offers none. uniqueItems: true |
assigned_member_id |
string or null | Yes | The member (member id) who looks after this home. |
assigned_team_id |
string or null | Yes | The team that looks after this home. |
base_price_minor |
integer or null | Yes | |
base_price_tax_behavior |
string or null | Yes | enum: ["unspecified","inclusive","exclusive",null] |
bathrooms |
number or null | Yes | Whole and half baths, such as 1.5. maximum: 50; minimum: 0; multipleOf: 0.5 |
bedrooms |
integer or null | Yes | Bedrooms; 0 is a studio. maximum: 50; minimum: 0 |
beds |
integer or null | Yes | maximum: 50; minimum: 1 |
cancellation_policy |
string or null | Yes | Policy shown to guests for stays under 28 nights. It does not refund by itself. enum: ["flexible","moderate","limited","firm","strict",null] |
channel |
object or null (fields) | Yes | The channel this home is connected to; null when it is kept only in KrabiClaw and its night changes go nowhere else. required: ["provider","status"] |
check_in_instructions |
string or null | Yes | maxLength: 5000; minLength: 1 |
check_in_method |
string or null | Yes | How guests get in. enum: ["smart_lock","keypad","lockbox","building_staff","in_person","other",null] |
check_in_time |
string | Yes | minLength: 1 |
check_out_time |
string | Yes | minLength: 1 |
checkout_instructions |
array of object (fields) | Yes | What guests do before leaving, in order, each task once; replaces the whole list. |
currency |
string | Yes | minLength: 1 |
description |
string | Yes | The listing description; empty when none is written. |
directions |
string or null | Yes | maxLength: 5000; minLength: 1 |
house_manual |
string or null | Yes | maxLength: 5000; minLength: 1 |
latitude |
number or null | Yes | |
location_id |
string | Yes | minLength: 1 |
long_term_cancellation_policy |
string or null | Yes | Policy shown to guests for stays of 28 nights or more. enum: ["firm","strict",null] |
longitude |
number or null | Yes | |
max_guests |
integer | Yes | |
min_nights |
integer | Yes | |
name |
string | Yes | minLength: 1 |
photos |
array of object (fields) | Yes | The home's photos in order, the cover first: its product's image, then its gallery. id is the media asset id; set_media, attach_media, reorder_media, remove_media and update_media_asset change them. |
product_id |
string | Yes | minLength: 1 |
property_type |
string or null | Yes | Airbnb property type, one the property_type_group offers. Null with property_type_group when not said. enum: ["apartment","condominium","serviced_apartment","loft","house","townhouse","bungalow","cabin","chalet","earthhouse","hut","lighthouse","villa","dome","cottage","farmstay","houseboat","tiny_house","guesthouse","private_suite","boat","castle","cave","igloo","island","plane","rv","tent","tipi","train","treehouse","yurt","other","barn","campsite","windmill","bus","holiday_park","ranch","religious_building","riad","shipping_container","tower","bnb","nature_eco_lodge","boutique_hotel","hostel","aparthotel","hotel","resort",null] |
property_type_group |
string or null | Yes | Airbnb's property group: apartments (Apartment: apartment, condominium, serviced_apartment, loft); houses (House: house, townhouse, bungalow, cabin, chalet, earthhouse, hut, lighthouse, villa, dome, cottage, farmstay, houseboat, tiny_house); secondary_units (Secondary unit: guesthouse, private_suite, farmstay); unique_homes (Unique space: boat, castle, cave, earthhouse, hut, igloo, island, lighthouse, plane, rv, tent, tipi, train, treehouse, yurt, other, dome, barn, campsite, farmstay, houseboat, tiny_house, windmill, bus, holiday_park, ranch, religious_building, riad, shipping_container, tower); bnb (Bed and breakfast: bnb, nature_eco_lodge, farmstay); boutique_hotels_and_more (Boutique hotel: boutique_hotel, nature_eco_lodge, hostel, serviced_apartment, aparthotel, hotel, resort). Set with property_type, both or neither. enum: ["apartments","houses","secondary_units","unique_homes","bnb","boutique_hotels_and_more",null] |
published |
boolean | Yes | Whether the home is listed on the site. |
timezone |
string | Yes | minLength: 1 |
wifi_network |
string or null | Yes | maxLength: 100; minLength: 1 |
wifi_password |
string or null | Yes | maxLength: 100; minLength: 1 |
required: ["product_id","name","location_id","timezone","currency","base_price_minor","base_price_tax_behavior","check_in_time","check_out_time","max_guests","min_nights","description","published","address","latitude","longitude","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy","check_in_method","check_in_instructions","wifi_network","wifi_password","directions","house_manual","checkout_instructions","assigned_member_id","assigned_team_id","channel","photos"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
adults |
integer | Yes | |
arrival_time |
string or null | Yes | pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
cancellation_policy |
string or null | Yes | The home cancellation policy the guest booked under on the site; it decides what their own cancellation refunds. Null for a stay not paid on the site. enum: ["flexible","moderate","limited","firm","strict","long_term_firm","long_term_strict",null] |
cancellation_reason |
string or null | Yes | |
cancelled_at |
string or null | Yes | |
channel |
string | Yes | enum: ["airbnb","vrbo","direct"] |
channel_booking_id |
string or null | Yes | |
channel_push |
object or null (fields) | No | What the home's connected channel took from this change: null when the home has no channel; needs_review with the reason when the channel did not take it. |
check_in_date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
check_out_date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
children |
integer | Yes | |
created_at |
string | Yes | minLength: 1 |
currency |
string | Yes | minLength: 1 |
external_booking_id |
string or null | Yes | |
guest_email |
string or null | Yes | |
guest_name |
string or null | Yes | |
guest_phone |
string or null | Yes | |
guest_surname |
string or null | Yes | |
id |
string | Yes | minLength: 1 |
infants |
integer | Yes | |
location_id |
string | Yes | minLength: 1 |
notes |
string or null | Yes | |
online_payment |
object or null (fields) | Yes | The Stripe payment the guest made when booking this stay on the site; null for a stay booked any other way. paid_minor counts it net of refunds. required: ["payment_id","state","currency","amount_minor","captured_minor","refunded_minor","receipt_url","created_at"] |
overbooked |
boolean | Yes | |
owner |
string | Yes | enum: ["app","channel"] |
paid_minor |
integer | Yes | |
payment_status |
string or null | Yes | enum: ["unpaid","partial","paid","overpaid",null] |
payments |
array of object (fields) | Yes | |
product_id |
string | Yes | minLength: 1 |
provider |
string or null | Yes | |
request_id |
string or null | Yes | The guest conversation about this stay, for get_guest_conversation and reply_to_guest. Null until a named guest with email or phone opens one; an existing conversation is retained. |
status |
string | Yes | enum: ["pending","confirmed","cancelled"] |
timezone |
string | Yes | minLength: 1 |
total_minor |
integer | Yes | |
updated_at |
string | Yes | minLength: 1 |
user_id |
string or null | Yes | |
version |
integer | Yes |
required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
object or null (fields) | Yes | The home's address: street, city, state, ISO country and postal code. Null only for a location saved without one. required: ["address","city","state","country","zip_code"] |
amenities |
array of string (fields) | Yes | Amenity codes the home offers; replaces the whole list. Empty offers none. uniqueItems: true |
assigned_member_id |
string or null | Yes | The member (member id) who looks after this home. |
assigned_team_id |
string or null | Yes | The team that looks after this home. |
base_price_minor |
integer or null | Yes | |
base_price_tax_behavior |
string or null | Yes | enum: ["unspecified","inclusive","exclusive",null] |
bathrooms |
number or null | Yes | Whole and half baths, such as 1.5. maximum: 50; minimum: 0; multipleOf: 0.5 |
bedrooms |
integer or null | Yes | Bedrooms; 0 is a studio. maximum: 50; minimum: 0 |
beds |
integer or null | Yes | maximum: 50; minimum: 1 |
cancellation_policy |
string or null | Yes | Policy shown to guests for stays under 28 nights. It does not refund by itself. enum: ["flexible","moderate","limited","firm","strict",null] |
channel |
object or null (fields) | Yes | The channel this home is connected to; null when it is kept only in KrabiClaw and its night changes go nowhere else. required: ["provider","status"] |
check_in_instructions |
string or null | Yes | maxLength: 5000; minLength: 1 |
check_in_method |
string or null | Yes | How guests get in. enum: ["smart_lock","keypad","lockbox","building_staff","in_person","other",null] |
check_in_time |
string | Yes | minLength: 1 |
check_out_time |
string | Yes | minLength: 1 |
checkout_instructions |
array of object (fields) | Yes | What guests do before leaving, in order, each task once; replaces the whole list. |
currency |
string | Yes | minLength: 1 |
description |
string | Yes | The listing description; empty when none is written. |
directions |
string or null | Yes | maxLength: 5000; minLength: 1 |
house_manual |
string or null | Yes | maxLength: 5000; minLength: 1 |
latitude |
number or null | Yes | |
location_id |
string | Yes | minLength: 1 |
long_term_cancellation_policy |
string or null | Yes | Policy shown to guests for stays of 28 nights or more. enum: ["firm","strict",null] |
longitude |
number or null | Yes | |
max_guests |
integer | Yes | |
min_nights |
integer | Yes | |
name |
string | Yes | minLength: 1 |
photos |
array of object (fields) | Yes | The home's photos in order, the cover first: its product's image, then its gallery. id is the media asset id; set_media, attach_media, reorder_media, remove_media and update_media_asset change them. |
product_id |
string | Yes | minLength: 1 |
property_type |
string or null | Yes | Airbnb property type, one the property_type_group offers. Null with property_type_group when not said. enum: ["apartment","condominium","serviced_apartment","loft","house","townhouse","bungalow","cabin","chalet","earthhouse","hut","lighthouse","villa","dome","cottage","farmstay","houseboat","tiny_house","guesthouse","private_suite","boat","castle","cave","igloo","island","plane","rv","tent","tipi","train","treehouse","yurt","other","barn","campsite","windmill","bus","holiday_park","ranch","religious_building","riad","shipping_container","tower","bnb","nature_eco_lodge","boutique_hotel","hostel","aparthotel","hotel","resort",null] |
property_type_group |
string or null | Yes | Airbnb's property group: apartments (Apartment: apartment, condominium, serviced_apartment, loft); houses (House: house, townhouse, bungalow, cabin, chalet, earthhouse, hut, lighthouse, villa, dome, cottage, farmstay, houseboat, tiny_house); secondary_units (Secondary unit: guesthouse, private_suite, farmstay); unique_homes (Unique space: boat, castle, cave, earthhouse, hut, igloo, island, lighthouse, plane, rv, tent, tipi, train, treehouse, yurt, other, dome, barn, campsite, farmstay, houseboat, tiny_house, windmill, bus, holiday_park, ranch, religious_building, riad, shipping_container, tower); bnb (Bed and breakfast: bnb, nature_eco_lodge, farmstay); boutique_hotels_and_more (Boutique hotel: boutique_hotel, nature_eco_lodge, hostel, serviced_apartment, aparthotel, hotel, resort). Set with property_type, both or neither. enum: ["apartments","houses","secondary_units","unique_homes","bnb","boutique_hotels_and_more",null] |
published |
boolean | Yes | Whether the home is listed on the site. |
timezone |
string | Yes | minLength: 1 |
wifi_network |
string or null | Yes | maxLength: 100; minLength: 1 |
wifi_password |
string or null | Yes | maxLength: 100; minLength: 1 |
required: ["product_id","name","location_id","timezone","currency","base_price_minor","base_price_tax_behavior","check_in_time","check_out_time","max_guests","min_nights","description","published","address","latitude","longitude","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy","check_in_method","check_in_instructions","wifi_network","wifi_password","directions","house_manual","checkout_instructions","assigned_member_id","assigned_team_id","channel","photos"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
Value: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
object (fields) | No | additionalProperties: false |
alt_text |
string | No | |
brand_description |
string | No | |
compliance |
object (fields) | No | additionalProperties: false |
consultation |
object (fields) | No | additionalProperties: false |
description |
string | No | |
details |
object (fields) | No | additionalProperties: false |
marketing_features |
array of string (fields) | No | |
metadata |
object (fields) | No | additionalProperties: false |
name |
string | No | |
reservation |
object (fields) | No | additionalProperties: false |
seo_description |
string | No | |
seo_keywords |
string or null | No | |
seo_title |
string | No | |
short_description |
string | No | |
slug |
string or null | No | |
summary |
string or null | No | |
title |
string or null | No | |
unit_label |
string | No |
additionalProperties: false
array of object fields
Value: array of object.
maxItems: 250; minItems: 1
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
addressLines |
array of string (fields) | Yes | Address lines in order, unbounded. minItems: 1 |
administrativeArea |
string | No | State, province or region. |
languageCode |
string | No | BCP-47 tag when the address is written in a specific language. |
locality |
string | No | Town or city. |
postalCode |
string | No | |
regionCode |
string | Yes | ISO 3166-1 alpha-2 country code, e.g. TH. minLength: 1; pattern: "\S" |
sublocality |
string | No | Neighbourhood or sub-district. |
required: ["regionCode","addressLines"]
null or object fields
Value: null or object.
null or array of object fields
Value: null or array of object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
object or null (fields) | No | required: ["regionCode","addressLines"] |
canonical_url |
string or null | No | |
created_at |
string | Yes | |
description |
string or null | No | |
email |
string or null | No | |
id |
string | Yes | minLength: 1 |
maps_url |
string or null | No | |
max_capacity |
number or null | No | Stored location capacity metadata; does not limit reservations. Reservation capacity uses location_reservation_configs.slot_capacity. |
media |
array of object (fields) | Yes | |
opening_hours |
null or object (fields) | No | |
phone |
string or null | No | |
rating |
number or null | No | |
review_count |
number or null | No | |
seo_description |
string or null | No | |
seo_title |
string or null | No | |
short_description |
string or null | No | |
slug |
string | Yes | minLength: 1 |
special_hours |
null or array of object (fields) | No | |
status |
string | Yes | |
timezone |
string | Yes | Explicit IANA timezone identifier, such as Asia/Bangkok. Missing timezone is an error, never the browser timezone. minLength: 1 |
title |
string | Yes | |
updated_at |
string | Yes | |
website_url |
string or null | No |
required: ["id","slug","title","status","timezone","created_at","updated_at","media"]
array of string fields
Value: array of string.
Array items: string.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
additional_keywords |
array of string (fields) | No | Optional additional keywords to include. |
daily_budget_micros |
integer | No | Daily budget in micros (e.g. 10000000 for 10 units in account currency). minimum: 1000000 |
descriptions |
array of string (fields) | No | Responsive Search Ad descriptions (min 2) when mode is "create". |
headline_replacements |
object | No | Optional keyword/phrase replacements for ad copy headlines when cloning. |
headlines |
array of string (fields) | No | Responsive Search Ad headlines (min 3) when mode is "create". |
keywords |
array of object (fields) | No | Keywords to target when mode is "create". |
mode |
string | Yes | Whether to clone an existing high-performing campaign or create a new search campaign. enum: ["clone","create"] |
new_campaign_name |
string | No | Optional campaign name. Defaults to " |
source_campaign_id |
string | No | Numeric campaign ID of the template campaign to clone (required when mode is "clone"). |
status |
string | No | Initial campaign status (defaults to PAUSED). enum: ["ENABLED","PAUSED"] |
required: ["mode"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
caption |
string | Yes | Post text / caption for social channels. |
channels |
array of string (fields) | No | Target social channels. Defaults to all currently connected channels. |
media_asset_id |
string | No | Optional media asset ID to attach as post image or video. |
required: ["caption"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cta_label |
string | No | Call-to-action button text. |
cta_url |
string | No | Call-to-action link destination (defaults to target_url). |
description |
string | No | Optional announcement message details. |
dismissible |
boolean | No | Whether the announcement can be dismissed by visitors (default true). |
enabled |
boolean | No | Whether the announcement is active immediately (default true). |
format |
string | No | Whether to present as a top banner or a popup modal (default modal). enum: ["modal","banner"] |
headline |
string | Yes | Announcement modal title. |
required: ["headline"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaign_id |
string | No | |
error |
string | No | |
resource_name |
string | No | |
status |
string | No |
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
error |
string | No | |
outcomes |
array of object (fields) | No | |
post_id |
string | No | |
published |
boolean | No |
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cta_url |
string or null | No | |
enabled |
boolean | No | |
error |
string | No | |
headline |
string | No |
object fields
Value: object.
oneOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6.
array of object fields
Value: array of object.
Array items: object.
object fields
Value: object.
oneOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
download_url |
string | Yes | |
file_id |
string | Yes | |
file_name |
string | No | |
mime_type |
string | No |
required: ["download_url","file_id"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
download_url |
string | Yes | |
file_id |
string | Yes | |
file_name |
string | No | |
mime_type |
string | No |
required: ["download_url","file_id"]
object or null fields
Value: object or null.
object fields
Value: object.
oneOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
focus |
object (fields) | Yes | additionalProperties: false; required: ["x","y"] |
shape |
string | Yes | enum: ["original","square","circle"] |
additionalProperties: false; required: ["shape","focus"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
createdAt |
string | Yes | format: "date-time" |
delivery |
object or null (fields) | Yes | required: ["status","provider","provider_message_id","error"] |
email |
string | Yes | |
expiresAt |
string | Yes | format: "date-time" |
id |
string | Yes | |
inviterId |
string | Yes | |
organizationId |
string | Yes | |
role |
string | Yes | |
status |
string | Yes |
required: ["id","organizationId","email","role","status","inviterId","createdAt","expiresAt","delivery"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
createdAt |
string | Yes | format: "date-time" |
id |
string | Yes | |
members |
array of object (fields) | Yes | |
name |
string | Yes | |
organizationId |
string | Yes | |
updatedAt |
string | No | format: "date-time" |
required: ["id","name","organizationId","createdAt","members"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
brand_description |
string or null | No | |
created_at |
string | No | |
id |
string | Yes | |
media |
array of object (fields) | No | |
name |
string or null | No | |
organization_id |
string | No | |
public_url |
string or null | No | |
status |
string | Yes | |
subdomain |
string | Yes | |
theme |
string | No | |
updated_at |
string | No |
required: ["id","subdomain","status"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address_visibility |
string | No | enum: ["visible","hidden"] |
announcement |
object or null (fields) | No | The universal announcement banner or modal shown to visitors on the public website, available to every theme. An image, when set, is a separate organization media placement (slot "announcement"), not a field here. |
brand_description |
string or null | No | |
canonical_url |
string or null | No | |
careers_email |
string or null | No | |
catering_email |
string or null | No | |
contact_email |
string or null | No | |
created_at |
string | No | |
custom_domain_status |
string or null | No | |
default_currency |
string | Yes | |
font_preset |
string | No | enum: ["default","mali","sarabun","prompt","kanit","ibm-plex-sans-thai","noto-serif-thai","inter","dm-sans","montserrat","lora","playfair-display","cormorant-garamond"] |
google_analytics_measurement_id |
string or null | No | |
id |
string | Yes | |
media |
array of object (fields) | No | |
name |
string or null | No | |
organization_id |
string | No | |
palette |
object or null (fields) | No | The colors the site renders, light and dark: its own, or its template's. Null on the platform template. |
palette_source |
string or null | No | enum: ["custom","template",null] |
partnerships_email |
string or null | No | |
press_email |
string or null | No | |
public_url |
string or null | No | |
seo_description |
string or null | No | |
seo_title |
string or null | No | |
status |
string | No | |
subdomain |
string | Yes | |
theme |
string | No | |
timezone |
string | Yes | |
updated_at |
string | No |
required: ["id","subdomain","default_currency","timezone"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address_line_2 |
string | No | |
city |
string | No | |
country |
string | No | pattern: "^[A-Z]{2}$" |
phone |
string | No | |
postal_code |
string | No | |
region |
string | No | |
street_address |
string | No | |
website_url |
string | No | format: "uri" |
additionalProperties: false
array of string fields
Value: array of string.
Array items: string.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
isPlatformAdmin |
boolean | Yes |
required: ["id","isPlatformAdmin"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
createdAt |
string | Yes | format: "date-time" |
id |
string | Yes | |
organizationId |
string | Yes | |
role |
string | Yes | |
userId |
string | Yes |
required: ["id","organizationId","userId","role","createdAt"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
external_url |
string or null | Yes | |
mode |
string | Yes | enum: ["native","external_url","native_disabled"] |
required: ["mode","external_url"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cta_label |
string or null | No | Button label. Requires cta_url and vice versa. |
cta_url |
string or null | No | Button destination, http or https. Requires cta_label and vice versa. |
description |
string or null | No | |
dismissible |
boolean | No | Whether a visitor who closes it will not be shown it again on that device. |
enabled |
boolean | No | Whether the announcement is currently shown. false keeps the saved content without showing it. |
format |
string | No | Display style: modal popup dialog or top banner bar (default modal). enum: ["modal","banner"] |
headline |
string | No | Required in every write, even an empty string when disabling without discarding it. |
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
dark |
object (fields) | No | additionalProperties: false |
light |
object (fields) | No | additionalProperties: false |
starter |
string | No | enum: ["coastal","forest","terracotta","ink","blossom","saffron","slate","midnight"] |
additionalProperties: false
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount |
integer | Yes | |
buyer_name |
string or null | No | |
captured_amount |
integer | Yes | |
created_at |
string | No | |
currency |
string | Yes | |
ends_at |
string or null | No | |
id |
string | Yes | |
image_url |
string or null | No | |
refunded_amount |
integer | Yes | |
starts_at |
string or null | No | |
state |
string | Yes | |
timezone |
string or null | No | |
title |
string | Yes | |
to |
string | Yes |
additionalProperties: false; required: ["id","currency","amount","captured_amount","refunded_amount","state","title","to"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
price |
object (fields) | No | |
product_id |
string or null | No | |
quantity |
integer | Yes | |
session_id |
string or null | No | |
title |
string | Yes | |
variant_id |
string or null | No |
required: ["title","quantity"]
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
available |
array of object (fields) | Yes | |
pending |
array of object (fields) | Yes |
required: ["available","pending"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
contract_start_at |
string or null | No | |
currency |
string | No | |
status |
string | No |
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
ad_spend_rate |
number or null | Yes | |
ad_spend_rate_percent |
string or null | Yes | |
captured_volume_rate |
number | Yes | |
captured_volume_rate_percent |
string | Yes | |
currency |
string | Yes | const: "USD" |
units |
string | Yes | const: "cents" |
validated_at |
string | Yes |
required: ["currency","units","captured_volume_rate","captured_volume_rate_percent","ad_spend_rate","ad_spend_rate_percent","validated_at"]
array of object fields
Value: array of object.
Array items: object.
string or null fields
Value: string or null.
object or null fields
Value: object or null.
string or null fields
Value: string or null.
array of object fields
Value: array of object.
Array items: object.
string or null fields
Value: string or null.
string or null fields
Value: string or null.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string or null | No | |
call_to_action |
object or null (fields) | No | |
canonical_url |
string or null | No | |
created_at |
string | No | |
id |
string | Yes | |
location_id |
string or null | No | |
media |
array of object (fields) | Yes | Cover, then gallery, in order. |
organization_id |
string | No | |
preview_url |
string or null | No | A signed link to the draft as visitors will see it. |
public_path |
string | No | |
public_url |
string or null | No | |
publications |
array of object (fields) | Yes | |
published_at |
string or null | No | |
slug |
string | Yes | |
source |
string | No | The organization authored this website post or created it from a template. enum: ["manual","template"] |
status |
string | Yes | enum: ["draft","published"] |
title |
string or null | No | |
updated_at |
string | Yes | The expected_updated_at update_post and publish_post take. |
view_url |
string or null | No | |
visibility |
string | Yes | enum: ["listed","unlisted"] |
required: ["id","slug","status","visibility","media","publications","updated_at"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
state |
string | Yes | enum: ["removed"] |
required: ["id","state"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string or null | Yes | |
channel |
string | Yes | enum: ["facebook","instagram","discord"] |
media |
array of object (fields) | Yes | |
provider_post_id |
string | Yes | Native provider identity, not a website post_id. |
public_url |
string or null | Yes | The provider link. A Discord message link opens only for members of that channel. |
published_at |
string | Yes | |
target_id |
string | Yes |
additionalProperties: false; required: ["channel","target_id","provider_post_id","body","public_url","published_at","media"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | enum: ["organization"] |
label |
string | Yes | |
target_id |
string | Yes |
required: ["channel","target_id","label"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
maxItems: 4; minItems: 1
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
maxItems: 400; minItems: 1
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | Yes | |
id |
string | Yes | |
image |
object or null (fields) | Yes | The section's own photo; set it with set_media owner_type collection, slot image. required: ["asset_id","kind","public_url","status"] |
location_id |
string or null | Yes | |
name |
string | Yes | |
organization_id |
string | Yes | |
slug |
string | Yes | |
sort_order |
integer | Yes |
required: ["id","organization_id","location_id","name","slug","description","image","sort_order"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string or null | No | One organization member for provider scheduling. Clear assigned_team_id when choosing a member. |
assigned_team_id |
string or null | No | Better Auth team whose available members can host bookings. Clear assigned_member_id when choosing a team. |
confirmation_mode |
string | No | instant confirms immediately (default); review waits for staff approval. default: "instant"; enum: ["instant","review"] |
default_capacity |
integer or null | Yes | Places per session; null means unlimited. minimum: 1 |
duration_minutes |
integer | Yes | Minutes each visit occupies its booking slot or seats, independent of the interval between start times. minimum: 1 |
location_id |
string or null | Yes | |
online_payment_required |
boolean | No | True requires online payment when booking; false is the default and does not collect online. default: false |
scheduling_mode |
string | No | enum: ["legacy","provider"] |
sessions |
array of object (fields) | No | maxItems: 100; minItems: 1 |
weekly_slots |
array of object (fields) | No | maxItems: 100; minItems: 1 |
additionalProperties: false; required: ["location_id","duration_minutes","default_capacity"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
allergens |
array of string (fields) | No | Allergens the merchant states this dish contains. maxItems: 100; uniqueItems: true |
cancellation_policy |
string | No | The merchant’s stated cancellation terms, displayed publicly; this text does not automate refunds. maxLength: 10000; minLength: 1; pattern: "\S" |
care_instructions |
string | No | How to care for the item, shown in its details. maxLength: 10000; minLength: 1; pattern: "\S" |
dietary_notes |
array of string (fields) | No | Merchant-stated dietary facts displayed with a dish. maxItems: 100; uniqueItems: true |
dimensions |
string | No | Item measurements including their units, shown in its details. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
featured |
boolean | No | Highlight this item on the menu and homepage. |
house_rules |
string | No | The host’s rules for guests staying in the home, shown with the listing. maxLength: 10000; minLength: 1; pattern: "\S" |
included_items |
array of string (fields) | No | Items or work included in the stated price, shown in their own public section. maxItems: 100; uniqueItems: true |
ingredients |
array of string (fields) | No | Ingredients shown in the dish details. maxItems: 100; uniqueItems: true |
materials |
array of string (fields) | No | Materials the item is made from, shown in its details. maxItems: 100; uniqueItems: true |
meeting_point |
string | No | Instructions shown in the meeting section; meeting mode and video links are set in scheduling. maxLength: 10000; minLength: 1; pattern: "\S" |
noodle |
array of string (fields) | No | Authored noodle information shown as dish facts; these do not establish purchasable variants. maxItems: 100; uniqueItems: true |
preparation |
string | No | Preparation instructions shown to customers before a session or appointment. maxLength: 10000; minLength: 1; pattern: "\S" |
pricing_note |
string | No | An explicitly stated price such as Market price; use only when no numeric price is set. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
sizes |
array of string (fields) | No | Authored serving information; priced choices belong in variants. maxItems: 100; uniqueItems: true |
soup |
array of string (fields) | No | Authored soup information shown with the dish. maxItems: 100; uniqueItems: true |
tagline |
string | No | A short sentence shown below the product title. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
toppings |
array of string (fields) | No | Authored topping information; priced choices belong in variants. maxItems: 100; uniqueItems: true |
what_to_bring |
array of string (fields) | No | Items customers should bring, shown in the preparation section. maxItems: 100; uniqueItems: true |
additionalProperties: false
array of string fields
Value: array of string.
maxItems: 15
Array items: string.
array of object fields
Value: array of object.
maxItems: 3
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
blocks |
array of object (fields) | Yes | Complete canonical block array. Each existing block must retain its id unless its removal is explicitly confirmed. Block data never contains asset IDs or delivery URLs. Omit media to preserve that block's current placements; provide media explicitly to replace them, or call set_media with owner_type "content_block", the block id, and the intended slot. |
pageType |
string | No | The page's type. Send the page_type from the last read unless you are changing it. enum: ["custom","recipe","legal","system"] |
path |
string | No | The page's public path. A service may omit it to get the first free /services/ |
recipe |
string or null | No | The template section this page fills, or null for a page that fills none. Send the recipe from the last read unless you are changing it; an omitted recipe is not kept. |
sortOrder |
number | No | The page's position in the site's page list. Send the sort_order from the last read unless you are reordering. |
summary |
string or null | No | Omit to preserve on update; null clears it. |
title |
string | Yes | The page title to write. Always sent in full — an omitted title is not kept. |
additionalProperties: false; required: ["title","blocks"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amenities |
array of string (fields) | No | Amenity codes the home offers; replaces the whole list. Empty offers none. uniqueItems: true |
assigned_member_id |
string or null | No | Member who looks after the home; their assigned access shows its stays. |
assigned_team_id |
string or null | No | Team who look after the home, such as cleaners. |
bathrooms |
number or null | No | Whole and half baths, such as 1.5. maximum: 50; minimum: 0; multipleOf: 0.5 |
bedrooms |
integer or null | No | Bedrooms; 0 is a studio. maximum: 50; minimum: 0 |
beds |
integer or null | No | maximum: 50; minimum: 1 |
cancellation_policy |
string or null | No | Policy shown to guests for stays under 28 nights. It does not refund by itself. enum: ["flexible","moderate","limited","firm","strict",null] |
check_in_time |
string | Yes | Local 24-hour time guests may arrive from, in the location’s timezone. pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
check_out_time |
string | Yes | Local 24-hour time guests leave by. pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
location_id |
string | Yes | |
long_term_cancellation_policy |
string or null | No | Policy shown to guests for stays of 28 nights or more. enum: ["firm","strict",null] |
max_guests |
integer | Yes | maximum: 99; minimum: 1 |
min_nights |
integer | No | Default minimum nights; individual nights may set their own. maximum: 365; minimum: 1 |
property_type |
string or null | No | Airbnb property type, one the property_type_group offers. Null with property_type_group when not said. enum: ["apartment","condominium","serviced_apartment","loft","house","townhouse","bungalow","cabin","chalet","earthhouse","hut","lighthouse","villa","dome","cottage","farmstay","houseboat","tiny_house","guesthouse","private_suite","boat","castle","cave","igloo","island","plane","rv","tent","tipi","train","treehouse","yurt","other","barn","campsite","windmill","bus","holiday_park","ranch","religious_building","riad","shipping_container","tower","bnb","nature_eco_lodge","boutique_hotel","hostel","aparthotel","hotel","resort",null] |
property_type_group |
string or null | No | Airbnb's property group: apartments (Apartment: apartment, condominium, serviced_apartment, loft); houses (House: house, townhouse, bungalow, cabin, chalet, earthhouse, hut, lighthouse, villa, dome, cottage, farmstay, houseboat, tiny_house); secondary_units (Secondary unit: guesthouse, private_suite, farmstay); unique_homes (Unique space: boat, castle, cave, earthhouse, hut, igloo, island, lighthouse, plane, rv, tent, tipi, train, treehouse, yurt, other, dome, barn, campsite, farmstay, houseboat, tiny_house, windmill, bus, holiday_park, ranch, religious_building, riad, shipping_container, tower); bnb (Bed and breakfast: bnb, nature_eco_lodge, farmstay); boutique_hotels_and_more (Boutique hotel: boutique_hotel, nature_eco_lodge, hostel, serviced_apartment, aparthotel, hotel, resort). Set with property_type, both or neither. enum: ["apartments","houses","secondary_units","unique_homes","bnb","boutique_hotels_and_more",null] |
additionalProperties: false; required: ["location_id","check_in_time","check_out_time","max_guests"]
array of object fields
Value: array of object.
maxItems: 250; minItems: 1
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | The merchant sale switch. Not visibility and not stock: a disabled product is not sold out. |
admin_edit_url |
string or null | No | The dashboard editor for this product, on the platform host. |
booking |
object or null (fields) | No | required: ["duration_minutes","default_capacity","confirmation_mode","online_payment_required","held_online"] |
booking_readiness |
object or null (fields) | No | required: ["ready","missing"] |
collections |
array of object (fields) | Yes | |
created_at |
string | Yes | |
description |
string | Yes | |
details |
object (fields) | Yes | additionalProperties: false |
gallery |
array of object (fields) | No | |
id |
string | Yes | |
image |
object or null (fields) | No | required: ["asset_id","kind","public_url","status"] |
kind |
string | Yes | enum: ["dish","experience","service","item","stay"] |
locations |
array of object (fields) | Yes | |
marketing_features |
array of string (fields) | No | |
metadata |
object | No | additionalProperties: {"type":"string"} |
name |
string | Yes | |
options |
array of object (fields) | Yes | |
order_url |
string or null | No | |
page |
object or null (fields) | No | The source page this product owns, or null. Edit its content with the site-page tools; its binding is the page's product_id. required: ["id","path","title"] |
public_url |
string or null | No | |
publications |
array of object (fields) | Yes | |
slug |
string | Yes | |
source |
string | Yes | enum: ["manual","template","ai","import","copy"] |
stay |
object or null (fields) | No | Non-null exactly for a place to stay: its one location and stay settings (arrival, departure, guests, minimum nights, who looks after it, what it is and offers, its cancellation policies). Guest-facing house rules are the house_rules detail. required: ["location_id","check_in_time","check_out_time","max_guests","min_nights","assigned_member_id","assigned_team_id","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy"] |
tax_code |
string or null | No | |
unit_label |
string or null | No | |
updated_at |
string | Yes | |
variants |
array of object (fields) | Yes |
required: ["id","kind","name","slug","description","active","options","variants","details","publications","locations","collections","source","created_at","updated_at"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
by_kind |
object (fields) | Yes | additionalProperties: false; required: ["dish","experience","service","item","stay"] |
total |
integer | Yes | minimum: 0 |
additionalProperties: false; required: ["total","by_kind"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
featured |
boolean | No | |
kind |
string | Yes | enum: ["dish","experience","service","item","stay","all"] |
location_id |
string | No | |
organization_id |
string | Yes | |
published_only |
boolean | Yes | |
view |
string | Yes | const: "catalog" |
additionalProperties: false; required: ["view","organization_id","kind","published_only"]
array of object fields
Value: array of object.
maxItems: 200
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
created |
integer | Yes | |
existing |
integer | Yes | |
skipped |
array of object (fields) | Yes |
required: ["created","existing","skipped"]
array of string fields
Value: array of string.
maxItems: 2000
Array items: string.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string or null | No | One organization member for provider scheduling. Clear assigned_team_id when choosing a member. |
assigned_team_id |
string or null | No | Better Auth team whose available members can host bookings. Clear assigned_member_id when choosing a team. |
confirmation_mode |
string | Yes | instant confirms immediately (default); review waits for staff approval. default: "instant"; enum: ["instant","review"] |
default_capacity |
integer or null | Yes | minimum: 0 |
duration_minutes |
integer or null | Yes | minimum: 1 |
held_online |
boolean | Yes | True holds the offering online: its times are its provider's working hours, in the provider's timezone. Requires scheduling_mode provider with an assigned member or team. |
online_payment_required |
boolean | Yes | True requires online payment when booking; false is the default and does not collect online. default: false |
organization_id |
string | No | |
product_id |
string | No | |
scheduling_mode |
string | No | enum: ["legacy","provider"] |
required: ["duration_minutes","default_capacity","confirmation_mode","online_payment_required","held_online"]
array of object fields
Value: array of object.
maxItems: 30; minItems: 1
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
maxItems: 3
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amenities |
array of string (fields) | No | Amenity codes the home offers; replaces the whole list. Empty offers none. uniqueItems: true |
assigned_member_id |
string or null | No | Member who looks after the home; their assigned access shows its stays. |
assigned_team_id |
string or null | No | Team who look after the home, such as cleaners. |
bathrooms |
number or null | No | Whole and half baths, such as 1.5. maximum: 50; minimum: 0; multipleOf: 0.5 |
bedrooms |
integer or null | No | Bedrooms; 0 is a studio. maximum: 50; minimum: 0 |
beds |
integer or null | No | maximum: 50; minimum: 1 |
cancellation_policy |
string or null | No | Policy shown to guests for stays under 28 nights. It does not refund by itself. enum: ["flexible","moderate","limited","firm","strict",null] |
check_in_time |
string | No | Local 24-hour time guests may arrive from, in the location’s timezone. pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
check_out_time |
string | No | Local 24-hour time guests leave by. pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
long_term_cancellation_policy |
string or null | No | Policy shown to guests for stays of 28 nights or more. enum: ["firm","strict",null] |
max_guests |
integer | No | maximum: 99; minimum: 1 |
min_nights |
integer | No | Default minimum nights; individual nights may set their own. maximum: 365; minimum: 1 |
property_type |
string or null | No | Airbnb property type, one the property_type_group offers. Null with property_type_group when not said. enum: ["apartment","condominium","serviced_apartment","loft","house","townhouse","bungalow","cabin","chalet","earthhouse","hut","lighthouse","villa","dome","cottage","farmstay","houseboat","tiny_house","guesthouse","private_suite","boat","castle","cave","igloo","island","plane","rv","tent","tipi","train","treehouse","yurt","other","barn","campsite","windmill","bus","holiday_park","ranch","religious_building","riad","shipping_container","tower","bnb","nature_eco_lodge","boutique_hotel","hostel","aparthotel","hotel","resort",null] |
property_type_group |
string or null | No | Airbnb's property group: apartments (Apartment: apartment, condominium, serviced_apartment, loft); houses (House: house, townhouse, bungalow, cabin, chalet, earthhouse, hut, lighthouse, villa, dome, cottage, farmstay, houseboat, tiny_house); secondary_units (Secondary unit: guesthouse, private_suite, farmstay); unique_homes (Unique space: boat, castle, cave, earthhouse, hut, igloo, island, lighthouse, plane, rv, tent, tipi, train, treehouse, yurt, other, dome, barn, campsite, farmstay, houseboat, tiny_house, windmill, bus, holiday_park, ranch, religious_building, riad, shipping_container, tower); bnb (Bed and breakfast: bnb, nature_eco_lodge, farmstay); boutique_hotels_and_more (Boutique hotel: boutique_hotel, nature_eco_lodge, hostel, serviced_apartment, aparthotel, hotel, resort). Set with property_type, both or neither. enum: ["apartments","houses","secondary_units","unique_homes","bnb","boutique_hotels_and_more",null] |
additionalProperties: false
array of object fields
Value: array of object.
maxItems: 250; minItems: 1
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | The merchant sale switch. Not visibility and not stock: a disabled product is not sold out. |
admin_edit_url |
string or null | No | The dashboard editor for this product, on the platform host. |
booking |
object or null (fields) | No | required: ["duration_minutes","default_capacity","confirmation_mode","online_payment_required","held_online"] |
booking_readiness |
object or null (fields) | No | required: ["ready","missing"] |
channel_push |
object or null (fields) | Yes | |
collections |
array of object (fields) | Yes | |
created_at |
string | Yes | |
description |
string | Yes | |
details |
object (fields) | Yes | additionalProperties: false |
gallery |
array of object (fields) | No | |
id |
string | Yes | |
image |
object or null (fields) | No | required: ["asset_id","kind","public_url","status"] |
kind |
string | Yes | enum: ["dish","experience","service","item","stay"] |
locations |
array of object (fields) | Yes | |
marketing_features |
array of string (fields) | No | |
metadata |
object | No | additionalProperties: {"type":"string"} |
name |
string | Yes | |
options |
array of object (fields) | Yes | |
order_url |
string or null | No | |
page |
object or null (fields) | No | The source page this product owns, or null. Edit its content with the site-page tools; its binding is the page's product_id. required: ["id","path","title"] |
public_url |
string or null | No | |
publications |
array of object (fields) | Yes | |
slug |
string | Yes | |
source |
string | Yes | enum: ["manual","template","ai","import","copy"] |
stay |
object or null (fields) | No | Non-null exactly for a place to stay: its one location and stay settings (arrival, departure, guests, minimum nights, who looks after it, what it is and offers, its cancellation policies). Guest-facing house rules are the house_rules detail. required: ["location_id","check_in_time","check_out_time","max_guests","min_nights","assigned_member_id","assigned_team_id","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy"] |
tax_code |
string or null | No | |
unit_label |
string or null | No | |
updated_at |
string | Yes | |
variants |
array of object (fields) | Yes |
required: ["id","kind","name","slug","description","active","options","variants","details","publications","locations","collections","source","created_at","updated_at","channel_push"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
busy_checked_at |
string or null | No | |
busy_error |
string or null | No | |
busy_from |
string or null | No | |
busy_until |
string or null | No | |
calendar_account_id |
string or null | No | |
calendar_conflict_count |
integer | No | |
calendar_conflicts |
array of object (fields) | No | |
calendar_ids |
array of string (fields) | No | |
calendar_status |
string | Yes | enum: ["internal","disconnected","error","stale","ready"] |
member_id |
string | Yes | |
organization_id |
string | Yes | |
public_approved |
integer | No | enum: [0,1] |
public_bio |
string or null | No | |
public_name |
string or null | No | |
public_photo_url |
string or null | No | |
time_off |
array of object (fields) | Yes | |
timezone |
string | Yes | |
updated_at |
string | Yes | |
updated_by |
string | No | |
weekly |
array of object (fields) | Yes |
additionalProperties: false; required: ["member_id","organization_id","timezone","updated_at","weekly","time_off","calendar_status"]
See schema fields
Value: See schema.
required: ["scheduling"]
See schema fields
Value: See schema.
required: ["members"]
array of string fields
Value: array of string.
maxItems: 10
Array items: string.
array of object fields
Value: array of object.
maxItems: 100
Array items: object.
array of object fields
Value: array of object.
maxItems: 28
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
minItems: 1
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
adults |
integer | Yes | |
arrival_time |
string or null | Yes | pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
cancellation_policy |
string or null | Yes | The home cancellation policy the guest booked under on the site; it decides what their own cancellation refunds. Null for a stay not paid on the site. enum: ["flexible","moderate","limited","firm","strict","long_term_firm","long_term_strict",null] |
cancellation_reason |
string or null | Yes | |
cancelled_at |
string or null | Yes | |
channel |
string | Yes | enum: ["airbnb","vrbo","direct"] |
channel_booking_id |
string or null | Yes | |
channel_push |
object or null (fields) | No | What the home's connected channel took from this change: null when the home has no channel; needs_review with the reason when the channel did not take it. |
check_in_date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
check_out_date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
children |
integer | Yes | |
created_at |
string | Yes | minLength: 1 |
currency |
string | Yes | minLength: 1 |
external_booking_id |
string or null | Yes | |
guest_email |
string or null | Yes | |
guest_name |
string or null | Yes | |
guest_phone |
string or null | Yes | |
guest_surname |
string or null | Yes | |
id |
string | Yes | minLength: 1 |
infants |
integer | Yes | |
location_id |
string | Yes | minLength: 1 |
notes |
string or null | Yes | |
online_payment |
object or null (fields) | Yes | The Stripe payment the guest made when booking this stay on the site; null for a stay booked any other way. paid_minor counts it net of refunds. required: ["payment_id","state","currency","amount_minor","captured_minor","refunded_minor","receipt_url","created_at"] |
overbooked |
boolean | Yes | |
owner |
string | Yes | enum: ["app","channel"] |
paid_minor |
integer | Yes | |
payment_status |
string or null | Yes | enum: ["unpaid","partial","paid","overpaid",null] |
payments |
array of object (fields) | Yes | |
product_id |
string | Yes | minLength: 1 |
provider |
string or null | Yes | |
request_id |
string or null | Yes | The guest conversation about this stay, for get_guest_conversation and reply_to_guest. Null until a named guest with email or phone opens one; an existing conversation is retained. |
status |
string | Yes | enum: ["pending","confirmed","cancelled"] |
timezone |
string | Yes | minLength: 1 |
total_minor |
integer | Yes | |
updated_at |
string | Yes | minLength: 1 |
user_id |
string or null | Yes | |
version |
integer | Yes |
required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at","payments","online_payment","paid_minor","payment_status"]
object or null fields
Value: object or null.
anyOf: shape 1, shape 2, shape 3.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
archived |
boolean | Yes | |
entries |
array of object (fields) | Yes | |
guest |
object (fields) | Yes | required: ["name","email","phone"] |
operational_record |
object or null (fields) | Yes | For a stay, check_in_date and check_out_date are its nights and id is the stay for get_stay; its starts_at and ends_at only order and archive the conversation. required: ["id","kind","status","starts_at","ends_at","timezone","party_size","check_in_date","check_out_date"] |
participant_label |
string | Yes | |
reply_channel |
string | Yes | enum: ["email","airbnb"] |
request_id |
string | Yes | |
state |
string or null | Yes | |
type |
string | Yes | enum: ["contact","reservation","booking","stay"] |
updated_at |
string | Yes |
required: ["request_id","type","state","archived","updated_at","participant_label","reply_channel","guest","operational_record","entries"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
by_status |
object | Yes | Count of reservations per status. |
total |
number | Yes |
required: ["total","by_status"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
download_url |
string | Yes | |
file_id |
string | Yes | |
file_name |
string | No | |
mime_type |
string | No |
required: ["download_url","file_id"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaign |
string or null | Yes | |
collectedMinor |
number | Yes | |
content |
string or null | Yes | |
currency |
string | Yes | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"] |
medium |
string or null | Yes | |
netMinor |
number | Yes | |
purchases |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
refundedMinor |
number | Yes | |
source |
string or null | Yes |
additionalProperties: false; required: ["source","medium","campaign","content","currency","collectedMinor","refundedMinor","netMinor","purchases"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaign |
string or null | Yes | |
content |
string or null | Yes | |
convertingSessions |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
medium |
string | Yes | |
outcomeEvents |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
sessionConversionRate |
number or null | Yes | |
sessions |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
source |
string | Yes |
additionalProperties: false; required: ["source","medium","campaign","content","sessions","outcomeEvents","convertingSessions","sessionConversionRate"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
bookings |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
currency |
string or null (fields) | Yes | |
locationId |
string or null | Yes | |
productId |
string or null | Yes | |
productName |
string or null | Yes | |
quotedValueMinor |
number | Yes | |
valuedBookings |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["productId","productName","locationId","currency","bookings","valuedBookings","quotedValueMinor"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
city |
string | Yes | |
countryCode |
string | Yes | |
region |
string or null | Yes | |
views |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["city","region","countryCode","views"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
conversionType |
string or null | Yes | |
convertingSessions |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
distinctEntities |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
eventName |
string | Yes | |
events |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
nonbrowserEvents |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
sessionConversionRate |
number or null | Yes | |
stage |
string | Yes |
additionalProperties: false; required: ["eventName","stage","conversionType","events","distinctEntities","convertingSessions","nonbrowserEvents","sessionConversionRate"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
country |
string | Yes | |
countryCode |
string | Yes | |
percentOfTotal |
number | Yes | |
views |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["country","countryCode","views","percentOfTotal"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
date |
string | Yes | |
events |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["date","events"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
avgDuration |
number | Yes | minimum: 0 |
date |
string | Yes | |
pageViews |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
sessions |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["date","pageViews","sessions","avgDuration"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
percentOfTotal |
number | Yes | |
type |
string | Yes | |
views |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["type","views","percentOfTotal"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collectedMinor |
number | Yes | |
currency |
string | Yes | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"] |
netMinor |
number | Yes | |
refundedMinor |
number | Yes |
additionalProperties: false; required: ["currency","collectedMinor","refundedMinor","netMinor"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaign |
string or null | Yes | |
content |
string or null | Yes | |
distinctEntities |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
eventName |
string | Yes | |
events |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
medium |
string | Yes | |
source |
string | Yes |
additionalProperties: false; required: ["source","medium","campaign","content","eventName","events","distinctEntities"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
percentOfTotal |
number | Yes | |
source |
string | Yes | |
views |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["source","views","percentOfTotal"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
path |
string | Yes | |
percentOfTotal |
number | Yes | |
views |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
additionalProperties: false; required: ["path","views","percentOfTotal"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
basis |
string | Yes | enum: ["quoted","purchase","refund"] |
collectedMinor |
number or null | Yes | |
currency |
string | Yes | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"] |
eventName |
string | Yes | |
events |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
valueMinor |
number | Yes |
additionalProperties: false; required: ["eventName","basis","currency","events","valueMinor","collectedMinor"]
string fields
Value: string.
enum: ["kind","event_name","stage","surface","page_path","source_path","page_id","page_type","product_id","variant_id","location_id","locale","entity_type","entity_id","session_id","visitor_id","device","country","region","city","currency","value_basis","conversion_type","attribution_basis","actor_id","member_id","tenant_organization_id","ga4_delivery_status","source","medium","campaign","content","term","referrer_host","gclid","gbraid","wbraid","fbclid","msclkid"]
string fields
Value: string.
enum: ["events","page_views","interactions","outcomes","sessions","visitors","entities","quoted_value_minor","purchase_value_minor","collected_minor","refunded_minor","net_collected_minor","converting_sessions","eligible_sessions","session_conversion_rate","checkouts_started","payments_paid","refunds_sent","checkout_conversion_rate","refund_rate","payments_volume_minor","avg_decision_seconds"]
string fields
Value: string.
enum: ["occurred_at_desc","occurred_at_asc"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
direction |
string | No | enum: ["asc","desc"] |
metric |
string | No |
additionalProperties: false
object fields
Value: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
#/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_ai_assistance or #/$defs/content_cta or #/$defs/content_callout (fields) | Yes | |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | enum: ["heading","markdown","image","gallery","video","faq","how_to","divider","ai_assistance","cta","callout"] |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7, shape 8, shape 9, shape 10, shape 11.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
name |
string | Yes | |
slug |
string | Yes |
additionalProperties: false; required: ["id","name","slug"]
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | Yes | |
asset_id |
string | Yes | |
height |
number or null | Yes | |
kind |
string or null | Yes | |
public_url |
string or null | Yes | |
thumbnail_url |
string or null | Yes | |
width |
number or null | Yes |
additionalProperties: false; required: ["asset_id","public_url","thumbnail_url","kind","alt_text","width","height"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
admin_edit_url |
string or null | Yes | |
category |
object or null (fields) | Yes | additionalProperties: false; required: ["id","name","slug"] |
collection |
string | Yes | enum: ["blog","docs"] |
cover |
object or null (fields) | Yes | additionalProperties: false; required: ["asset_id","public_url","thumbnail_url","kind","alt_text","width","height"] |
created_at |
string | Yes | |
edit_url |
string or null | Yes | |
excerpt |
string or null | Yes | |
id |
string | Yes | |
preview_url |
string or null | Yes | |
public_path |
string or null | Yes | |
public_url |
string or null | Yes | |
published |
boolean | Yes | |
published_at |
string or null | Yes | |
seo_keywords |
string or null | Yes | |
slug |
string | Yes | |
sort_order |
integer | Yes | |
status |
string | Yes | enum: ["draft","published"] |
title |
string | Yes | |
updated_at |
string | Yes | |
view_url |
string or null | Yes | |
visibility |
string | Yes | enum: ["listed","unlisted"] |
additionalProperties: false; required: ["id","title","slug","excerpt","collection","category","sort_order","seo_keywords","published","published_at","status","visibility","created_at","updated_at","cover","admin_edit_url","edit_url","public_path","public_url","preview_url","view_url"]
string fields
Value: string.
string fields
Value: string.
minLength: 1
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assigned_member_id |
string or null | Yes | |
ends_at |
string | Yes | minLength: 1 |
guest |
object or null (fields) | Yes | required: ["name","email"] |
is_complete |
boolean | Yes | |
location_id |
string or null | Yes | |
operational_booking_id |
string | Yes | minLength: 1 |
party_size |
integer | Yes | |
product_id |
string | Yes | minLength: 1 |
product_session_id |
string | Yes | minLength: 1 |
product_variant_id |
string or null | Yes | |
provenance |
object or null (fields) | Yes | required: ["source","external_reference","guest_acknowledgement"] |
request_id |
string or null | Yes | |
starts_at |
string | Yes | minLength: 1 |
status |
string | Yes | enum: ["pending","confirmed","cancelled"] |
timezone |
string | Yes | minLength: 1 |
updated_at |
string | Yes | minLength: 1 |
user_id |
string or null | Yes |
required: ["operational_booking_id","request_id","product_id","product_variant_id","product_session_id","status","is_complete","party_size","user_id","updated_at","assigned_member_id","location_id","starts_at","ends_at","timezone","guest","provenance"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
text |
string | Yes |
additionalProperties: false; required: ["text"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
editor_mode |
string | Yes | enum: ["rich","source"] |
markdown |
string | Yes | Markdown. |
title |
string or null | No |
additionalProperties: false; required: ["markdown","editor_mode"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
caption |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
caption |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
caption |
string or null | No | |
title |
string | Yes | |
upload_date |
string or null | No | |
url |
string | Yes |
additionalProperties: false; required: ["url","title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
source |
string | Yes | enum: ["page_qa","organization_qa"] |
title |
string or null | No |
additionalProperties: false; required: ["source"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
estimated_time |
string or null | No | |
label |
string or null | No | |
steps |
array of object (fields) | Yes | minItems: 1 |
supply_items |
array of string (fields) | No | |
title |
string or null | No | |
tool_items |
array of string (fields) | No |
additionalProperties: false; required: ["steps"]
object fields
Value: object.
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
description |
string or null | No | |
label |
string or null | No | |
secondary_label |
string or null | No | |
secondary_url |
string or null | No | |
title |
string or null | No | |
url |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
description |
string or null | No | |
label |
string or null | No | |
secondary_label |
string or null | No | |
secondary_url |
string or null | No | |
title |
string or null | No | |
url |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
description |
string or null | No | |
label |
string or null | No | |
notice |
string or null | No | |
price_line |
string or null | No | |
secondary_label |
string or null | No | |
secondary_url |
string or null | No | |
title |
string or null | No | |
url |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
badge |
string or null | No | |
body |
string or null | No | |
buttons |
array of object (fields) | No | |
items |
array of object (fields) | No | |
title |
string or null | No | |
tone |
string or null | No | enum: ["neutral","info","success","warning","danger",null] |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
cta_label |
string or null | No | |
cta_url |
string or null | No | |
eyebrow |
string or null | No | |
rotating_accents |
array of string (fields) | No | |
secondary_label |
string or null | No | |
secondary_url |
string or null | No | |
subtitle |
string or null | No | |
title |
string | Yes |
additionalProperties: false; required: ["title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
buttons |
array of object (fields) | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
calculator |
object (fields) | No | |
cta_label |
string or null | No | |
cta_url |
string or null | No | |
description |
string or null | No | |
eyebrow |
string or null | No | |
items |
array of object (fields) | No | |
layout |
string or null | No | enum: ["cards","pictures",null] |
limit |
integer | No | minimum: 1 |
source |
string or null | No | enum: ["manual","organization_posts","calculator","billing_plans","billing_features",null] |
title |
string or null | No | |
title_muted |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
problem_items |
array of object (fields) | No | |
problem_label |
string or null | No | |
problem_title |
string or null | No | |
solution_items |
array of object (fields) | No | |
solution_label |
string or null | No | |
solution_title |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
items |
array of object (fields) | No | |
label |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cta_label |
string or null | No | |
cta_url |
string or null | No | |
description |
string or null | No | |
items |
array of object (fields) | No | |
label |
string or null | No | |
prompt_heading |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
items |
array of object (fields) | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
items |
array of object (fields) | No | |
pin_label |
string or null | No | |
subtitle |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cta_label |
string or null | No | |
cta_url |
string or null | No | |
items |
array of object (fields) | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
items |
array of object (fields) | No | |
title |
string or null | No | |
upload_date |
string or null | No | |
video_title |
string or null | No | |
video_url |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string or null | No | |
caption |
string or null | No | |
example_type |
string or null | No | enum: ["websites","posts",null] |
eyebrow |
string or null | No | |
items |
array of object (fields) | No | |
label |
string or null | No | |
title |
string or null | No | |
url |
string or null | No |
additionalProperties: false; required: []
object fields
Value: object.
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
items |
array of object (fields) | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
destination |
string or null | No | |
tiers |
array of object (fields) | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
description |
string or null | No | |
page_ids |
array of string (fields) | Yes | minItems: 1; uniqueItems: true |
title |
string or null | No |
additionalProperties: false; required: ["page_ids"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_id |
string or null | No | |
description |
string or null | No | |
product_ids |
array of string (fields) | No | uniqueItems: true |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
location_ids |
array of string (fields) | No | uniqueItems: true |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
call_to_action |
object (fields) | No | additionalProperties: false; required: [] |
description |
string or null | No | |
limit |
integer | No | maximum: 12; minimum: 1 |
location_id |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
intro |
string or null | No | |
label |
string or null | No | |
prompts |
array of object (fields) | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | No | |
asset_id |
string | Yes | |
file_name |
string or null | No | |
height |
number or null | No | |
kind |
string or null | No | |
public_url |
string or null | No | |
slot |
string (fields) | Yes | |
sort_order |
number or null | No | |
thumbnail_url |
string or null | No | |
width |
number or null | No |
additionalProperties: false; required: ["asset_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object | Yes | |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | enum: ["heading","markdown","image","gallery","video","faq","how_to","divider","cta","contact_cta","booking_cta","callout","hero","button_group","feature_grid","comparison","stat_grid","workflow_grid","showcase","language_reach","steps","video_feature","media_text","contact_form","team_grid","testimonial_grid","donation_choices","page_grid","product_grid","location_grid","social_posts","ai_assistance"] |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7, shape 8, shape 9, shape 10, shape 11, shape 12, shape 13, shape 14, shape 15, shape 16, shape 17, shape 18, shape 19, shape 20, shape 21, shape 22, shape 23, shape 24, shape 25, shape 26, shape 27, shape 28, shape 29, shape 30, shape 31, shape 32.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
#/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_cta or #/$defs/content_contact_cta or #/$defs/content_booking_cta or #/$defs/content_callout or #/$defs/content_hero or #/$defs/content_button_group or #/$defs/content_feature_grid or #/$defs/content_comparison or #/$defs/content_stat_grid or #/$defs/content_workflow_grid or #/$defs/content_showcase or #/$defs/content_language_reach or #/$defs/content_steps or #/$defs/content_video_feature or #/$defs/content_media_text or #/$defs/content_contact_form or #/$defs/content_team_grid or #/$defs/content_testimonial_grid or #/$defs/content_donation_choices or #/$defs/content_page_grid or #/$defs/content_product_grid or #/$defs/content_location_grid or #/$defs/content_social_posts or #/$defs/content_ai_assistance (fields) | Yes | |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | enum: ["heading","markdown","image","gallery","video","faq","how_to","divider","cta","contact_cta","booking_cta","callout","hero","button_group","feature_grid","comparison","stat_grid","workflow_grid","showcase","language_reach","steps","video_feature","media_text","contact_form","team_grid","testimonial_grid","donation_choices","page_grid","product_grid","location_grid","social_posts","ai_assistance"] |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7, shape 8, shape 9, shape 10, shape 11, shape 12, shape 13, shape 14, shape 15, shape 16, shape 17, shape 18, shape 19, shape 20, shape 21, shape 22, shape 23, shape 24, shape 25, shape 26, shape 27, shape 28, shape 29, shape 30, shape 31, shape 32.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | minLength: 1 |
updated_at |
string | Yes | minLength: 1 |
required: ["id","updated_at"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
path |
string | Yes | |
public_url |
string or null | Yes | |
recipe |
string or null | Yes |
required: ["path","recipe","public_url"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
admin_edit_url |
string or null | Yes | |
id |
string | Yes | minLength: 1 |
locale |
string | Yes | minLength: 1 |
page_id |
string | Yes | minLength: 1 |
page_type |
string | Yes | enum: ["custom","recipe","legal","system"] |
path |
string | Yes | |
product_id |
string or null | Yes | |
recipe |
string or null | Yes | |
removable |
boolean | Yes | |
sort_order |
number | Yes | |
title |
string | Yes | |
updated_at |
string | Yes | minLength: 1 |
additionalProperties: false; required: ["id","page_id","locale","path","title","page_type","recipe","sort_order","updated_at","product_id","removable","admin_edit_url"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | True when this is the currently active MCP location context. |
id |
string | Yes | |
place_name |
string or null | No | The neighbourhood this location's address names, or its town. Derived from the address; call get_location for the address itself. |
slug |
string | Yes | |
status |
string | Yes | |
title |
string | Yes |
required: ["id","slug","title","status","active"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | True when this is the currently active MCP organization context. |
id |
string | Yes | |
name |
string or null | No | |
slug |
string or null | No |
required: ["id","active"]
string fields
Value: string.
maxLength: 90
string fields
Value: string.
maxLength: 30
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
match_type |
string | No | enum: ["EXACT","PHRASE","BROAD"] |
text |
string | Yes |
required: ["text"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
name |
string | Yes | |
status |
string | Yes |
required: ["id","name","status"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
matchType |
string | Yes | |
status |
string or null | No | |
text |
string | Yes |
required: ["text","matchType"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
budgetAmountMicros |
number | Yes | |
budgetId |
string or null | No | |
channelType |
string | Yes | |
clicks |
number | Yes | |
conversions |
number | Yes | |
costMicros |
number | Yes | |
id |
string | Yes | |
impressions |
number | Yes | |
name |
string | Yes | |
status |
string | Yes |
required: ["id","name","status","channelType","budgetAmountMicros","clicks","impressions","costMicros","conversions"]
null fields
Value: null.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
delayMinutes |
number | Yes | const: 5 |
productIds |
array of string (fields) | Yes | maxItems: 100; minItems: 1; uniqueItems: true |
trigger |
string | Yes | const: "booking_received" |
additionalProperties: false; required: ["trigger","delayMinutes","productIds"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
localTime |
string | Yes | pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
offsetDays |
integer | Yes | maximum: 7; minimum: -7 |
productIds |
array of string (fields) | Yes | maxItems: 100; minItems: 1; uniqueItems: true |
trigger |
string | Yes | enum: ["check_in","check_out"] |
additionalProperties: false; required: ["trigger","offsetDays","localTime","productIds"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
string | Yes | minLength: 1 |
city |
string or null | Yes | |
country |
string | Yes | pattern: "^[A-Z]{2}$" |
state |
string or null | Yes | |
zip_code |
string or null | Yes |
required: ["address","city","state","country","zip_code"]
array of string fields
Value: array of string.
uniqueItems: true
Array items: string.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
provider |
string | Yes | enum: ["channex"] |
status |
string | Yes | enum: ["importing","connected","disconnected"] |
required: ["provider","status"]
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount_minor |
integer | Yes | |
captured_minor |
integer | Yes | |
created_at |
string | Yes | minLength: 1 |
currency |
string | Yes | minLength: 1 |
payment_id |
string | Yes | minLength: 1 |
receipt_url |
string or null | Yes | |
refunded_minor |
integer | Yes | |
state |
string | Yes | enum: ["pending","captured","failed","recovery","refunded"] |
required: ["payment_id","state","currency","amount_minor","captured_minor","refunded_minor","receipt_url","created_at"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
details |
string or null | Yes | Required for additional. maxLength: 500; minLength: 1 |
task |
string | Yes | enum: ["gather_towels","throw_trash","turn_off","lock_up","return_keys","additional"] |
additionalProperties: false; required: ["task","details"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
localization |
object or null (fields) | Yes | additionalProperties: false; required: ["values"] |
location_id |
string or null | Yes | |
source |
object (fields) | Yes | additionalProperties: false; required: ["name","description"] |
additionalProperties: false; required: ["id","location_id","source","localization"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
kind |
string | Yes | enum: ["dish","experience","service","item","stay"] |
localization |
object or null (fields) | Yes | additionalProperties: false; required: ["values","route_path"] |
source |
object (fields) | Yes | additionalProperties: false; required: ["name","description","marketing_features","unit_label","details"] |
additionalProperties: false; required: ["id","kind","source","localization"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
created_at |
string | Yes | |
created_by_user_id |
string | Yes | |
id |
string | Yes | |
locale |
string | Yes | |
organization_id |
string | Yes | |
resource_id |
string | Yes | |
resource_type |
string | Yes | enum: ["organization","business_location","product","collection","article_category","media_asset"] |
route_path |
string or null | Yes | |
updated_at |
string | Yes | |
updated_by_user_id |
string | Yes | |
values |
object | Yes |
additionalProperties: false; required: ["id","organization_id","locale","created_at","updated_at","resource_type","resource_id","values","route_path","created_by_user_id","updated_by_user_id"]
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
content_blocks |
array of object (fields) | Yes | |
created_at |
string | Yes | |
id |
string | Yes | |
kind |
string | Yes | enum: ["page","article","social_post","qa"] |
locale |
string | Yes | |
metadata |
object | Yes | additionalProperties: true |
organization_id |
string | Yes | |
path |
string or null | Yes | |
root_id |
string | Yes | |
row_role |
string | Yes | const: "representation" |
seo_keywords |
string or null | Yes | |
slug |
string or null | Yes | |
summary |
string or null | Yes | |
title |
string or null | Yes | |
updated_at |
string | Yes |
additionalProperties: false; required: ["id","organization_id","locale","created_at","updated_at","kind","row_role","root_id","title","summary","slug","path","seo_keywords","metadata","content_blocks"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
created_at |
string | Yes | |
id |
string | Yes | |
is_source |
boolean | Yes | |
label |
string or null | Yes | |
locale |
string | Yes | |
organization_id |
string | Yes | |
status |
string | Yes | enum: ["published","disabled"] |
updated_at |
string | Yes |
additionalProperties: false; required: ["id","organization_id","locale","label","is_source","status","created_at","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
addressLines |
array of string (fields) | No | |
administrativeArea |
string | No | |
locality |
string | No | |
sublocality |
string | No |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
disclaimer |
string | No | |
footer_disclaimer |
string | No | |
service_area |
string | No |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cta_label |
string | No |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
allergens |
array of string (fields) | No | Allergens the merchant states this dish contains. maxItems: 100; uniqueItems: true |
cancellation_policy |
string | No | The merchant’s stated cancellation terms, displayed publicly; this text does not automate refunds. maxLength: 10000; minLength: 1; pattern: "\S" |
care_instructions |
string | No | How to care for the item, shown in its details. maxLength: 10000; minLength: 1; pattern: "\S" |
dietary_notes |
array of string (fields) | No | Merchant-stated dietary facts displayed with a dish. maxItems: 100; uniqueItems: true |
dimensions |
string | No | Item measurements including their units, shown in its details. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
house_rules |
string | No | The host’s rules for guests staying in the home, shown with the listing. maxLength: 10000; minLength: 1; pattern: "\S" |
included_items |
array of string (fields) | No | Items or work included in the stated price, shown in their own public section. maxItems: 100; uniqueItems: true |
ingredients |
array of string (fields) | No | Ingredients shown in the dish details. maxItems: 100; uniqueItems: true |
materials |
array of string (fields) | No | Materials the item is made from, shown in its details. maxItems: 100; uniqueItems: true |
meeting_point |
string | No | Instructions shown in the meeting section; meeting mode and video links are set in scheduling. maxLength: 10000; minLength: 1; pattern: "\S" |
noodle |
array of string (fields) | No | Authored noodle information shown as dish facts; these do not establish purchasable variants. maxItems: 100; uniqueItems: true |
preparation |
string | No | Preparation instructions shown to customers before a session or appointment. maxLength: 10000; minLength: 1; pattern: "\S" |
pricing_note |
string | No | An explicitly stated price such as Market price; use only when no numeric price is set. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
sizes |
array of string (fields) | No | Authored serving information; priced choices belong in variants. maxItems: 100; uniqueItems: true |
soup |
array of string (fields) | No | Authored soup information shown with the dish. maxItems: 100; uniqueItems: true |
tagline |
string | No | A short sentence shown below the product title. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
toppings |
array of string (fields) | No | Authored topping information; priced choices belong in variants. maxItems: 100; uniqueItems: true |
what_to_bring |
array of string (fields) | No | Items customers should bring, shown in the preparation section. maxItems: 100; uniqueItems: true |
additionalProperties: false
array of string fields
Value: array of string.
Array items: string.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
call_to_action |
object (fields) | No | additionalProperties: false; required: ["label"] |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
policy |
object (fields) | No | additionalProperties: false |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
resource_id |
string | Yes | |
route_path |
null | No | |
values |
object (fields) | Yes | additionalProperties: false |
additionalProperties: false; required: ["resource_id","values"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
assignedMemberId |
string or null | No | |
assignedMemberName |
string or null | No | |
dayKey |
string | Yes | |
endsAt |
string or null | Yes | |
guestImageUrl |
string or null | No | |
id |
string | Yes | |
kind |
string | Yes | enum: ["reservation","booking","post","stay"] |
locationId |
string or null | Yes | |
locationTitle |
string or null | No | |
operationalBookingId |
string or null | Yes | |
operationalReservationId |
string or null | Yes | |
organizationId |
string | Yes | |
partySize |
integer or null | Yes | |
requestId |
string or null | Yes | |
resourceImageUrl |
string or null | No | |
resourceTitle |
string or null | No | |
showTimeZone |
boolean | No | |
startsAt |
string | Yes | |
status |
string | Yes | |
stayId |
string or null | Yes | For a stay row, the stay to read with get_stay; one stay is its arrival and its departure. |
stayMoment |
string or null | Yes | enum: ["arrival","departure",null] |
subtitle |
string or null | No | |
timeZone |
string | Yes | |
title |
string | Yes | |
to |
string | No |
required: ["id","kind","requestId","operationalBookingId","operationalReservationId","stayId","stayMoment","startsAt","endsAt","dayKey","timeZone","title","status","organizationId","locationId","partySize"]
array of string fields
Value: array of string.
minItems: 1
Array items: string.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
periods |
array of object (fields) | Yes |
additionalProperties: false; required: ["periods"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
null or object fields
Value: null or object.
null or array of object fields
Value: null or array of object.
string fields
Value: string.
enum: ["reservation","booking","post","stay"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
date |
string | Yes | |
location_id |
string | Yes | |
note |
string or null | No | |
reason |
string | Yes | enum: ["inactive","closure","dated_hours","regular_hours"] |
required: ["date","location_id","reason"]
array of string fields
Value: array of string.
Array items: string.
array of string fields
Value: array of string.
Array items: string.
array of object fields
Value: array of object.
Array items: object.
array of string fields
Value: array of string.
Array items: string.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["organization"] |
slot |
string | Yes | enum: ["compliance_document"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["business_location"] |
slot |
string | Yes | enum: ["gallery"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["product"] |
slot |
string | Yes | enum: ["gallery"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["content_document"] |
slot |
string | Yes | enum: ["gallery"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["content_block"] |
slot |
string | Yes | enum: ["gallery"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["review_request"] |
slot |
string | Yes | enum: ["gallery"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | No | |
asset_id |
string | Yes | |
duration |
number or null | No | |
height |
number or null | No | |
kind |
string | Yes | enum: ["image","video","file"] |
mime_type |
string or null | No | |
provider |
string | No | |
public_url |
string | Yes | |
status |
string | Yes | enum: ["active"] |
thumbnail_url |
string or null | No | |
width |
number or null | No |
required: ["asset_id","kind","public_url","status"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["organization"] |
slot |
string | Yes | enum: ["logo","logo_dark","favicon","social_share","compliance_document","announcement"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["business_location"] |
slot |
string | Yes | enum: ["hero","gallery"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["product"] |
slot |
string | Yes | enum: ["image","gallery"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["collection"] |
slot |
string | Yes | enum: ["image"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["content_document"] |
slot |
string | Yes | enum: ["cover","gallery"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["content_block"] |
slot |
string (fields) | Yes |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | No | |
asset_id |
string | Yes | |
category |
string or null | No | |
created_at |
string | No | |
file_name |
string or null | No | |
kind |
string | Yes | enum: ["image","video","file"] |
provider |
string | Yes | |
public_url |
string or null | No | |
source |
string | Yes | |
status |
string | Yes | enum: ["pending","active","deleted","failed"] |
thumbnail_url |
string or null | No |
required: ["asset_id","kind","provider","source","status"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
after_asset_id |
string | No | |
asset_id |
string | Yes | |
before_asset_id |
string | No |
additionalProperties: false; required: ["asset_id"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["organization"] |
slot |
string | Yes | enum: ["logo","logo_dark","social_share","announcement"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["business_location"] |
slot |
string | Yes | enum: ["hero"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["product"] |
slot |
string | Yes | enum: ["image"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["content_document"] |
slot |
string | Yes | enum: ["cover"] |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
owner_id |
string | Yes | |
owner_type |
string | Yes | enum: ["content_block"] |
slot |
string (fields) | Yes |
additionalProperties: false; required: ["owner_type","owner_id","slot"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
x |
number | Yes | maximum: 1; minimum: 0 |
y |
number | Yes | maximum: 1; minimum: 0 |
additionalProperties: false; required: ["x","y"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
error |
string or null | Yes | |
provider |
string | Yes | |
provider_message_id |
string or null | Yes | |
status |
string | Yes |
required: ["status","provider","provider_message_id","error"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
dark |
object (fields) | No | additionalProperties: false |
light |
object (fields) | No | additionalProperties: false |
string fields
Value: string.
enum: ["source_locale","currency","timezone","subdomain"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount_minor |
integer | No | minimum: 0 |
category |
string | No | |
name |
string | Yes | minLength: 1; pattern: "\S" |
additionalProperties: false; required: ["name"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
createdAt |
string | Yes | format: "date-time" |
id |
string | Yes | |
organizationId |
string | Yes | |
role |
string | Yes | |
user |
object (fields) | Yes | required: ["id","name","email"] |
userId |
string | Yes |
required: ["id","organizationId","userId","role","createdAt","user"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | True when this is the currently active MCP organization context. |
id |
string | Yes | |
name |
string | Yes | Business name, or the subdomain slug when it has none. |
orgSlug |
string or null | No | Organization slug — combine with locationSlug from list_locations to build the dashboard URL: https://krabiclaw.com/dashboard/{orgSlug}/locations/{locationSlug} |
publicUrl |
string or null | No | |
status |
string | Yes | enum: ["active","inactive","suspended"] |
subdomain |
string or null | No |
required: ["id","name","status","active"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string | No | Emphasis, decoration and highlighted buttons. |
action |
string | No | Buttons, links and selected states. |
ground |
string | No | The page background. |
muted |
string | No | Captions, details and supporting copy. |
surface |
string | No | Cards, the header and footer, dialogs and fields. |
text |
string | No | Body copy and headings. |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
minimum |
number | Yes | |
mode |
string | Yes | |
pair |
string | Yes | |
ratio |
number | Yes |
required: ["mode","pair","ratio","minimum"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount |
integer | No | |
currency |
string | No | |
evidence_due_at |
string or null | No | |
id |
string | No | |
reason |
string | No | |
status |
string | No | |
updated_at |
string | No |
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
currency |
string | No | |
tax_behavior |
string | No | |
type |
string | No | |
unit_amount |
integer | No |
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount |
integer | Yes | |
id |
string | Yes | |
status |
string | Yes |
required: ["id","amount","status"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount |
integer | Yes | |
arrival_date |
integer | No | |
automatic |
boolean | No | |
created |
integer | No | |
currency |
string | Yes | |
dashboard_url |
string | Yes | |
id |
string | Yes | |
status |
string | Yes |
required: ["id","amount","currency","status","dashboard_url"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
captured_amount |
integer | Yes | |
currency |
string | Yes | |
disputed_amount |
integer | Yes | |
refunded_amount |
integer | Yes |
required: ["currency","captured_amount","refunded_amount","disputed_amount"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount |
integer | Yes | |
currency |
string | Yes | |
kind |
string | Yes | |
pending_delivery |
integer | Yes |
required: ["currency","kind","amount","pending_delivery"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
action_required |
boolean | Yes | |
amount |
integer | Yes | |
currency |
string | Yes | const: "USD" |
fx_quote_id |
string or null | Yes | |
id |
string | Yes | |
kind |
string | Yes | |
provider_occurred_at |
string | Yes | |
source_amount |
integer | Yes | |
source_currency |
string | Yes |
required: ["id","kind","currency","amount","source_currency","source_amount","fx_quote_id","provider_occurred_at","action_required"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_invoice |
object or null (fields) | Yes | required: ["id","status","currency","total","amount_due","amount_paid","amount_remaining","hosted_invoice_url","invoice_pdf"] |
credit_type |
object (fields) | Yes | required: ["name"] |
end_timestamp |
string or null | No | |
id |
string | Yes | |
start_timestamp |
string or null | No | |
status |
string or null | No | |
total |
number | Yes | |
type |
string or null | No |
required: ["id","total","credit_type","collection_invoice"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
action_required |
boolean | Yes | |
amount |
integer | Yes | |
billing_amount |
integer | Yes | |
billing_currency |
string | Yes | const: "USD" |
currency |
string | Yes | |
event_count |
integer | Yes | |
kind |
string | Yes |
required: ["currency","kind","event_count","amount","billing_currency","billing_amount","action_required"]
string fields
Value: string.
maxLength: 5000
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
label |
string | Yes | maxLength: 60; minLength: 1 |
url |
string | Yes | https://…, http://… or tel:+… |
additionalProperties: false; required: ["label","url"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_id |
string | Yes | minLength: 1 |
slot |
enum | Yes | enum: ["cover","gallery"] |
additionalProperties: false; required: ["asset_id","slot"]
string fields
Value: string.
maxLength: 200
object or null fields
Value: object or null.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | enum: ["facebook","instagram","discord"] |
connect_url |
string | Yes | Where a person connects or changes this account in the dashboard. |
connected |
boolean | Yes | |
connection_revision |
string or null | Yes | |
deletion_unavailable_reason |
string or null | Yes | |
problems |
array of object (fields) | Yes | |
supported_formats |
array of string (fields) | Yes | |
supported_operations |
array of string (fields) | Yes | |
target_id |
string or null | Yes | |
target_name |
string or null | Yes |
required: ["channel","connected","target_id","target_name","connection_revision","supported_formats","problems","supported_operations","deletion_unavailable_reason","connect_url"]
object fields
Value: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | enum: ["organization","facebook","instagram","discord"] |
code |
string | No | |
message |
string | No | |
public_url |
string or null | No | |
publication_id |
string | No | |
status |
string | Yes | enum: ["published","already_published","processing","failed","unknown","skipped"] |
target_id |
string | Yes |
additionalProperties: false; required: ["channel","target_id","status"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | Enable or disable sale of this product. Independent of site and location publication. |
description |
string | No | |
details |
object (fields) | No | Named customer-facing facts for the product kind. This is a complete replacement map; preserve fields to retain. pricing_note contains explicitly stated price wording and requires empty numeric prices. additionalProperties: false |
kind |
string | Yes | The customer-facing kind: dish, experience, service, item or stay (a place to stay). Determines the allowed descriptive fields; booking and stock remain separate capabilities. enum: ["dish","experience","service","item","stay"] |
marketing_features |
array of string (fields) | No | Generic selling bullets. Inclusions, preparation instructions and policies are separate details. maxItems: 15 |
metadata |
object | No | Opaque string annotations for integrations. No pricing, scheduling, stock or filtering behavior may read these. additionalProperties: {"type":"string"} |
name |
string | Yes | |
options |
array of object (fields) | No | maxItems: 3 |
order_url |
string or null | No | External ordering or booking destination, such as Uber Eats, an experience checkout, or Clio Grow. When set, public actions use this URL instead of native booking. Null restores the configured native flow. |
tax_code |
string or null | No | |
unit_label |
string or null | No | A unit noun such as "person" or "night". Never pricing prose. |
variants |
array of object (fields) | No | Omit to create a single default variant. Required once the product has options. maxItems: 250; minItems: 1 |
additionalProperties: false; required: ["name","kind"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | No | |
asset_id |
string | Yes | |
duration |
number or null | No | |
height |
number or null | No | |
kind |
string | Yes | enum: ["image","video","file"] |
mime_type |
string or null | No | |
provider |
string | No | |
public_url |
string | Yes | |
status |
string | Yes | enum: ["active"] |
thumbnail_url |
string or null | No | |
width |
number or null | No |
required: ["asset_id","kind","public_url","status"]
array of object fields
Value: array of object.
maxItems: 100; minItems: 1
Array items: object.
array of object fields
Value: array of object.
maxItems: 100; minItems: 1
Array items: object.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
maxItems: 100; uniqueItems: true
Array items: string.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | No | |
name |
string | Yes | |
sort_order |
integer | No | |
values |
array of object (fields) | Yes | maxItems: 100; minItems: 1 |
additionalProperties: false; required: ["name","values"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | |
id |
string | No | |
name |
string | Yes | |
option_values |
object | No | Option id to option value id. Every option must be answered exactly once, and no two variants may answer identically. additionalProperties: {"type":"string"} |
prices |
array of object (fields) | No | maxItems: 20 |
sku |
string or null | No | |
sort_order |
integer | No |
additionalProperties: false; required: ["name"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
missing |
array of string (fields) | Yes | |
ready |
boolean | Yes |
required: ["ready","missing"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
allergens |
array of string (fields) | No | Allergens the merchant states this dish contains. maxItems: 100; uniqueItems: true |
cancellation_policy |
string | No | The merchant’s stated cancellation terms, displayed publicly; this text does not automate refunds. maxLength: 10000; minLength: 1; pattern: "\S" |
care_instructions |
string | No | How to care for the item, shown in its details. maxLength: 10000; minLength: 1; pattern: "\S" |
dietary_notes |
array of string (fields) | No | Merchant-stated dietary facts displayed with a dish. maxItems: 100; uniqueItems: true |
dimensions |
string | No | Item measurements including their units, shown in its details. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
featured |
boolean | No | Highlight this item on the menu and homepage. |
house_rules |
string | No | The host’s rules for guests staying in the home, shown with the listing. maxLength: 10000; minLength: 1; pattern: "\S" |
included_items |
array of string (fields) | No | Items or work included in the stated price, shown in their own public section. maxItems: 100; uniqueItems: true |
ingredients |
array of string (fields) | No | Ingredients shown in the dish details. maxItems: 100; uniqueItems: true |
materials |
array of string (fields) | No | Materials the item is made from, shown in its details. maxItems: 100; uniqueItems: true |
meeting_point |
string | No | Instructions shown in the meeting section; meeting mode and video links are set in scheduling. maxLength: 10000; minLength: 1; pattern: "\S" |
noodle |
array of string (fields) | No | Authored noodle information shown as dish facts; these do not establish purchasable variants. maxItems: 100; uniqueItems: true |
preparation |
string | No | Preparation instructions shown to customers before a session or appointment. maxLength: 10000; minLength: 1; pattern: "\S" |
pricing_note |
string | No | An explicitly stated price such as Market price; use only when no numeric price is set. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
sizes |
array of string (fields) | No | Authored serving information; priced choices belong in variants. maxItems: 100; uniqueItems: true |
soup |
array of string (fields) | No | Authored soup information shown with the dish. maxItems: 100; uniqueItems: true |
tagline |
string | No | A short sentence shown below the product title. maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$" |
toppings |
array of string (fields) | No | Authored topping information; priced choices belong in variants. maxItems: 100; uniqueItems: true |
what_to_bring |
array of string (fields) | No | Items customers should bring, shown in the preparation section. maxItems: 100; uniqueItems: true |
additionalProperties: false
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | No | |
asset_id |
string | Yes | |
duration |
number or null | No | |
height |
number or null | No | |
kind |
string | Yes | enum: ["image","video","file"] |
mime_type |
string or null | No | |
provider |
string | No | |
public_url |
string | Yes | |
status |
string | Yes | enum: ["active"] |
thumbnail_url |
string or null | No | |
width |
number or null | No |
required: ["asset_id","kind","public_url","status"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
path |
string | Yes | |
title |
string | Yes |
required: ["id","path","title"]
array of object fields
Value: array of object.
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amenities |
array of string (fields) | Yes | Amenity codes the home offers; replaces the whole list. Empty offers none. uniqueItems: true |
assigned_member_id |
string or null | Yes | Member who looks after the home; their assigned access shows its stays. |
assigned_team_id |
string or null | Yes | Team who look after the home, such as cleaners. |
bathrooms |
number or null | Yes | Whole and half baths, such as 1.5. maximum: 50; minimum: 0; multipleOf: 0.5 |
bedrooms |
integer or null | Yes | Bedrooms; 0 is a studio. maximum: 50; minimum: 0 |
beds |
integer or null | Yes | maximum: 50; minimum: 1 |
cancellation_policy |
string or null | Yes | Policy shown to guests for stays under 28 nights. It does not refund by itself. enum: ["flexible","moderate","limited","firm","strict",null] |
check_in_time |
string | Yes | Local 24-hour time guests may arrive from, in the location’s timezone. pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
check_out_time |
string | Yes | Local 24-hour time guests leave by. pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
location_id |
string | Yes | |
long_term_cancellation_policy |
string or null | Yes | Policy shown to guests for stays of 28 nights or more. enum: ["firm","strict",null] |
max_guests |
integer | Yes | maximum: 99; minimum: 1 |
min_nights |
integer | Yes | Default minimum nights; individual nights may set their own. maximum: 365; minimum: 1 |
property_type |
string or null | Yes | Airbnb property type, one the property_type_group offers. Null with property_type_group when not said. enum: ["apartment","condominium","serviced_apartment","loft","house","townhouse","bungalow","cabin","chalet","earthhouse","hut","lighthouse","villa","dome","cottage","farmstay","houseboat","tiny_house","guesthouse","private_suite","boat","castle","cave","igloo","island","plane","rv","tent","tipi","train","treehouse","yurt","other","barn","campsite","windmill","bus","holiday_park","ranch","religious_building","riad","shipping_container","tower","bnb","nature_eco_lodge","boutique_hotel","hostel","aparthotel","hotel","resort",null] |
property_type_group |
string or null | Yes | Airbnb's property group: apartments (Apartment: apartment, condominium, serviced_apartment, loft); houses (House: house, townhouse, bungalow, cabin, chalet, earthhouse, hut, lighthouse, villa, dome, cottage, farmstay, houseboat, tiny_house); secondary_units (Secondary unit: guesthouse, private_suite, farmstay); unique_homes (Unique space: boat, castle, cave, earthhouse, hut, igloo, island, lighthouse, plane, rv, tent, tipi, train, treehouse, yurt, other, dome, barn, campsite, farmstay, houseboat, tiny_house, windmill, bus, holiday_park, ranch, religious_building, riad, shipping_container, tower); bnb (Bed and breakfast: bnb, nature_eco_lodge, farmstay); boutique_hotels_and_more (Boutique hotel: boutique_hotel, nature_eco_lodge, hostel, serviced_apartment, aparthotel, hotel, resort). Set with property_type, both or neither. enum: ["apartments","houses","secondary_units","unique_homes","bnb","boutique_hotels_and_more",null] |
required: ["location_id","check_in_time","check_out_time","max_guests","min_nights","assigned_member_id","assigned_team_id","property_type_group","property_type","bedrooms","beds","bathrooms","amenities","cancellation_policy","long_term_cancellation_policy"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
dish |
integer | Yes | minimum: 0 |
experience |
integer | Yes | minimum: 0 |
item |
integer | Yes | minimum: 0 |
service |
integer | Yes | minimum: 0 |
stay |
integer | Yes | minimum: 0 |
additionalProperties: false; required: ["dish","experience","service","item","stay"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | |
collections |
array of object (fields) | Yes | |
featured |
boolean | Yes | |
id |
string | Yes | |
kind |
string | Yes | enum: ["dish","experience","service","item","stay"] |
locations |
array of object (fields) | Yes | |
name |
string | Yes | |
prices |
array of object (fields) | Yes | |
pricing_note |
string | No | |
publications |
array of object (fields) | Yes | |
slug |
string | Yes | |
variant_count |
integer | Yes |
required: ["id","kind","name","slug","active","featured","variant_count","collections","publications","locations","prices"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | Enable or disable sale of this product. Independent of site and location publication. |
description |
string | No | |
details |
object (fields) | No | Named customer-facing facts for the product kind. This is a complete replacement map; preserve fields to retain. pricing_note contains explicitly stated price wording and requires empty numeric prices. additionalProperties: false |
kind |
string | Yes | The customer-facing kind: dish, experience, service, item or stay (a place to stay). Determines the allowed descriptive fields; booking and stock remain separate capabilities. enum: ["dish","experience","service","item","stay"] |
marketing_features |
array of string (fields) | No | Generic selling bullets. Inclusions, preparation instructions and policies are separate details. maxItems: 15 |
metadata |
object | No | Opaque string annotations for integrations. No pricing, scheduling, stock or filtering behavior may read these. additionalProperties: {"type":"string"} |
name |
string | Yes | |
options |
array of object (fields) | No | maxItems: 3 |
order_url |
string or null | No | External ordering or booking destination, such as Uber Eats, an experience checkout, or Clio Grow. When set, public actions use this URL instead of native booking. Null restores the configured native flow. |
product_id |
string | No | minLength: 1 |
tax_code |
string or null | No | |
unit_label |
string or null | No | A unit noun such as "person" or "night". Never pricing prose. |
variants |
array of object (fields) | No | Omit to create a single default variant. Required once the product has options. maxItems: 250; minItems: 1 |
additionalProperties: false; required: ["name","kind"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
start_time |
string | Yes | Local HH:mm time. |
weekday |
integer | Yes | maximum: 6; minimum: 0 |
additionalProperties: false; required: ["weekday","start_time"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_id |
string | No | |
items |
array of object (fields) | Yes | maxItems: 100; minItems: 1 |
name |
string | Yes | minLength: 1 |
additionalProperties: false; required: ["name","items"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection |
object (fields) | Yes | required: ["id","organization_id","location_id","name","slug","description","image","sort_order"] |
products |
array of object (fields) | Yes |
required: ["collection","products"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | |
id |
string | No | |
name |
string | No | |
option_values |
object | No | Option id to option value id. Every option must be answered exactly once, and no two variants may answer identically. additionalProperties: {"type":"string"} |
prices |
array of object (fields) | No | Partial existing prices by id or new offers. Omitted prices remain unless prices_mode is replace. A new offer requires unit_amount. maxItems: 20 |
prices_mode |
string | No | merge keeps prices omitted from the supplied list. replace explicitly removes omitted prices; an empty list clears them. Applies only with prices. default: "merge"; enum: ["merge","replace"] |
sku |
string or null | No | |
sort_order |
integer | No |
additionalProperties: false; required: []
object or null fields
Value: object or null.
anyOf: shape 1, shape 2, shape 3.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
image |
string or null | Yes | |
name |
string | Yes | |
scheduling |
object or null (fields) | Yes | additionalProperties: false; required: ["member_id","organization_id","timezone","updated_at","weekly","time_off","calendar_status"] |
self |
boolean | Yes |
required: ["id","name","image","self","scheduling"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
end |
string | Yes | |
start |
string | Yes |
additionalProperties: false; required: ["start","end"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
end |
string | Yes | |
start |
string | Yes | |
weekday |
integer | Yes | maximum: 6; minimum: 0 |
additionalProperties: false; required: ["weekday","start","end"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
answer |
string or null | Yes | |
created_at |
string | Yes | |
id |
string | Yes | |
location_id |
string or null | Yes | |
question |
string | Yes | |
sort_order |
number | Yes | |
source |
string | Yes | |
status |
string | Yes | enum: ["published","hidden"] |
updated_at |
string | Yes |
required: ["id","question","answer","sort_order","location_id","source","status","created_at","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | minLength: 1 |
sort_order |
integer | Yes |
additionalProperties: false; required: ["id","sort_order"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
author_name |
string or null | No | |
collection_method |
string or null | No | |
content |
string or null | No | |
created_at |
string or null | Yes | |
id |
string | Yes | |
location_id |
string or null | No | |
original_reference |
string or null | No | |
original_review_date |
string or null | No | |
owner_reply |
string or null | No | |
publication_authorized |
boolean | Yes | |
rating |
number | Yes | |
source |
string | Yes | |
status |
string | Yes | |
title |
string or null | No | |
updated_at |
string | Yes | |
verified |
boolean | Yes |
required: ["id","rating","source","status","created_at","updated_at","publication_authorized","verified"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
detail |
null | Yes | |
state |
string | Yes | const: "pushed" |
required: ["state","detail"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
detail |
string | Yes | minLength: 1 |
state |
string | Yes | const: "needs_review" |
required: ["state","detail"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
available |
boolean | Yes | |
channel |
object or null (fields) | Yes | required: ["state","detail"] |
closed |
boolean | Yes | |
closed_to_arrival |
boolean | Yes | |
closed_to_departure |
boolean | Yes | |
date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
held_until |
string or null | Yes | When a guest checkout hold on this night lapses; null when no guest is paying for it. A held night is not available. |
max_stay |
integer or null | Yes | |
min_stay_arrival |
integer or null | Yes | |
min_stay_through |
integer or null | Yes | |
price_minor |
integer or null | Yes | |
source |
string or null | Yes | enum: ["host","import",null] |
stay_id |
string or null | Yes |
required: ["date","available","stay_id","closed","price_minor","min_stay_arrival","min_stay_through","max_stay","closed_to_arrival","closed_to_departure","source","held_until","channel"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
adults |
integer | Yes | |
arrival_time |
string or null | Yes | pattern: "^([01]\d|2[0-3]):[0-5]\d$" |
cancellation_policy |
string or null | Yes | The home cancellation policy the guest booked under on the site; it decides what their own cancellation refunds. Null for a stay not paid on the site. enum: ["flexible","moderate","limited","firm","strict","long_term_firm","long_term_strict",null] |
cancellation_reason |
string or null | Yes | |
cancelled_at |
string or null | Yes | |
channel |
string | Yes | enum: ["airbnb","vrbo","direct"] |
channel_booking_id |
string or null | Yes | |
check_in_date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
check_out_date |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
children |
integer | Yes | |
created_at |
string | Yes | minLength: 1 |
currency |
string | Yes | minLength: 1 |
external_booking_id |
string or null | Yes | |
guest_email |
string or null | Yes | |
guest_name |
string or null | Yes | |
guest_phone |
string or null | Yes | |
guest_surname |
string or null | Yes | |
id |
string | Yes | minLength: 1 |
infants |
integer | Yes | |
location_id |
string | Yes | minLength: 1 |
notes |
string or null | Yes | |
overbooked |
boolean | Yes | |
owner |
string | Yes | enum: ["app","channel"] |
product_id |
string | Yes | minLength: 1 |
provider |
string or null | Yes | |
request_id |
string or null | Yes | The guest conversation about this stay, for get_guest_conversation and reply_to_guest. Null until a named guest with email or phone opens one; an existing conversation is retained. |
status |
string | Yes | enum: ["pending","confirmed","cancelled"] |
timezone |
string | Yes | minLength: 1 |
total_minor |
integer | Yes | |
updated_at |
string | Yes | minLength: 1 |
user_id |
string or null | Yes | |
version |
integer | Yes |
required: ["id","product_id","location_id","timezone","channel","owner","status","overbooked","check_in_date","check_out_date","arrival_time","adults","children","infants","guest_name","guest_surname","guest_email","guest_phone","user_id","total_minor","currency","notes","provider","external_booking_id","channel_booking_id","request_id","cancelled_at","cancellation_reason","cancellation_policy","version","created_at","updated_at"]
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
email |
string or null | Yes | |
name |
string or null | Yes | |
phone |
string or null | Yes |
required: ["name","email","phone"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
check_in_date |
string or null | Yes | |
check_out_date |
string or null | Yes | |
ends_at |
string | Yes | |
id |
string | Yes | |
kind |
string | Yes | enum: ["booking","reservation","stay"] |
party_size |
integer | Yes | |
starts_at |
string | Yes | |
status |
string | Yes | |
timezone |
string | Yes |
required: ["id","kind","status","starts_at","ends_at","timezone","party_size","check_in_date","check_out_date"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
guest_name |
string or null | Yes | |
operational_status |
string or null | Yes | |
participant_label |
string | Yes | |
preview |
string or null | Yes | |
reply_channel |
string | Yes | enum: ["email","airbnb"] |
request_id |
string | Yes | |
state |
string | Yes | |
type |
string | Yes | |
updated_at |
string | Yes |
required: ["request_id","guest_name","participant_label","reply_channel","type","state","operational_status","preview","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
created_at |
string | Yes | |
date |
string or null | Yes | |
email |
string or null | No | |
guests |
string or null | Yes | |
id |
string | Yes | Inbox request ID. |
location_id |
string or null | Yes | |
location_title |
string or null | No | |
name |
string or null | No | |
operational_reservation_id |
string | Yes | Use this ID to manage the reservation. |
phone |
string or null | No | |
request_id |
string | Yes | |
requests |
string or null | No | |
status |
string | Yes | enum: ["confirmed","cancelled"] |
time |
string or null | Yes | |
updated_at |
string | Yes |
required: ["id","request_id","operational_reservation_id","updated_at","status","created_at","guests","date","time","location_id"]
string or null fields
Value: string or null.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
count |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
eventName |
string | Yes | |
status |
string | Yes |
additionalProperties: false; required: ["eventName","status","count"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
campaign |
string or null | Yes | |
content |
string or null | Yes | |
firstPaidSignups |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
medium |
string or null | Yes | |
onboardedSignups |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
revenue |
array of object (fields) | Yes | |
signups |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
source |
string or null | Yes |
additionalProperties: false; required: ["source","medium","campaign","content","signups","onboardedSignups","firstPaidSignups","revenue"]
#/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_ai_assistance or #/$defs/content_cta or #/$defs/content_callout fields
Value: #/$defs/content_heading or #/$defs/content_markdown or #/$defs/content_image or #/$defs/content_gallery or #/$defs/content_video or #/$defs/content_faq or #/$defs/content_how_to or #/$defs/content_divider or #/$defs/content_ai_assistance or #/$defs/content_cta or #/$defs/content_callout.
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7, shape 8, shape 9, shape 10, shape 11.
array of #/$defs/content_block_media fields
Value: array of #/$defs/content_block_media.
Array items: #/$defs/content_block_media.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["text"] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "heading" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["markdown","editor_mode"] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "markdown" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "image" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "gallery" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["url","title"] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "video" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["source"] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "faq" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["steps"] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "how_to" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "divider" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "ai_assistance" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "cta" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
number or null | No | |
media |
array of #/$defs/content_block_media (fields) | No | Required on image blocks: one item, the picture. A block read back keeps its media by sending it as read. |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "callout" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
email |
string | Yes | minLength: 1 |
name |
string | Yes | minLength: 1 |
phone |
string or null | No |
required: ["name","email"]
array of object fields
Value: array of object.
minItems: 1
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
note |
string | No | |
rows |
array of array of number or string or null (fields) | No |
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of string fields
Value: array of string.
minItems: 1; uniqueItems: true
Array items: string.
array of string fields
Value: array of string.
uniqueItems: true
Array items: string.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
label |
string or null | No | |
url |
string or null | No |
additionalProperties: false; required: []
array of object fields
Value: array of object.
Array items: object.
string fields
Value: string.
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7, shape 8.
array of #/$defs/content_block_media fields
Value: array of #/$defs/content_block_media.
Array items: #/$defs/content_block_media.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["text"] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "heading" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["markdown","editor_mode"] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "markdown" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "image" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "gallery" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["url","title"] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "video" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["source"] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "faq" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["steps"] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "how_to" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "divider" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "cta" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "contact_cta" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "booking_cta" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "callout" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["title"] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "hero" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "button_group" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "feature_grid" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "comparison" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "stat_grid" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "workflow_grid" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "showcase" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "language_reach" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "steps" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "video_feature" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "media_text" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "contact_form" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "team_grid" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "testimonial_grid" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "donation_choices" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["page_ids"] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "page_grid" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "product_grid" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "location_grid" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "social_posts" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | Yes | |
level |
number or null | Yes | |
media |
array of #/$defs/content_block_media (fields) | Yes | |
parent_block_id |
string or null | Yes | |
position |
integer | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "ai_assistance" |
updated_at |
string | Yes | The block's own concurrency token, for replace_content_block and delete_content_block. |
additionalProperties: false; required: ["id","parent_block_id","type","level","data","media","updated_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["text"] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "heading" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["markdown","editor_mode"] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "markdown" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "image" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "gallery" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["url","title"] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "video" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["source"] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "faq" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["steps"] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "how_to" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "divider" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "cta" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "contact_cta" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "booking_cta" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "callout" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["title"] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "hero" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "button_group" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "feature_grid" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "comparison" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "stat_grid" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "workflow_grid" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "showcase" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "language_reach" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "steps" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "video_feature" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "media_text" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "contact_form" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "team_grid" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "testimonial_grid" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "donation_choices" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: ["page_ids"] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "page_grid" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "product_grid" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "location_grid" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "social_posts" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
data |
object (fields) | Yes | additionalProperties: false; required: [] |
id |
string | No | |
level |
integer or null | No | maximum: 6; minimum: 1 |
media |
array of #/$defs/content_block_media (fields) | No | |
parent_block_id |
string or null | No | |
source_block_id |
string or null | No | |
type |
string | Yes | const: "ai_assistance" |
updated_at |
string or null | No | As read. Ignored on a whole-document write. |
additionalProperties: false; required: ["type","data"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
text |
string | Yes |
required: ["id","text"]
array of string fields
Value: array of string.
maxItems: 100; minItems: 1; uniqueItems: true
Array items: string.
string fields
Value: string.
enum: ["ac","dryer","essentials","heating","hot_water","kitchen","tv","washer","wireless_internet","bathtub","bidet","body_soap","cleaning_products","conditioner","hair_dryer","alfresco_shower","shampoo","shower_gel","bed_linens","wardrobe_or_closet","clothes_drying_rack","extra_pillows_and_blankets","hangers","iron","mosquito_net","room_darkening_shades","safe","arcade_machine","batting_cage","books","bowling_alley","climbing_wall","ethernet_connection","exercise_equipment","game_console","laser_tag","life_size_games","mini_golf","home_theater","piano","ping_pong_table","pool_table","record_player","skate_ramp","sound_system","theme_room","baby_bath","baby_monitor","childrens_bike","playroom","stair_gates","babysitter_recommendations","board_games","changing_table","childrens_books_and_toys","childrens_dinnerware","crib","fireplace_guards","high_chair","playground","outlet_covers","pack_n_play_travel_crib","table_corner_guards","window_guards","ceiling_fan","fireplace","portable_fans","carbon_monoxide_detector","fire_extinguisher","first_aid_kit","smoke_detector","laptop_friendly_workspace","pocket_wifi","baking_sheet","barbeque_utensils","bread_maker","blender","coffee","coffee_maker","cooking_basics","dining_table","dishes_and_silverware","dishwasher","freezer","hot_water_kettle","kitchenette","microwave","mini_fridge","oven","refrigerator","rice_maker","stove","toaster","trash_compacter","wine_glasses","beach_access","lake_access","laundromat_nearby","private_entrance","resort_access","ski_in_ski_out","waterfront","garden_or_backyard","bbq_area","beach_essentials","bicycle","boat_slip","fire_pit","hammock","kayak","alfresco_dining","outdoor_seating","outdoor_kitchen","patio_or_belcony","sun_loungers","free_parking","street_parking","paid_parking_on_premises","paid_parking","free_parking_off_premises","elevator","ev_charger","hockey_rink","gym","jacuzzi","pool","private_living_room","sauna","single_level_home","ebike_charger","solar_power","recycling","composting","doorman","gated_community","breakfast","cleaning_before_checkout","long_term_stays_allowed","luggage_dropoff_allowed"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | Yes | |
height |
integer or null | Yes | |
id |
string | Yes | minLength: 1 |
kind |
string | Yes | enum: ["image","video"] |
position |
integer | Yes | minimum: 0 |
url |
string | Yes | The picture to show; a video shows its poster frame. minLength: 1 |
width |
integer or null | Yes |
required: ["id","kind","url","width","height","alt_text","position"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount_minor |
integer | Yes | |
created_at |
string | Yes | minLength: 1 |
created_by |
string | Yes | minLength: 1 |
currency |
string | Yes | minLength: 1 |
id |
string | Yes | minLength: 1 |
method |
string | Yes | enum: ["cash","bank_transfer","card_external","other"] |
note |
string or null | Yes | |
paid_on |
string | Yes | pattern: "^\d{4}-\d{2}-\d{2}$" |
reference |
string or null | Yes | |
stay_id |
string | Yes | minLength: 1 |
required: ["id","stay_id","amount_minor","currency","method","paid_on","reference","note","created_at","created_by"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
values |
object (fields) | Yes | additionalProperties: false |
additionalProperties: false; required: ["values"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | Yes | |
name |
string | Yes |
additionalProperties: false; required: ["name","description"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
route_path |
string or null | Yes | |
values |
object (fields) | Yes | additionalProperties: false |
additionalProperties: false; required: ["values","route_path"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string | Yes | |
details |
object (fields) | Yes | additionalProperties: false |
marketing_features |
array of string (fields) | Yes | |
name |
string | Yes | |
unit_label |
string or null | Yes |
additionalProperties: false; required: ["name","description","marketing_features","unit_label","details"]
See schema fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
resource_type |
string | No | const: "organization" |
values |
object (fields) | No | additionalProperties: false |
See schema fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
resource_type |
string | No | const: "business_location" |
values |
object (fields) | No | additionalProperties: false |
See schema fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
resource_type |
string | No | const: "product" |
values |
object (fields) | No | additionalProperties: false |
See schema fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
resource_type |
string | No | const: "collection" |
values |
object (fields) | No | additionalProperties: false |
See schema fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
resource_type |
string | No | const: "article_category" |
values |
object (fields) | No | additionalProperties: false |
See schema fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
resource_type |
string | No | const: "media_asset" |
values |
object (fields) | No | additionalProperties: false |
string fields
Value: string.
pattern: "\S"
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
label |
string | Yes | pattern: "\S" |
additionalProperties: false; required: ["label"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
additional_notes_html |
string | No |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
object (fields) | No | additionalProperties: false |
alt_text |
string | No | |
brand_description |
string | No | |
compliance |
object (fields) | No | additionalProperties: false |
consultation |
object (fields) | No | additionalProperties: false |
description |
string | No | |
details |
object (fields) | No | additionalProperties: false |
marketing_features |
array of string (fields) | No | |
name |
string | No | |
reservation |
object (fields) | No | additionalProperties: false |
seo_description |
string | No | |
seo_title |
string | No | |
short_description |
string | No | |
title |
string | No | |
unit_label |
string | No |
additionalProperties: false
string fields
Value: string.
minLength: 1; pattern: "\S"
array of object fields
Value: array of object.
Array items: object.
object fields
Value: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | No | |
asset_id |
string | Yes | |
kind |
string | Yes | enum: ["image","video"] |
public_url |
string | Yes | |
sort_order |
number | Yes | |
thumbnail_url |
string or null | No |
required: ["asset_id","kind","public_url","sort_order"]
string fields
Value: string.
enum: ["facebook","instagram","discord"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | |
message |
string | No | |
public_url |
string or null | No | |
status |
string | Yes |
required: ["channel","status"]
string fields
Value: string.
anyOf: shape 1, shape 2, shape 3, shape 4, shape 5, shape 6, shape 7, shape 8.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
createdAt |
string | Yes | format: "date-time" |
id |
string | Yes | |
teamId |
string | Yes | |
userId |
string | Yes |
required: ["id","teamId","userId","createdAt"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
asset_id |
string | Yes | |
kind |
string | Yes | |
public_url |
string or null | Yes | |
slot |
string | Yes | |
thumbnail_url |
string or null | Yes |
required: ["asset_id","slot","public_url","thumbnail_url","kind"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
email |
string | Yes | |
id |
string | Yes | |
image |
string or null | No | |
name |
string | Yes |
required: ["id","name","email"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount |
integer | Yes | |
currency |
string | Yes |
required: ["currency","amount"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount_due |
integer | Yes | |
amount_paid |
integer | Yes | |
amount_remaining |
integer | Yes | |
currency |
string | Yes | |
hosted_invoice_url |
string or null | Yes | |
id |
string | Yes | |
invoice_pdf |
string or null | Yes | |
status |
string or null | Yes | |
total |
integer | Yes |
required: ["id","status","currency","total","amount_due","amount_paid","amount_remaining","hosted_invoice_url","invoice_pdf"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
name |
string | Yes | const: "USD (cents)" |
required: ["name"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
label |
string | Yes | |
url |
string | Yes |
additionalProperties: false; required: ["label","url"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string or null | No | |
asset_id |
string | Yes | |
duration |
number or null | No | |
height |
number or null | No | |
kind |
string | Yes | enum: ["image","video"] |
mime_type |
string or null | No | |
public_url |
string | Yes | |
slot |
string | Yes | enum: ["cover","gallery"] |
sort_order |
number | Yes | |
thumbnail_url |
string or null | No | |
updated_at |
string | No | |
width |
number or null | No |
required: ["asset_id","public_url","kind","slot","sort_order"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | enum: ["facebook","instagram","discord"] |
code |
string or null | Yes | |
id |
string | Yes | The publication_id reconcile_post_publication takes. |
local_content_changed |
boolean | Yes | The website copy changed after this was sent. The external post was not edited. |
message |
string or null | Yes | |
provider_post_id |
string or null | Yes | |
public_url |
string or null | Yes | The provider's own permalink, when it returned one. A Discord message link opens only for members of that channel. |
published_at |
string or null | Yes | |
state |
string | Yes | enum: ["preparing","publishing","published","failed","unknown","removed"] |
target_id |
string | Yes |
additionalProperties: false; required: ["id","channel","target_id","state","provider_post_id","public_url","code","message","published_at","local_content_changed"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
kind |
string | Yes | enum: ["image","video"] |
provider_media_id |
string or null | Yes | |
public_url |
string or null | Yes | |
thumbnail_url |
string or null | Yes |
additionalProperties: false; required: ["provider_media_id","kind","public_url","thumbnail_url"]
array of object fields
Value: array of object.
Array items: object.
array of string fields
Value: array of string.
Array items: string.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
enum | Yes | enum: ["organization"] |
additionalProperties: false; required: ["channel"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
enum | Yes | enum: ["facebook","instagram","discord"] |
connection_revision |
string | Yes | The connection_revision get_social_connections returned with it. |
target_id |
string | Yes | The Page, professional account or Discord channel id from get_social_connections. |
additionalProperties: false; required: ["channel","target_id","connection_revision"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
capacity |
integer or null | No | minimum: 1 |
ends_at |
string | Yes | format: "date-time" |
starts_at |
string | Yes | format: "date-time" |
additionalProperties: false; required: ["starts_at","ends_at"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
start_time |
string | Yes | Local HH:mm start time; visit duration is configured separately. pattern: "^([01][0-9]|2[0-3]):[0-5][0-9]$" |
weekday |
integer | Yes | maximum: 6; minimum: 0 |
additionalProperties: false; required: ["weekday","start_time"]
string fields
Value: string.
maxLength: 1000; minLength: 1; pattern: "^(?=[\s\S]\S)[^\r\n]$"
array of object fields
Value: array of object.
maxItems: 100; minItems: 1
Array items: object.
array of object fields
Value: array of object.
maxItems: 20
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_id |
string | Yes | |
sort_order |
integer | Yes |
required: ["collection_id","sort_order"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | |
location_id |
string | Yes | |
published |
boolean | Yes |
required: ["location_id","active","published"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
name |
string | Yes | |
sort_order |
integer | Yes | |
values |
array of object (fields) | Yes |
required: ["id","name","sort_order","values"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
organization_id |
string | Yes | |
published |
boolean | Yes |
required: ["organization_id","published"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | |
id |
string | Yes | |
name |
string | Yes | |
option_values |
object | Yes | additionalProperties: {"type":"string"} |
prices |
array of object (fields) | Yes | |
product_id |
string | Yes | |
sku |
string or null | Yes | |
sort_order |
integer | Yes |
required: ["id","product_id","name","sku","active","sort_order","option_values","prices"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
maxItems: 100; minItems: 1
Array items: object.
array of object fields
Value: array of object.
maxItems: 20
Array items: object.
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
busy_checked_at |
string or null | No | |
busy_error |
string or null | No | |
busy_from |
string or null | No | |
busy_until |
string or null | No | |
calendar_account_id |
string or null | No | |
calendar_conflict_count |
integer | No | |
calendar_conflicts |
array of object (fields) | No | |
calendar_ids |
array of string (fields) | No | |
calendar_status |
string | Yes | enum: ["internal","disconnected","error","stale","ready"] |
member_id |
string | Yes | |
organization_id |
string | Yes | |
public_approved |
integer | No | enum: [0,1] |
public_bio |
string or null | No | |
public_name |
string or null | No | |
public_photo_url |
string or null | No | |
time_off |
array of object (fields) | Yes | |
timezone |
string | Yes | |
updated_at |
string | Yes | |
updated_by |
string | No | |
weekly |
array of object (fields) | Yes |
additionalProperties: false; required: ["member_id","organization_id","timezone","updated_at","weekly","time_off","calendar_status"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
booking_count |
integer | Yes | minimum: 1 |
ends_at |
string | Yes | |
session_id |
string | Yes | |
starts_at |
string | Yes |
required: ["session_id","starts_at","ends_at","booking_count"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
end |
string | Yes | |
start |
string | Yes | |
weekday |
integer | Yes | maximum: 6; minimum: 0 |
required: ["weekday","start","end"]
object or null fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
detail |
string or null | Yes | |
state |
string | Yes | enum: ["pending","pushed","needs_review"] |
required: ["state","detail"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
actor |
string or null | Yes | |
attachments |
array of object (fields) | Yes | |
body |
string or null | Yes | |
channel |
string or null | Yes | |
deliveries |
array of object (fields) | Yes | |
event |
string or null | Yes | |
id |
string | Yes | |
kind |
string | Yes | |
occurred_at |
string | Yes | |
payload |
object or null | No | |
provider_timestamp |
string or null | Yes |
required: ["id","kind","actor","channel","body","event","occurred_at","provider_timestamp","deliveries","attachments"]
string fields
Value: string.
enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
text |
string | Yes |
additionalProperties: false; required: ["text"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
editor_mode |
string | Yes | enum: ["rich","source"] |
markdown |
string | Yes | Markdown. |
title |
string or null | No |
additionalProperties: false; required: ["markdown","editor_mode"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
caption |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
caption |
string or null | No | |
title |
string | Yes | |
upload_date |
string or null | No | |
url |
string | Yes |
additionalProperties: false; required: ["url","title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
source |
string | Yes | enum: ["page_qa","organization_qa"] |
title |
string or null | No |
additionalProperties: false; required: ["source"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
estimated_time |
string or null | No | |
label |
string or null | No | |
steps |
array of object (fields) | Yes | minItems: 1 |
supply_items |
array of string (fields) | No | |
title |
string or null | No | |
tool_items |
array of string (fields) | No |
additionalProperties: false; required: ["steps"]
object fields
Value: object.
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
intro |
string or null | No | |
label |
string or null | No | |
prompts |
array of object (fields) | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
description |
string or null | No | |
label |
string or null | No | |
secondary_label |
string or null | No | |
secondary_url |
string or null | No | |
title |
string or null | No | |
url |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
badge |
string or null | No | |
body |
string or null | No | |
buttons |
array of object (fields) | No | |
items |
array of object (fields) | No | |
title |
string or null | No | |
tone |
string or null | No | enum: ["neutral","info","success","warning","danger",null] |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
name |
string | Yes | |
text |
string or null | No |
additionalProperties: false; required: ["name"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
label |
string | Yes | |
url |
string or null | No |
additionalProperties: false; required: ["label"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string or null | No | Markdown. |
description |
string or null | No | |
icon |
string or null | No | |
label |
string or null | No | |
title |
string | Yes | |
url |
string or null | No | |
value |
string or null | No |
additionalProperties: false; required: ["title"]
array of array of number or string or null fields
Value: array of array of number or string or null.
Array items: array of number or string or null.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
title |
string | Yes |
additionalProperties: false; required: ["title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
title |
string | Yes | |
value |
string | Yes |
additionalProperties: false; required: ["value","title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
icon |
string or null | No | |
prompt |
string or null | No | |
title |
string | Yes |
additionalProperties: false; required: ["title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
title |
string | Yes |
additionalProperties: false; required: ["title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
locale |
string | Yes | enum: ["en","ja","th","vi"] |
title |
string | Yes |
additionalProperties: false; required: ["title","locale"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
title |
string | Yes | |
url |
string or null | No |
additionalProperties: false; required: ["title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
bio |
string or null | No | |
first_name |
string | Yes | |
last_name |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: ["first_name"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
amount |
string or null | No | |
description |
string or null | No | |
title |
string | Yes |
additionalProperties: false; required: ["title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
copy_label |
string or null | No | |
description |
string or null | No | |
prompt |
string or null | No | |
title |
string | Yes |
additionalProperties: false; required: ["title"]
string fields
Value: string.
enum: ["media","gallery","background","featured","decoration","parallax_sky","parallax_sky_xxs","parallax_sky_xs","parallax_sky_sm","parallax_sky_md","parallax_sky_lg","parallax_clouds","parallax_clouds_xxs","parallax_clouds_xs","parallax_clouds_sm","parallax_clouds_md","parallax_clouds_lg","parallax_mountains","parallax_mountains_xxs","parallax_mountains_xs","parallax_mountains_sm","parallax_mountains_md","parallax_mountains_lg","parallax_far_trees","parallax_far_trees_xxs","parallax_far_trees_xs","parallax_far_trees_sm","parallax_far_trees_md","parallax_far_trees_lg","parallax_building_trees","parallax_building_trees_xxs","parallax_building_trees_xs","parallax_building_trees_sm","parallax_building_trees_md","parallax_building_trees_lg","parallax_foreground","parallax_foreground_xxs","parallax_foreground_xs","parallax_foreground_sm","parallax_foreground_md","parallax_foreground_lg"]
string fields
Value: string.
examples: ["items.0.image"]; pattern: "^items\.\d+\.image$"
string fields
Value: string.
examples: ["items.0.left"]; pattern: "^items\.\d+\.left$"
string fields
Value: string.
examples: ["items.0.center"]; pattern: "^items\.\d+\.center$"
string fields
Value: string.
examples: ["items.0.right"]; pattern: "^items\.\d+\.right$"
string fields
Value: string.
examples: ["images.0"]; pattern: "^images\.\d+$"
string fields
Value: string.
examples: ["features.0.icon"]; pattern: "^features\.\d+\.icon$"
string fields
Value: string.
examples: ["people.0.image"]; pattern: "^people\.\d+\.image$"
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
description |
string or null | No | |
label |
string or null | No | |
notice |
string or null | No | |
price_line |
string or null | No | |
secondary_label |
string or null | No | |
secondary_url |
string or null | No | |
title |
string or null | No | |
url |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
cta_label |
string or null | No | |
cta_url |
string or null | No | |
eyebrow |
string or null | No | |
rotating_accents |
array of string (fields) | No | |
secondary_label |
string or null | No | |
secondary_url |
string or null | No | |
subtitle |
string or null | No | |
title |
string | Yes |
additionalProperties: false; required: ["title"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
buttons |
array of object (fields) | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
calculator |
object (fields) | No | |
cta_label |
string or null | No | |
cta_url |
string or null | No | |
description |
string or null | No | |
eyebrow |
string or null | No | |
items |
array of object (fields) | No | |
layout |
string or null | No | enum: ["cards","pictures",null] |
limit |
integer | No | minimum: 1 |
source |
string or null | No | enum: ["manual","organization_posts","calculator","billing_plans","billing_features",null] |
title |
string or null | No | |
title_muted |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
problem_items |
array of object (fields) | No | |
problem_label |
string or null | No | |
problem_title |
string or null | No | |
solution_items |
array of object (fields) | No | |
solution_label |
string or null | No | |
solution_title |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
items |
array of object (fields) | No | |
label |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cta_label |
string or null | No | |
cta_url |
string or null | No | |
description |
string or null | No | |
items |
array of object (fields) | No | |
label |
string or null | No | |
prompt_heading |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
items |
array of object (fields) | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
items |
array of object (fields) | No | |
pin_label |
string or null | No | |
subtitle |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
cta_label |
string or null | No | |
cta_url |
string or null | No | |
items |
array of object (fields) | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
items |
array of object (fields) | No | |
title |
string or null | No | |
upload_date |
string or null | No | |
video_title |
string or null | No | |
video_url |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
body |
string or null | No | |
caption |
string or null | No | |
example_type |
string or null | No | enum: ["websites","posts",null] |
eyebrow |
string or null | No | |
items |
array of object (fields) | No | |
label |
string or null | No | |
title |
string or null | No | |
url |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
items |
array of object (fields) | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
destination |
string or null | No | |
tiers |
array of object (fields) | No | |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
accent |
string or null | No | |
description |
string or null | No | |
page_ids |
array of string (fields) | Yes | minItems: 1; uniqueItems: true |
title |
string or null | No |
additionalProperties: false; required: ["page_ids"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
collection_id |
string or null | No | |
description |
string or null | No | |
product_ids |
array of string (fields) | No | uniqueItems: true |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string or null | No | |
location_ids |
array of string (fields) | No | uniqueItems: true |
title |
string or null | No |
additionalProperties: false; required: []
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
call_to_action |
object (fields) | No | additionalProperties: false; required: [] |
description |
string or null | No | |
limit |
integer | No | maximum: 12; minimum: 1 |
location_id |
string or null | No | |
title |
string or null | No |
additionalProperties: false; required: []
string fields
Value: string.
minLength: 1
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string | No | |
name |
string | No |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
description |
string | No | |
details |
object (fields) | No | additionalProperties: false |
marketing_features |
array of string (fields) | No | |
name |
string | No | |
unit_label |
string | No |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
brand_description |
string | No | |
compliance |
object (fields) | No | additionalProperties: false |
consultation |
object (fields) | No | additionalProperties: false |
name |
string | No | |
seo_description |
string | No | |
seo_title |
string | No |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
address |
object (fields) | No | additionalProperties: false |
description |
string | No | |
reservation |
object (fields) | No | additionalProperties: false |
seo_description |
string | No | |
seo_title |
string | No | |
short_description |
string | No | |
title |
string | No |
additionalProperties: false
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt_text |
string | No |
additionalProperties: false
object fields
Value: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
ends_on |
string or null (fields) | Yes | |
kind |
string | Yes | const: "closure" |
note |
string or null | Yes | maxLength: 1000 |
starts_on |
string | Yes | Gregorian calendar date, YYYY-MM-DD. No timezone conversion. format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$" |
additionalProperties: false; required: ["kind","starts_on","ends_on","note"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
date |
string | Yes | Gregorian calendar date, YYYY-MM-DD. No timezone conversion. format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$" |
kind |
string | Yes | const: "hours" |
note |
string or null | Yes | maxLength: 1000 |
periods |
array of object (fields) | Yes |
additionalProperties: false; required: ["kind","date","periods","note"]
string fields
Value: string.
enum: ["media","background","featured","decoration","parallax_sky","parallax_sky_xxs","parallax_sky_xs","parallax_sky_sm","parallax_sky_md","parallax_sky_lg","parallax_clouds","parallax_clouds_xxs","parallax_clouds_xs","parallax_clouds_sm","parallax_clouds_md","parallax_clouds_lg","parallax_mountains","parallax_mountains_xxs","parallax_mountains_xs","parallax_mountains_sm","parallax_mountains_md","parallax_mountains_lg","parallax_far_trees","parallax_far_trees_xxs","parallax_far_trees_xs","parallax_far_trees_sm","parallax_far_trees_md","parallax_far_trees_lg","parallax_building_trees","parallax_building_trees_xxs","parallax_building_trees_xs","parallax_building_trees_sm","parallax_building_trees_md","parallax_building_trees_lg","parallax_foreground","parallax_foreground_xxs","parallax_foreground_xs","parallax_foreground_sm","parallax_foreground_md","parallax_foreground_lg"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
code |
string | Yes | |
message |
string | Yes |
required: ["code","message"]
string fields
Value: string.
enum: ["list","read","publish","delete"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | No | |
sort_order |
integer | No | |
value |
string | Yes |
additionalProperties: false; required: ["value"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | |
compare_at_unit_amount |
integer or null | No | minimum: 0 |
currency |
string | No | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"] |
id |
string | No | The id of a price this variant already has. Restating it keeps the price row, which payments and checkout holds reference; a price without an id is a new offer. |
location_id |
string or null | No | Scope this offer to one location, or null for every location the product is offered at. |
recurring_interval |
string or null | No | enum: ["day","week","month","year",null] |
recurring_interval_count |
integer or null | No | minimum: 1 |
tax_behavior |
string | No | enum: ["unspecified","inclusive","exclusive"] |
type |
string | No | enum: ["one_time","recurring"] |
unit_amount |
integer | Yes | maximum: 9007199254740991; minimum: 0 |
valid_from_at |
string or null | No | format: "date-time" |
valid_until_at |
string or null | No | format: "date-time" |
additionalProperties: false; required: ["unit_amount"]
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
currency |
string | Yes | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"] |
location_id |
string or null | Yes | |
recurring_interval |
string | No | enum: ["day","week","month","year"] |
recurring_interval_count |
integer | No | minimum: 1 |
type |
string | Yes | enum: ["one_time","recurring"] |
unit_amount |
integer | Yes | minimum: 0 |
variant_id |
string | Yes |
required: ["variant_id","location_id","currency","unit_amount","type"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | Enable or disable sale of this product. Independent of site and location publication. |
description |
string | No | |
details |
object (fields) | No | Named customer-facing facts for the product kind. This is a complete replacement map; preserve fields to retain. pricing_note contains explicitly stated price wording and requires empty numeric prices. additionalProperties: false |
kind |
string | No | const: "dish" |
marketing_features |
array of string (fields) | No | Generic selling bullets. Inclusions, preparation instructions and policies are separate details. maxItems: 15 |
metadata |
object | No | Opaque string annotations for integrations. No pricing, scheduling, stock or filtering behavior may read these. additionalProperties: {"type":"string"} |
name |
string | Yes | |
options |
array of object (fields) | No | maxItems: 3 |
order_url |
string or null | No | External ordering or booking destination, such as Uber Eats, an experience checkout, or Clio Grow. When set, public actions use this URL instead of native booking. Null restores the configured native flow. |
product_id |
string | No | |
tax_code |
string or null | No | |
unit_label |
string or null | No | A unit noun such as "person" or "night". Never pricing prose. |
variants |
array of object (fields) | No | Partial existing variants by id or new variants. Omitted variants and prices remain; use update_product for intentional removal. maxItems: 250; minItems: 1 |
additionalProperties: false; required: ["name"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | |
compare_at_unit_amount |
integer or null | No | minimum: 0 |
currency |
string | No | enum: ["THB","USD","EUR","GBP","JPY","AUD","CAD","SGD","HKD","MYR","IDR","PHP","VND","INR"] |
id |
string | No | The id of a price this variant already has. Restating it keeps the price row, which payments and checkout holds reference; a price without an id is a new offer. |
location_id |
string or null | No | Scope this offer to one location, or null for every location the product is offered at. |
recurring_interval |
string or null | No | enum: ["day","week","month","year",null] |
recurring_interval_count |
integer or null | No | minimum: 1 |
tax_behavior |
string | No | enum: ["unspecified","inclusive","exclusive"] |
type |
string | No | enum: ["one_time","recurring"] |
unit_amount |
integer | No | maximum: 9007199254740991; minimum: 0 |
valid_from_at |
string or null | No | format: "date-time" |
valid_until_at |
string or null | No | format: "date-time" |
additionalProperties: false; required: []
array of object fields
Value: array of object.
Array items: object.
array of object fields
Value: array of object.
Array items: object.
array of number or string or null fields
Value: array of number or string or null.
Array items: number or string or null.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
close |
object (fields) | Yes | additionalProperties: false; required: ["day","hour","minute"] |
open |
object (fields) | Yes | additionalProperties: false; required: ["day","hour","minute"] |
additionalProperties: false; required: ["open","close"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
open |
object (fields) | Yes | additionalProperties: false; required: ["day","hour","minute"] |
additionalProperties: false; required: ["open"]
string or null fields
Value: string or null.
array of object fields
Value: array of object.
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
id |
string | Yes | |
sort_order |
integer | Yes | |
value |
string | Yes |
required: ["id","value","sort_order"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | Yes | |
compare_at_unit_amount |
integer or null | No | |
currency |
string | Yes | |
id |
string | Yes | |
location_id |
string or null | Yes | The location this offer applies at, or null for a location-neutral offer. Null is a declared scope, not a missing value. |
recurring_interval |
string or null | No | enum: ["day","week","month","year",null] |
recurring_interval_count |
integer or null | No | |
tax_behavior |
string | Yes | enum: ["unspecified","inclusive","exclusive"] |
type |
string | Yes | enum: ["one_time","recurring"] |
unit_amount |
integer | Yes | Integer amount in the currency smallest unit. |
valid_from_at |
string or null | No | |
valid_until_at |
string or null | No |
required: ["id","location_id","active","currency","unit_amount","type","tax_behavior"]
array of object fields
Value: array of object.
maxItems: 250; minItems: 1
Array items: object.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
alt |
string or null | Yes | |
height |
integer or null | Yes | |
id |
string | Yes | |
url |
string | Yes | |
width |
integer or null | Yes |
required: ["id","url","alt","width","height"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
channel |
string | Yes | |
id |
string | Yes | |
purpose |
string | Yes | |
status |
string | Yes |
required: ["id","channel","purpose","status"]
number or string or null fields
Value: number or string or null.
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
day |
integer | Yes | maximum: 6; minimum: 0 |
hour |
integer | Yes | maximum: 23; minimum: 0 |
minute |
integer | Yes | maximum: 59; minimum: 0 |
additionalProperties: false; required: ["day","hour","minute"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
day |
number | Yes | const: 0 |
hour |
number | Yes | const: 0 |
minute |
number | Yes | const: 0 |
additionalProperties: false; required: ["day","hour","minute"]
string fields
Value: string.
format: "date"; pattern: "^\d{4}-\d{2}-\d{2}$"
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
close_day_offset |
enum | Yes | enum: [0,1] |
close_time |
string | Yes | Local wall-clock time, HH:mm (24-hour), in the explicitly selected location timezone. pattern: "^(?:[01]\d|2[0-3]):[0-5]\d$" |
open_time |
string | Yes | Local wall-clock time, HH:mm (24-hour), in the explicitly selected location timezone. pattern: "^(?:[01]\d|2[0-3]):[0-5]\d$" |
additionalProperties: false; required: ["open_time","close_time","close_day_offset"]
object fields
| Field | Type | Required | Description and constraints |
|---|---|---|---|
active |
boolean | No | |
id |
string | No | |
name |
string | No | |
option_values |
object | No | Option id to option value id. Every option must be answered exactly once, and no two variants may answer identically. additionalProperties: {"type":"string"} |
prices |
array of object (fields) | No | Partial existing prices by id or new offers. Omitted prices remain. A new offer requires unit_amount. maxItems: 20 |
sku |
string or null | No | |
sort_order |
integer | No |
additionalProperties: false; required: []
array of object fields
Value: array of object.
maxItems: 20
Array items: object.