changedInput schema / properties / block / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "description": "A tappable button with a label and URL. Optional thumbnail and icon.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "highlight": {
- "type": "boolean"
- },
- "icon": {
- "maxLength": 64,
- "type": "string"
- },
- "label": {
- "maxLength": 120,
- "type": "string"
- },
- "thumbnail": {
- "additionalProperties": false,
- "properties": {
- "alt": {
- "description": "Alt text for accessibility.",
- "type": "string"
- },
- "height": {
- "type": "number"
- },
- "mediaAssetId": {
- "format": "uuid",
- "type": "string"
- },
- "src": {
- "description": "Image URL or stored media URL.",
- "type": "string"
- },
- "variants": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object"
- },
- "width": {
- "type": "number"
- }
- },
- "required": [
- "src"
- ],
- "type": "object"
- },
- "url": {
- "description": "Destination URL using http, https, mailto, tel, or sms.",
- "maxLength": 2048,
- "type": "string"
- }
- },
- "required": [
- "label",
- "url"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a link block.",
- "enum": [
- "link"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "A compact row of social icons. Items are { platform, url }.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "items": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "label": {
- "maxLength": 64,
- "type": "string"
- },
- "platform": {
- "enum": [
- "instagram",
- "tiktok",
- "youtube",
- "x",
- "facebook",
- "linkedin",
- "spotify",
- "apple_music",
- "soundcloud",
- "github",
- "pinterest",
- "threads",
- "twitch",
- "discord",
- "telegram",
- "snapchat",
- "vimeo",
- "behance",
- "dribbble",
- "medium",
- "substack",
- "website",
- "other"
- ],
- "type": "string"
- },
- "url": {
- "description": "Public http(s) social/profile URL.",
- "type": "string"
- }
- },
- "required": [
- "platform",
- "url"
- ],
- "type": "object"
- },
- "maxItems": 16,
- "type": "array"
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a social_row block.",
- "enum": [
- "social_row"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "WhatsApp CTA. Requires a WhatsApp number (digits only).",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "label": {
- "maxLength": 120,
- "type": "string"
- },
- "message": {
- "description": "Optional prefilled message.",
- "maxLength": 500,
- "type": "string"
- },
- "number": {
- "description": "Public WhatsApp phone number.",
- "maxLength": 32,
- "type": "string"
- }
- },
- "required": [
- "number"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a whatsapp block.",
- "enum": [
- "whatsapp"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Tel: button. Requires a phone number.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "label": {
- "maxLength": 120,
- "type": "string"
- },
- "number": {
- "description": "Public phone number.",
- "maxLength": 32,
- "type": "string"
- }
- },
- "required": [
- "number"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a phone_call block.",
- "enum": [
- "phone_call"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Mailto: button. Requires an email address.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "email": {
- "description": "Public business email address.",
- "type": "string"
- },
- "label": {
- "maxLength": 120,
- "type": "string"
- },
- "subject": {
- "maxLength": 160,
- "type": "string"
- }
- },
- "required": [
- "email"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a email_contact block.",
- "enum": [
- "email_contact"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "A single image with layout classic | wide | background.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "caption": {
- "maxLength": 280,
- "type": "string"
- },
- "image": {
- "additionalProperties": false,
- "properties": {
- "alt": {
- "description": "Alt text for accessibility.",
- "type": "string"
- },
- "height": {
- "type": "number"
- },
- "mediaAssetId": {
- "format": "uuid",
- "type": "string"
- },
- "src": {
- "description": "Image URL or stored media URL.",
- "type": "string"
- },
- "variants": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object"
- },
- "width": {
- "type": "number"
- }
- },
- "required": [
- "src"
- ],
- "type": "object"
- },
- "layout": {
- "enum": [
- "classic",
- "wide",
- "background"
- ],
- "type": "string"
- },
- "link_url": {
- "maxLength": 2048,
- "type": "string"
- }
- },
- "required": [
- "image"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a image block.",
- "enum": [
- "image"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Multiple images in a grid or carousel.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "display": {
- "enum": [
- "grid",
- "carousel"
- ],
- "type": "string"
- },
- "items": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "alt": {
- "description": "Alt text for accessibility.",
- "type": "string"
- },
- "height": {
- "type": "number"
- },
- "mediaAssetId": {
- "format": "uuid",
- "type": "string"
- },
- "src": {
- "description": "Image URL or stored media URL.",
- "type": "string"
- },
- "variants": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object"
- },
- "width": {
- "type": "number"
- }
- },
- "required": [
- "src"
- ],
- "type": "object"
- },
- "maxItems": 24,
- "type": "array"
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a gallery block.",
- "enum": [
- "gallery"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "YouTube, Vimeo, or mp4. Use normalized provider + video_id.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "provider": {
- "enum": [
- "youtube",
- "vimeo",
- "mp4"
- ],
- "type": "string"
- },
- "thumbnail": {
- "additionalProperties": false,
- "properties": {
- "alt": {
- "description": "Alt text for accessibility.",
- "type": "string"
- },
- "height": {
- "type": "number"
- },
- "mediaAssetId": {
- "format": "uuid",
- "type": "string"
- },
- "src": {
- "description": "Image URL or stored media URL.",
- "type": "string"
- },
- "variants": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object"
- },
- "width": {
- "type": "number"
- }
- },
- "required": [
- "src"
- ],
- "type": "object"
- },
- "title": {
- "maxLength": 160,
- "type": "string"
- },
- "video_id": {
- "description": "Video id or URL, depending on provider.",
- "maxLength": 2048,
- "type": "string"
- }
- },
- "required": [
- "provider",
- "video_id"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a video_embed block.",
- "enum": [
- "video_embed"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "A short final-audience heading, body, and/or list block.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "alignment": {
- "enum": [
- "left",
- "center"
- ],
- "type": "string"
- },
- "body": {
- "maxLength": 2000,
- "type": "string"
- },
- "heading": {
- "maxLength": 160,
- "type": "string"
- },
- "items": {
- "items": {
- "maxLength": 280,
- "type": "string"
- },
- "maxItems": 12,
- "type": "array"
- }
- },
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a text block.",
- "enum": [
- "text"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Google Maps embed by address, place_id, or lat/lng.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "address": {
- "description": "Public business address or service-area text.",
- "maxLength": 400,
- "type": "string"
- },
- "label": {
- "maxLength": 160,
- "type": "string"
- },
- "lat": {
- "maximum": 90,
- "minimum": -90,
- "type": "number"
- },
- "lng": {
- "maximum": 180,
- "minimum": -180,
- "type": "number"
- },
- "place_id": {
- "maxLength": 160,
- "type": "string"
- },
- "zoom": {
- "maximum": 20,
- "minimum": 1,
- "type": "number"
- }
- },
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a map_embed block.",
- "enum": [
- "map_embed"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "A link-out commerce card with name, image, price, and buy URL.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "buy_url": {
- "description": "Public http(s) purchase URL.",
- "type": "string"
- },
- "cta_label": {
- "maxLength": 120,
- "type": "string"
- },
- "description": {
- "maxLength": 280,
- "type": "string"
- },
- "image": {
- "additionalProperties": false,
- "properties": {
- "alt": {
- "description": "Alt text for accessibility.",
- "type": "string"
- },
- "height": {
- "type": "number"
- },
- "mediaAssetId": {
- "format": "uuid",
- "type": "string"
- },
- "src": {
- "description": "Image URL or stored media URL.",
- "type": "string"
- },
- "variants": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object"
- },
- "width": {
- "type": "number"
- }
- },
- "required": [
- "src"
- ],
- "type": "object"
- },
- "name": {
- "maxLength": 160,
- "type": "string"
- },
- "price_text": {
- "maxLength": 40,
- "type": "string"
- }
- },
- "required": [
- "name",
- "buy_url"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a product_card block.",
- "enum": [
- "product_card"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Capture form. mode: contact | newsletter | booking_interest. Supply field labels and submit text for localized public pages.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "consent_text": {
- "maxLength": 400,
- "type": "string"
- },
- "description": {
- "maxLength": 280,
- "type": "string"
- },
- "destination_email": {
- "description": "Public/business lead recipient email.",
- "type": "string"
- },
- "destination_webhook": {
- "description": "Public http(s) webhook URL.",
- "type": "string"
- },
- "field_labels": {
- "additionalProperties": {
- "maxLength": 120,
- "type": "string"
- },
- "description": "Public labels/placeholders for form fields in the page's target language.",
- "type": "object"
- },
- "fields": {
- "items": {
- "enum": [
- "name",
- "email",
- "phone",
- "message",
- "company"
- ],
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "mode": {
- "enum": [
- "contact",
- "newsletter",
- "booking_interest"
- ],
- "type": "string"
- },
- "submit_label": {
- "maxLength": 120,
- "type": "string"
- },
- "success_message": {
- "maxLength": 280,
- "type": "string"
- },
- "title": {
- "maxLength": 160,
- "type": "string"
- }
- },
- "required": [
- "mode",
- "fields"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a lead_form block.",
- "enum": [
- "lead_form"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Carousel or stack of testimonials.",
- "properties": {
- "props": {
- "additionalProperties": false,
- "properties": {
- "display": {
- "enum": [
- "carousel",
- "stack"
- ],
- "type": "string"
- },
- "items": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "author": {
- "maxLength": 64,
- "type": "string"
- },
- "avatar": {
- "additionalProperties": false,
- "properties": {
- "alt": {
- "description": "Alt text for accessibility.",
- "type": "string"
- },
- "height": {
- "type": "number"
- },
- "mediaAssetId": {
- "format": "uuid",
- "type": "string"
- },
- "src": {
- "description": "Image URL or stored media URL.",
- "type": "string"
- },
- "variants": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object"
- },
- "width": {
- "type": "number"
- }
- },
- "required": [
- "src"
- ],
- "type": "object"
- },
- "body": {
- "maxLength": 280,
- "type": "string"
- },
- "rating": {
- "maximum": 5,
- "minimum": 1,
- "type": "number"
- },
- "role": {
- "maxLength": 120,
- "type": "string"
- }
- },
- "required": [
- "author",
- "body"
- ],
- "type": "object"
- },
- "maxItems": 12,
- "type": "array"
- }
- },
- "required": [
- "items"
- ],
- "type": "object"
- },
- "type": {
- "description": "Use this variant only for a reviews block.",
- "enum": [
- "reviews"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "props"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "description": "A tappable button with a label and URL. Optional thumbnail and icon.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "highlight": {
+ "type": "boolean"
+ },
+ "icon": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "label": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "thumbnail": {
+ "additionalProperties": false,
+ "properties": {
+ "alt": {
+ "description": "Alt text for accessibility.",
+ "type": "string"
+ },
+ "height": {
+ "type": "number"
+ },
+ "mediaAssetId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "src": {
+ "description": "Image URL or stored media URL.",
+ "type": "string"
+ },
+ "variants": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "width": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "src"
+ ],
+ "type": "object"
+ },
+ "url": {
+ "description": "Destination URL using http, https, mailto, tel, or sms.",
+ "maxLength": 2048,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "url"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a link block.",
+ "enum": [
+ "link"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "A compact row of social icons. Items are { platform, url }.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "items": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "platform": {
+ "enum": [
+ "instagram",
+ "tiktok",
+ "youtube",
+ "x",
+ "facebook",
+ "linkedin",
+ "spotify",
+ "apple_music",
+ "soundcloud",
+ "github",
+ "pinterest",
+ "threads",
+ "twitch",
+ "discord",
+ "telegram",
+ "snapchat",
+ "vimeo",
+ "behance",
+ "dribbble",
+ "medium",
+ "substack",
+ "website",
+ "other"
+ ],
+ "type": "string"
+ },
+ "url": {
+ "description": "Public http(s) social/profile URL.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "platform",
+ "url"
+ ],
+ "type": "object"
+ },
+ "maxItems": 16,
+ "type": "array"
+ }
+ },
+ "required": [
+ "items"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a social_row block.",
+ "enum": [
+ "social_row"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "WhatsApp CTA. Requires a WhatsApp number (digits only).",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "message": {
+ "description": "Optional prefilled message.",
+ "maxLength": 500,
+ "type": "string"
+ },
+ "number": {
+ "description": "Public WhatsApp phone number.",
+ "maxLength": 32,
+ "type": "string"
+ }
+ },
+ "required": [
+ "number"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a whatsapp block.",
+ "enum": [
+ "whatsapp"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Tel: button. Requires a phone number.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "label": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "number": {
+ "description": "Public phone number.",
+ "maxLength": 32,
+ "type": "string"
+ }
+ },
+ "required": [
+ "number"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a phone_call block.",
+ "enum": [
+ "phone_call"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Mailto: button. Requires an email address.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "email": {
+ "description": "Public business email address.",
+ "type": "string"
+ },
+ "label": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "subject": {
+ "maxLength": 160,
+ "type": "string"
+ }
+ },
+ "required": [
+ "email"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a email_contact block.",
+ "enum": [
+ "email_contact"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "A single image with layout classic | wide | background.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "caption": {
+ "maxLength": 280,
+ "type": "string"
+ },
+ "image": {
+ "additionalProperties": false,
+ "properties": {
+ "alt": {
+ "description": "Alt text for accessibility.",
+ "type": "string"
+ },
+ "height": {
+ "type": "number"
+ },
+ "mediaAssetId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "src": {
+ "description": "Image URL or stored media URL.",
+ "type": "string"
+ },
+ "variants": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "width": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "src"
+ ],
+ "type": "object"
+ },
+ "layout": {
+ "enum": [
+ "classic",
+ "wide",
+ "background"
+ ],
+ "type": "string"
+ },
+ "link_url": {
+ "maxLength": 2048,
+ "type": "string"
+ }
+ },
+ "required": [
+ "image"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a image block.",
+ "enum": [
+ "image"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Multiple images in a grid or carousel.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "display": {
+ "enum": [
+ "grid",
+ "carousel"
+ ],
+ "type": "string"
+ },
+ "items": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "alt": {
+ "description": "Alt text for accessibility.",
+ "type": "string"
+ },
+ "height": {
+ "type": "number"
+ },
+ "mediaAssetId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "src": {
+ "description": "Image URL or stored media URL.",
+ "type": "string"
+ },
+ "variants": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "width": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "src"
+ ],
+ "type": "object"
+ },
+ "maxItems": 24,
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a gallery block.",
+ "enum": [
+ "gallery"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "YouTube, Vimeo, or mp4. Use normalized provider + video_id.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "provider": {
+ "enum": [
+ "youtube",
+ "vimeo",
+ "mp4"
+ ],
+ "type": "string"
+ },
+ "thumbnail": {
+ "additionalProperties": false,
+ "properties": {
+ "alt": {
+ "description": "Alt text for accessibility.",
+ "type": "string"
+ },
+ "height": {
+ "type": "number"
+ },
+ "mediaAssetId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "src": {
+ "description": "Image URL or stored media URL.",
+ "type": "string"
+ },
+ "variants": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "width": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "src"
+ ],
+ "type": "object"
+ },
+ "title": {
+ "maxLength": 160,
+ "type": "string"
+ },
+ "video_id": {
+ "description": "Video id or URL, depending on provider.",
+ "maxLength": 2048,
+ "type": "string"
+ }
+ },
+ "required": [
+ "provider",
+ "video_id"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a video_embed block.",
+ "enum": [
+ "video_embed"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "A short final-audience heading, body, and/or list block.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "alignment": {
+ "enum": [
+ "left",
+ "center"
+ ],
+ "type": "string"
+ },
+ "body": {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ "heading": {
+ "maxLength": 160,
+ "type": "string"
+ },
+ "items": {
+ "items": {
+ "maxLength": 280,
+ "type": "string"
+ },
+ "maxItems": 12,
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a text block.",
+ "enum": [
+ "text"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Google Maps embed by address, place_id, or lat/lng.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "address": {
+ "description": "Public business address or service-area text.",
+ "maxLength": 400,
+ "type": "string"
+ },
+ "label": {
+ "maxLength": 160,
+ "type": "string"
+ },
+ "lat": {
+ "maximum": 90,
+ "minimum": -90,
+ "type": "number"
+ },
+ "lng": {
+ "maximum": 180,
+ "minimum": -180,
+ "type": "number"
+ },
+ "place_id": {
+ "maxLength": 160,
+ "type": "string"
+ },
+ "zoom": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a map_embed block.",
+ "enum": [
+ "map_embed"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "A link-out commerce card with name, image, price, and buy URL.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "buy_url": {
+ "description": "Public http(s) purchase URL.",
+ "type": "string"
+ },
+ "cta_label": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 280,
+ "type": "string"
+ },
+ "image": {
+ "additionalProperties": false,
+ "properties": {
+ "alt": {
+ "description": "Alt text for accessibility.",
+ "type": "string"
+ },
+ "height": {
+ "type": "number"
+ },
+ "mediaAssetId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "src": {
+ "description": "Image URL or stored media URL.",
+ "type": "string"
+ },
+ "variants": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "width": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "src"
+ ],
+ "type": "object"
+ },
+ "name": {
+ "maxLength": 160,
+ "type": "string"
+ },
+ "price_text": {
+ "maxLength": 40,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a product_card block.",
+ "enum": [
+ "product_card"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Capture form. mode: contact | newsletter | booking_interest. Supply field labels and submit text for localized public pages.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "consent_text": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 280,
+ "type": "string"
+ },
+ "destination_email": {
+ "description": "Public/business lead recipient email.",
+ "type": "string"
+ },
+ "destination_webhook": {
+ "description": "Public http(s) webhook URL.",
+ "type": "string"
+ },
+ "field_labels": {
+ "additionalProperties": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "description": "Public labels/placeholders for form fields in the page's target language.",
+ "type": "object"
+ },
+ "fields": {
+ "items": {
+ "enum": [
+ "name",
+ "email",
+ "phone",
+ "message",
+ "company"
+ ],
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "mode": {
+ "enum": [
+ "contact",
+ "newsletter",
+ "booking_interest"
+ ],
+ "type": "string"
+ },
+ "submit_label": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "success_message": {
+ "maxLength": 280,
+ "type": "string"
+ },
+ "title": {
+ "maxLength": 160,
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode",
+ "fields"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a lead_form block.",
+ "enum": [
+ "lead_form"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Carousel or stack of testimonials.",
+ "properties": {
+ "props": {
+ "additionalProperties": false,
+ "properties": {
+ "display": {
+ "enum": [
+ "carousel",
+ "stack"
+ ],
+ "type": "string"
+ },
+ "items": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "author": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "avatar": {
+ "additionalProperties": false,
+ "properties": {
+ "alt": {
+ "description": "Alt text for accessibility.",
+ "type": "string"
+ },
+ "height": {
+ "type": "number"
+ },
+ "mediaAssetId": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "src": {
+ "description": "Image URL or stored media URL.",
+ "type": "string"
+ },
+ "variants": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "width": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "src"
+ ],
+ "type": "object"
+ },
+ "body": {
+ "maxLength": 280,
+ "type": "string"
+ },
+ "rating": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "number"
+ },
+ "role": {
+ "maxLength": 120,
+ "type": "string"
+ }
+ },
+ "required": [
+ "author",
+ "body"
+ ],
+ "type": "object"
+ },
+ "maxItems": 12,
+ "type": "array"
+ }
+ },
+ "required": [
+ "items"
+ ],
+ "type": "object"
+ },
+ "type": {
+ "description": "Use this variant only for a reviews block.",
+ "enum": [
+ "reviews"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "props"
+ ],
+ "type": "object"
+ }
+]