addedInput schema / properties / advanced
Added value: +{
+ "additionalProperties": false,
+ "description": "RAW site code, the last resort. Use globalTheme.customTailwindConfig for CSS and seo.jsonLd for structured data. Each field REPLACES the previous value, so read the current settings and send the full code. It runs on every visitor's page, and the Studio flags every agent change to it.",
+ "properties": {
+ "customBodyCode": {
+ "description": "Markup injected at the end of <body>.",
+ "type": "string"
+ },
+ "customCSS": {
+ "description": "Legacy stylesheet. Prefer globalTheme.customTailwindConfig.",
+ "type": "string"
+ },
+ "customHeadCode": {
+ "description": "Markup injected at the end of <head> (verification meta tags, third-party embeds).",
+ "type": "string"
+ },
+ "customJS": {
+ "description": "Script body (no <script> tag) run on every page.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / analytics
Added value: +{
+ "additionalProperties": false,
+ "description": "Analytics ids — the snippet is generated from the id. Empty string removes one.",
+ "properties": {
+ "customAnalytics": {
+ "description": "JavaScript BODY (no <script> tag; it is wrapped in one for you) for tracking the id fields can't express. A provider installed with a `<script src=…>` tag (Plausible, Fathom, PostHog) goes in `advanced.customHeadCode` instead: pasted here, its tag lands inside another <script> and never loads. REPLACES the previous value. It runs on every visitor's page, so only write code the user gave you or asked for; the Studio flags every AI change to it.",
+ "type": "string"
+ },
+ "facebookPixelId": {
+ "type": "string"
+ },
+ "googleAnalyticsId": {
+ "description": "GA4 measurement id, e.g. 'G-XXXXXXXXXX'.",
+ "type": "string"
+ },
+ "googleTagManagerId": {
+ "description": "e.g. 'GTM-XXXXXXX'.",
+ "type": "string"
+ },
+ "hotjarId": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / branding
Added value: +{
+ "additionalProperties": false,
+ "description": "The \"Made with Swebsy\" badge. Turning it off only takes effect on plans that include badge removal; free plans keep the badge on export regardless.",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "type": "object"
+}
addedInput schema / properties / deploy
Added value: +{
+ "additionalProperties": false,
+ "description": "Deploy target configuration. API tokens are never settable here: the user pastes them in Settings → Deployment. Send only the keys that change.",
+ "properties": {
+ "cloudflare": {
+ "additionalProperties": false,
+ "properties": {
+ "accountId": {
+ "type": "string"
+ },
+ "customDomain": {
+ "type": "string"
+ },
+ "projectName": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "defaultPlatform": {
+ "enum": [
+ "swebsy-hosting",
+ "github-pages",
+ "cloudflare-pages"
+ ],
+ "type": "string"
+ },
+ "github": {
+ "additionalProperties": false,
+ "properties": {
+ "branch": {
+ "description": "Branch that receives the build. Default gh-pages.",
+ "type": "string"
+ },
+ "customDomain": {
+ "type": "string"
+ },
+ "repo": {
+ "description": "'owner/name'.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "swebsy": {
+ "additionalProperties": false,
+ "properties": {
+ "subdomain": {
+ "description": "Preferred <subdomain>.swebsy.site for the next publish.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / favicon
Added value: +{
+ "additionalProperties": false,
+ "description": "Set the favicon from one square image. Upload it with `upload_asset` first (PNG or SVG, at least 512x512), then pass its asset id. Every size (16px up to 512px, Apple touch, Android, MS tile) is generated from it.",
+ "properties": {
+ "assetId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "assetId"
+ ],
+ "type": "object"
+}
changedInput schema / properties / fonts / description
Previous value: -"Google fonts to add/replace. Pass the full desired list — the array replaces what was there."New value: +"Fonts to add/replace. Each array you pass replaces what was there, so send the full desired list; an omitted array is kept."
addedInput schema / properties / fonts / properties / custom
Added value: +{
+ "description": "Self-hosted font families. Upload each file with `upload_asset` first and use the returned asset id. Then set typography.fontFamily to a stack starting with `family`.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "family": {
+ "type": "string"
+ },
+ "variations": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "format": {
+ "enum": [
+ "woff2",
+ "woff",
+ "truetype",
+ "opentype"
+ ],
+ "type": "string"
+ },
+ "id": {
+ "description": "Asset id from `upload_asset`.",
+ "type": "string"
+ },
+ "style": {
+ "enum": [
+ "normal",
+ "italic"
+ ],
+ "type": "string"
+ },
+ "weight": {
+ "description": "'100' through '900'.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "weight",
+ "style",
+ "format"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "family",
+ "variations"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / fonts / properties / google / items / properties / opsz
Added value: +{
+ "description": "Optical-size axis range [min, max] for variable fonts that expose `opsz` (e.g. [9, 144] for Fraunces).",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 2,
+ "minItems": 2,
+ "type": "array"
+}
addedInput schema / properties / general / properties / direction
Added value: +{
+ "description": "Text direction; `rtl` for Arabic, Hebrew, Persian.",
+ "enum": [
+ "ltr",
+ "rtl"
+ ],
+ "type": "string"
+}
addedInput schema / properties / globalTheme / properties / animation
Added value: +{
+ "additionalProperties": false,
+ "description": "Site-wide defaults for scroll-reveal animations (`animate_page`).",
+ "properties": {
+ "duration": {
+ "description": "CSS time, e.g. '500ms'.",
+ "type": "string"
+ },
+ "easing": {
+ "description": "CSS easing, e.g. 'cubic-bezier(0.22, 1, 0.36, 1)'.",
+ "type": "string"
+ },
+ "once": {
+ "description": "Animate only the first time an element enters the viewport.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / globalTheme / properties / typography / properties / baseSize
Added value: +{
+ "description": "Modular type scale base, e.g. '1rem' or '17px'. Every text-* size is derived as baseSize × scaleRatio^n. Send with `scaleRatio`.",
+ "type": "string"
+}
addedInput schema / properties / globalTheme / properties / typography / properties / fontWeight
Added value: +{
+ "additionalProperties": false,
+ "description": "Numeric weight behind each weight utility, e.g. { bold: '800' }.",
+ "properties": {
+ "bold": {
+ "type": "string"
+ },
+ "light": {
+ "type": "string"
+ },
+ "medium": {
+ "type": "string"
+ },
+ "normal": {
+ "type": "string"
+ },
+ "semibold": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / globalTheme / properties / typography / properties / lineHeight
Added value: +{
+ "additionalProperties": false,
+ "description": "Unitless line heights, e.g. { tight: '1.1' }.",
+ "properties": {
+ "normal": {
+ "type": "string"
+ },
+ "relaxed": {
+ "type": "string"
+ },
+ "tight": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / globalTheme / properties / typography / properties / scaleRatio
Added value: +{
+ "description": "Modular type scale ratio, e.g. 1.2 (minor third, dense UI), 1.25 (default), 1.333 (editorial), 1.5 (dramatic display).",
+ "type": "number"
+}
addedInput schema / properties / performance
Added value: +{
+ "additionalProperties": false,
+ "description": "Crawling files, service worker, security headers and export-time image optimization.",
+ "properties": {
+ "contentSecurityPolicy": {
+ "description": "Content-Security-Policy value, emitted as a meta tag. A wrong policy breaks the live site's scripts, fonts or images, so only set it when asked.",
+ "type": "string"
+ },
+ "customRobotsTxt": {
+ "description": "Custom robots.txt body. It REPLACES the whole generated file, so include `User-agent`, every rule and every `Sitemap:` line, including the default `<siteUrl>/sitemap.xml`. Read the current settings first and extend them. Empty string restores the generated file. Requires `generateRobotsTxt: true`.",
+ "type": "string"
+ },
+ "enableServiceWorker": {
+ "description": "Offline caching service worker in the export.",
+ "type": "boolean"
+ },
+ "generateRobotsTxt": {
+ "type": "boolean"
+ },
+ "generateSitemap": {
+ "description": "Emit /sitemap.xml from the page list (needs `seo.siteUrl`).",
+ "type": "boolean"
+ },
+ "imageOptimization": {
+ "additionalProperties": false,
+ "description": "Re-encode images at export/deploy. Originals are never touched. Send only the keys that change.",
+ "properties": {
+ "format": {
+ "description": "Only used when preset is 'custom'.",
+ "enum": [
+ "webp",
+ "avif"
+ ],
+ "type": "string"
+ },
+ "maxDimension": {
+ "description": "Longest edge in px; 0 = don't resize.",
+ "minimum": 0,
+ "type": "number"
+ },
+ "preset": {
+ "description": "'balanced' = WebP q80 ≤2560px (default); 'maximum' = smallest files (AVIF); 'custom' uses format/quality/maxDimension.",
+ "enum": [
+ "off",
+ "balanced",
+ "maximum",
+ "custom"
+ ],
+ "type": "string"
+ },
+ "quality": {
+ "description": "Only used when preset is 'custom'.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "preloadCritical": {
+ "description": "Preload critical fonts and CSS.",
+ "type": "boolean"
+ },
+ "referrerPolicy": {
+ "description": "Empty string = browser default.",
+ "enum": [
+ "",
+ "no-referrer",
+ "no-referrer-when-downgrade",
+ "origin",
+ "origin-when-cross-origin",
+ "strict-origin-when-cross-origin"
+ ],
+ "type": "string"
+ },
+ "smoothScrolling": {
+ "type": "boolean"
+ },
+ "xFrameOptions": {
+ "enum": [
+ "",
+ "DENY",
+ "SAMEORIGIN"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / seo / properties / ogType
Added value: +{
+ "enum": [
+ "website",
+ "article",
+ "blog",
+ "product"
+ ],
+ "type": "string"
+}
addedInput schema / properties / seo / properties / robots
Added value: +{
+ "description": "Site-wide robots meta tag. For robots.txt use `performance.customRobotsTxt`; for one page use `page.robots`.",
+ "enum": [
+ "index, follow",
+ "noindex, nofollow",
+ "index, nofollow",
+ "noindex, follow"
+ ],
+ "type": "string"
+}
addedInput schema / properties / seo / properties / twitterCard
Added value: +{
+ "enum": [
+ "summary",
+ "summary_large_image",
+ "app",
+ "player"
+ ],
+ "type": "string"
+}