Hoppa till innehållet

Innehållssidor

CMS pages: the navigable list and a page by slug, with its sections. Used for terms, about, delivery information and anything else the tenant edits without a deploy.

5 anrop GET POST Bas-URL https://api.erp.fluit.cloud/ecom

Autentisering, felkoder, rate limits, idempotens och paginering gäller alla anrop och står samlade under Kom igång.

GET /custom-blocks/preview/{token}

Get a custom block preview rendered by the block editor

Admin preview only: returns the rendered HTML and scoped CSS of an unsaved custom block draft. Requires a valid admin preview token for the channel in X-Admin-Preview. Tokens expire after 30 minutes.

Sökvägsparametrar

Fält Typ
token Krävs string

Svar

200 EcomCustomBlockPreviewResponse
Fält Typ
blockKey string · nullable
css string · nullable
html string · nullable
useShell boolean
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 401 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/custom-blocks/preview/{token}" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "blockKey": "string",
  "css": "string",
  "html": "string",
  "useShell": true
}

Bas-URL https://api.erp.fluit.cloud/ecom. Svarsexemplet är genererat ur schemat: formen stämmer, värdena är påhittade.

POST /forms/{formToken}/submissions

Submit a form shown on a page

Submits the answers to a form that a page section carries (section type Form; the section's form has the token, the fields and the consent text). Send the answers as 'data': a JSON string of an object keyed by field id.

Visa hela beskrivningen

File fields need multipart/form-data, with the files as parts and the other properties as fields of the same name. 'formLoadedAtUnixMs' is required — when the form was shown — and so is consentGiven=true when the form has consent text. A submission that looks automated gets the same 200 as a real one and is dropped; the response never tells a bot it was caught. What happens next — a deal or a ticket, notification emails, a receipt — is set on the form in Fluit, not by the storefront.

Sökvägsparametrar

Fält Typ
formToken Krävs string(uuid)

Body krävs

Fält Typ Beskrivning
captchaToken string · nullable
consentGiven boolean Besökaren kryssade i formulärets samtyckesruta.
data string · nullable Svaren: en JSON-sträng med ett objekt där fältets id är nyckeln.
formLoadedAtUnixMs integer · nullable När formuläret visades, i millisekunder sedan epoken.
honeypot string · nullable Ett dolt fält som ska lämnas tomt.
sourceUrl string · nullable Sidan besökaren skickade från. Sparas som källa på inskicket.
utmCampaign string · nullable
utmMedium string · nullable
utmSource string · nullable

Svar

200 SubmitFormResponse
Fält Typ Beskrivning
received boolean Alltid true — även när inskicket sorterats bort som automatiserat.

Standardfel: 400 404 409 429 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/forms/{formToken}/submissions" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 200
{
  "received": true
}

Bas-URL https://api.erp.fluit.cloud/ecom. Svarsexemplet är genererat ur schemat: formen stämmer, värdena är påhittade.

GET /pages

Get published content pages for navigation

Returns every published page in the channel as a flat list, in the tenant's own sort order. Each entry carries its storefront path (pages live at the root, nested under their parent: /about, /services/tyres; the home page is /), its parentPageId and whether it is hidden from search engines.

Visa hela beskrivningen

The menu itself comes from the session's navigation, not from this list. Read the page body with GET /ecom/pages/resolve?path= or GET /ecom/pages/{slug}.

Stödjer ETag

Svar

200 ContentPageNavResponse[]
Fält Typ Beskrivning
noIndex boolean Sidan ska inte indexeras och hör inte hemma i en sitemap.
pageType string · nullable `Page`, `Home`, `BlogPost` eller `NewsPost`.
parentPageId string(uuid) · nullable
path string · nullable Sidans adress i butiken, t.ex. `/tjanster/dackbyte`; startsidan är `/`.
showInNavigation boolean
slug string · nullable
sortOrder integer
title string · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/pages" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
[
  {
    "noIndex": true,
    "pageType": "string",
    "parentPageId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
    "path": "string",
    "showInNavigation": true,
    "slug": "string",
    "sortOrder": 42,
    "title": "string"
  }
]

Bas-URL https://api.erp.fluit.cloud/ecom. Svarsexemplet är genererat ur schemat: formen stämmer, värdena är påhittade.

GET /pages/{slug}

Get a published content page by slug

Returns a published page with its SEO fields and its sections in display order. Sections are typed — text, image, testimonial, feature cards, forms, FAQ — and a storefront renders each kind its own way, so treat an unfamiliar section type as something to skip rather than fail on.

Visa hela beskrivningen

Section collections are already expanded and forms carry their fields. An unpublished or missing page both return 404; the two are deliberately indistinguishable.

Stödjer ETag

Sökvägsparametrar

Fält Typ
slug Krävs string

Svar

200 ContentPageDetailResponse
Fält Typ Beskrivning
authorName string · nullable
breadcrumbs ContentPageBreadcrumb[] · nullable Sidans förfäder, närmast roten först. Startsidan ingår inte.
canonicalPath string · nullable Sidans rätta adress. Skiljer den sig från adressen som efterfrågades ska storefronten omdirigera dit permanent.
excerpt string · nullable
featuredImageUrl string · nullable
fullWidth boolean
isPreview boolean Svaret är en adminförhandsvisning av ett utkast.
layout string · nullable
metaDescription string · nullable
noIndex boolean Sidan ska inte indexeras.
ogImageUrl string · nullable Bild vid delning; tom betyder den utvalda bilden, sidans första herobild eller logotypen.
pageType string · nullable
publishDate string(date-time) · nullable
sections ContentPageSection[] · nullable
seoTitle string · nullable Titel i sökresultat och flik; tom betyder sidtiteln följd av kanalens namn.
slug string · nullable
tags string[] · nullable
title string · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/pages/{slug}" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "authorName": "Acme AB",
  "breadcrumbs": [
    {
      "path": "string",
      "title": "string"
    }
  ],
  "canonicalPath": "string",
  "excerpt": "string",
  "featuredImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "fullWidth": true,
  "isPreview": true,
  "layout": "string",
  "metaDescription": "string",
  "noIndex": true,
  "ogImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "pageType": "string",
  "publishDate": "2026-06-11T09:24:13.418",
  "sections": [
    {
      "alignment": "string",
      "anchor": "string",
      "articleLinkText": "string",
      "articleType": "string",
      "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "buttons": [
        {
          "label": "string",
          "openInNewTab": true,
          "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "variant": "string"
        }
      ],
      "cardColumns": 42,
      "cardVariant": "string",
      "categoryColumns": 42,
      "categoryId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "categoryIds": [
        "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
      ],
      "categoryImageAspect": "string",
      "categoryLayout": "string",
      "contact": {
        "directionsUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "mapImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "showAddress": true,
        "showEmail": true,
        "showOpeningHours": true,
        "showPhone": true
      },
      "cssClass": "string",
      "custom": {
        "blockKey": "string",
        "blockVersion": 42,
        "css": "string",
        "fields": null,
        "html": "string",
        "useShell": true
      },
      "embed": {
        "height": 42,
        "title": "string",
        "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      },
      "eyebrow": "string",
      "faq": {
        "items": [
          {
            "answerHtml": "string",
            "question": "string"
          }
        ]
      },
      "featureCards": [
        {
          "iconName": "Width",
          "imageAlt": "string",
          "imageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "linkText": "string",
          "linkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "text": "string",
          "title": "string"
        }
      ],
      "form": {
        "aside": "string",
        "asideHtml": "string",
        "consentText": "string",
        "description": "string",
        "fields": [
          {
            "fieldType": "string",
            "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
            "isRequired": true,
            "label": "string",
            "mapTo": "string",
            "options": [],
            "placeholder": "string"
          }
        ],
        "formToken": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
        "name": "Acme AB",
        "redirectUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "successMessage": "string"
      },
      "galleryImages": [
        {
          "altText": "string",
          "caption": "string",
          "imageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "linkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
        }
      ],
      "heroCtaText": "string",
      "heroCtaUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "heroHeight": "string",
      "heroImageCaption": "string",
      "heroImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "heroLayout": "string",
      "heroPortraitText": "string",
      "heroPortraitUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "heroTextColor": "string",
      "heroVideoPosterUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "heroVideoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "htmlContent": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "itemGroupId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "lead": "string",
      "logos": {
        "grayscale": true,
        "items": [
          {
            "altText": "string",
            "imageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "linkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
          }
        ],
        "size": "string"
      },
      "maxBrands": 42,
      "maxProducts": 42,
      "mediaText": {
        "altText": "string",
        "bodyHtml": "string",
        "mediaAspect": "string",
        "mediaPosition": "string",
        "mediaUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      },
      "narrowText": true,
      "parentCategoryId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "productColumns": 42,
      "productIds": [
        "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
      ],
      "productSort": "string",
      "productSpotlight": {
        "altText": "string",
        "badge": "string",
        "bodyHtml": "string",
        "documentCategory": "string",
        "documentIds": [
          "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
        ],
        "documents": "string",
        "layout": "string",
        "mediaPosition": "string",
        "mediaUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "productId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
        "showAddToCart": true,
        "showKeySpecs": true,
        "showPrice": true,
        "showStock": true
      },
      "showProductCount": true,
      "sortOrder": 42,
      "spacing": "string",
      "subtitle": "string",
      "supplierIds": [
        "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
      ],
      "testimonials": [
        {
          "author": "string",
          "avatarUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "quote": "string",
          "rating": 42,
          "role": "string"
        }
      ],
      "timeline": {
        "layout": "string",
        "marker": "string",
        "steps": [
          {
            "alternatives": [],
            "bodyHtml": "string",
            "buttons": [],
            "iconName": "Acme AB",
            "title": "string"
          }
        ]
      },
      "title": "string",
      "tone": "string",
      "twoColumns": true,
      "type": "string",
      "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
    }
  ],
  "seoTitle": "string",
  "slug": "string",
  "tags": [
    "string"
  ],
  "title": "string"
}

Bas-URL https://api.erp.fluit.cloud/ecom. Svarsexemplet är genererat ur schemat: formen stämmer, värdena är påhittade.

GET /pages/resolve

Resolve a storefront path to a content page

Looks up the published page for a storefront path such as /about or /services/tyres; / is the channel's home page. The last segment identifies the page (slugs are unique per channel), so a stale path still finds it: compare the response's canonicalPath with the requested path and redirect permanently when they differ.

Visa hela beskrivningen

That covers pages that moved under another parent and the old /pages/{slug} addresses. The first segment of a page path is never one of the storefront's own routes — see reservedSlugs in the session for the list.

Stödjer ETag

Frågeparametrar

Fält Typ
path string

Svar

200 ContentPageDetailResponse
Fält Typ Beskrivning
authorName string · nullable
breadcrumbs ContentPageBreadcrumb[] · nullable Sidans förfäder, närmast roten först. Startsidan ingår inte.
canonicalPath string · nullable Sidans rätta adress. Skiljer den sig från adressen som efterfrågades ska storefronten omdirigera dit permanent.
excerpt string · nullable
featuredImageUrl string · nullable
fullWidth boolean
isPreview boolean Svaret är en adminförhandsvisning av ett utkast.
layout string · nullable
metaDescription string · nullable
noIndex boolean Sidan ska inte indexeras.
ogImageUrl string · nullable Bild vid delning; tom betyder den utvalda bilden, sidans första herobild eller logotypen.
pageType string · nullable
publishDate string(date-time) · nullable
sections ContentPageSection[] · nullable
seoTitle string · nullable Titel i sökresultat och flik; tom betyder sidtiteln följd av kanalens namn.
slug string · nullable
tags string[] · nullable
title string · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/pages/resolve" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "authorName": "Acme AB",
  "breadcrumbs": [
    {
      "path": "string",
      "title": "string"
    }
  ],
  "canonicalPath": "string",
  "excerpt": "string",
  "featuredImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "fullWidth": true,
  "isPreview": true,
  "layout": "string",
  "metaDescription": "string",
  "noIndex": true,
  "ogImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "pageType": "string",
  "publishDate": "2026-06-11T09:24:13.418",
  "sections": [
    {
      "alignment": "string",
      "anchor": "string",
      "articleLinkText": "string",
      "articleType": "string",
      "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "buttons": [
        {
          "label": "string",
          "openInNewTab": true,
          "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "variant": "string"
        }
      ],
      "cardColumns": 42,
      "cardVariant": "string",
      "categoryColumns": 42,
      "categoryId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "categoryIds": [
        "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
      ],
      "categoryImageAspect": "string",
      "categoryLayout": "string",
      "contact": {
        "directionsUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "mapImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "showAddress": true,
        "showEmail": true,
        "showOpeningHours": true,
        "showPhone": true
      },
      "cssClass": "string",
      "custom": {
        "blockKey": "string",
        "blockVersion": 42,
        "css": "string",
        "fields": null,
        "html": "string",
        "useShell": true
      },
      "embed": {
        "height": 42,
        "title": "string",
        "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      },
      "eyebrow": "string",
      "faq": {
        "items": [
          {
            "answerHtml": "string",
            "question": "string"
          }
        ]
      },
      "featureCards": [
        {
          "iconName": "Width",
          "imageAlt": "string",
          "imageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "linkText": "string",
          "linkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "text": "string",
          "title": "string"
        }
      ],
      "form": {
        "aside": "string",
        "asideHtml": "string",
        "consentText": "string",
        "description": "string",
        "fields": [
          {
            "fieldType": "string",
            "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
            "isRequired": true,
            "label": "string",
            "mapTo": "string",
            "options": [],
            "placeholder": "string"
          }
        ],
        "formToken": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
        "name": "Acme AB",
        "redirectUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "successMessage": "string"
      },
      "galleryImages": [
        {
          "altText": "string",
          "caption": "string",
          "imageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "linkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
        }
      ],
      "heroCtaText": "string",
      "heroCtaUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "heroHeight": "string",
      "heroImageCaption": "string",
      "heroImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "heroLayout": "string",
      "heroPortraitText": "string",
      "heroPortraitUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "heroTextColor": "string",
      "heroVideoPosterUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "heroVideoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "htmlContent": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "itemGroupId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "lead": "string",
      "logos": {
        "grayscale": true,
        "items": [
          {
            "altText": "string",
            "imageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "linkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
          }
        ],
        "size": "string"
      },
      "maxBrands": 42,
      "maxProducts": 42,
      "mediaText": {
        "altText": "string",
        "bodyHtml": "string",
        "mediaAspect": "string",
        "mediaPosition": "string",
        "mediaUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      },
      "narrowText": true,
      "parentCategoryId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "productColumns": 42,
      "productIds": [
        "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
      ],
      "productSort": "string",
      "productSpotlight": {
        "altText": "string",
        "badge": "string",
        "bodyHtml": "string",
        "documentCategory": "string",
        "documentIds": [
          "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
        ],
        "documents": "string",
        "layout": "string",
        "mediaPosition": "string",
        "mediaUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "productId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
        "showAddToCart": true,
        "showKeySpecs": true,
        "showPrice": true,
        "showStock": true
      },
      "showProductCount": true,
      "sortOrder": 42,
      "spacing": "string",
      "subtitle": "string",
      "supplierIds": [
        "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
      ],
      "testimonials": [
        {
          "author": "string",
          "avatarUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "quote": "string",
          "rating": 42,
          "role": "string"
        }
      ],
      "timeline": {
        "layout": "string",
        "marker": "string",
        "steps": [
          {
            "alternatives": [],
            "bodyHtml": "string",
            "buttons": [],
            "iconName": "Acme AB",
            "title": "string"
          }
        ]
      },
      "title": "string",
      "tone": "string",
      "twoColumns": true,
      "type": "string",
      "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
    }
  ],
  "seoTitle": "string",
  "slug": "string",
  "tags": [
    "string"
  ],
  "title": "string"
}

Bas-URL https://api.erp.fluit.cloud/ecom. Svarsexemplet är genererat ur schemat: formen stämmer, värdena är påhittade.

Scheman

Objekten som gruppens anrop refererar till. Fälttabellerna ovan går ett steg djupt och länkar hit i stället för att upprepa samma schema på varje endpoint.

ContentPageBreadcrumb

ContentPageBreadcrumbResponse
Fält Typ
path string · nullable
title string · nullable

ContentPageSection

ContentPageSectionResponse

En sektion i ett sidsvar. Samma form för startsidan och innehållssidorna.

Fält Typ Beskrivning
alignment string · nullable Rubrikdelens justering: `Left` eller `Center`.
anchor string · nullable HTML-id för länkar direkt till sektionen (`#ankare`).
articleLinkText string · nullable
articleType string · nullable
bannerImageUrl string · nullable
bannerLinkUrl string · nullable
buttons SectionButton[] · nullable Knappar under rubrikdelen. Länkar till sidor har redan fått sidans aktuella adress.
cardColumns integer Antal kolumner för korten; noll betyder att storefronten väljer.
cardVariant string · nullable Hur korten ritas: `Icon`, `ImageTop`, `ImageLeft` eller `Figure`.
categoryColumns integer Antal kolumner för kategorierna på bred skärm (2–6); noll betyder att storefronten väljer.
categoryId string(uuid) · nullable
categoryIds string(uuid)[] · nullable
categoryImageAspect string · nullable Bildformatet för `Tile` och `Card`: `Portrait` (3:4), `Square` eller `Landscape` (4:3).
categoryLayout string · nullable Hur kategorierna ritas: `Badge`, `Tile` eller `Card`.
contact SectionContact
cssClass string · nullable
custom SectionCustom Ett eget block, ritat på servern.
embed SectionEmbed En `Embed`-sektion: en extern sida i en ram. `url` är alltid en absolut https-adress, `title` ramens tillgängliga namn och `height` höjden i pixlar.
eyebrow string · nullable Liten versal rad ovanför rubriken.
faq SectionFaq
featureCards ContentPageSectionFeatureCard[] · nullable
form SectionForm Ett formulär som ska ritas i sidan. Skicka in det med `POST /ecom/forms/{formToken}/submissions`.
galleryImages ContentPageSectionImage[] · nullable
heroCtaText string · nullable
heroCtaUrl string · nullable
heroHeight string · nullable Höjden på en hero med bakgrundsbild: Compact, Normal, Tall eller Full.
heroImageCaption string · nullable
heroImageUrl string · nullable
heroLayout string · nullable
heroPortraitText string · nullable
heroPortraitUrl string · nullable
heroTextColor string · nullable
heroVideoPosterUrl string · nullable
heroVideoUrl string · nullable
htmlContent string · nullable
id string(uuid)
itemGroupId string(uuid) · nullable
lead string · nullable Ingress i ett textblock.
logos SectionLogos
maxBrands integer
maxProducts integer
mediaText SectionMediaText
narrowText boolean Smal textspalt.
parentCategoryId string(uuid) · nullable
productColumns integer
productIds string(uuid)[] · nullable
productSort string · nullable
productSpotlight SectionProductSpotlight En `ProductSpotlight`-sektion: en artikel presenterad stort. `layout` är `SideBySide`, `Banner` eller `Row`, `mediaPosition``Left` eller `Right`, och `documents``None`, `Selected` eller `Category`. Vid `Selected` listas `documentIds`, vid `Category` artikelns alla dokument i `documentCategory`; båda finns i produktsvarets `documents`.
showProductCount boolean Visa antalet produkter under kategorins namn.
sortOrder integer
spacing string · nullable Luft ovanför och under: `Normal`, `Compact` eller `Spacious`.
subtitle string · nullable
supplierIds string(uuid)[] · nullable
testimonials ContentPageSectionTestimonial[] · nullable
timeline SectionTimeline
title string · nullable
tone string · nullable Bakgrund ur kanalens branding: `Default`, `Muted`, `Ink`, `Brand` eller `Accent`.
twoColumns boolean Bryt brödtexten i två spalter på bred skärm.
type string · nullable
videoUrl string · nullable

ContentPageSectionFeatureCard

ContentPageSectionFeatureCardResponse
Fält Typ Beskrivning
iconName string · nullable
imageAlt string · nullable Alt-text för kortets bild.
imageUrl string · nullable Kortets bild, när sektionen ritar kort med bild.
linkText string · nullable
linkUrl string · nullable
text string · nullable
title string · nullable

ContentPageSectionImage

ContentPageSectionImageResponse
Fält Typ
altText string · nullable
caption string · nullable
imageUrl string · nullable
linkUrl string · nullable

ContentPageSectionTestimonial

ContentPageSectionTestimonialResponse
Fält Typ
author string · nullable
avatarUrl string · nullable
quote string · nullable
rating integer · nullable
role string · nullable

FormField

EcomFormFieldResponse

Ett fält i ett formulär. `fieldType` är `Text`, `Email`, `Phone`, `Number`, `TextArea`, `Select`, `Checkbox` eller `File`. Svaret skickas med fältets `id` som nyckel.

Fält Typ
fieldType string · nullable
id string(uuid)
isRequired boolean
label string · nullable
mapTo string · nullable
options string[] · nullable
placeholder string · nullable

SectionButton

EcomSectionButtonResponse
Fält Typ
label string · nullable
openInNewTab boolean
url string · nullable
variant string · nullable

SectionContact

EcomSectionContactResponse
Fält Typ
directionsUrl string · nullable
mapImageUrl string · nullable
showAddress boolean
showEmail boolean
showOpeningHours boolean
showPhone boolean

SectionCustom

EcomSectionCustomResponse

Ett eget block, ritat på servern.

Fält Typ Beskrivning
blockKey string · nullable Blockets nyckel. HTML:en ska ligga i ett element med `data-block="{blockKey}"`, som CSS:en är scopad till.
blockVersion integer Blocktypens publicerade version. Noll när en förhandsvisning ritar ett block som aldrig publicerats; i en förhandsvisning är innehållet blockets utkast, som är nyare än versionen.
css string · nullable Blockets CSS, där varje regel börjar med `[data-block="{blockKey}"]`. Samma för alla sektioner med samma block och version — lägg den en gång per sida.
fields object · nullable Fälten som data, nycklat på fältens nycklar, för den som vill rita blocket själv.
html string · nullable Blockets HTML, redan tvättad på servern. Tvätta den ändå innan den ritas.
useShell boolean Om blocket ritas i standardomslaget, med sektionens `eyebrow`, `title`, `subtitle`, `buttons`, `tone` och `spacing`. Utan omslaget ritar HTML:en allt själv.

SectionEmbed

EcomSectionEmbedResponse

En `Embed`-sektion: en extern sida i en ram. `url` är alltid en absolut https-adress, `title` ramens tillgängliga namn och `height` höjden i pixlar.

Fält Typ
height integer
title string · nullable
url string · nullable

SectionFaqItem

EcomSectionFaqItemResponse
Fält Typ
answerHtml string · nullable
question string · nullable

SectionForm

EcomSectionFormResponse

Ett formulär som ska ritas i sidan. Skicka in det med `POST /ecom/forms/{formToken}/submissions`.

Fält Typ
aside string · nullable
asideHtml string · nullable
consentText string · nullable
description string · nullable
fields FormField[] · nullable
formToken string(uuid)
name string · nullable
redirectUrl string · nullable
successMessage string · nullable

SectionLogo

EcomSectionLogoResponse
Fält Typ
altText string · nullable
imageUrl string · nullable
linkUrl string · nullable

SectionLogos

EcomSectionLogosResponse
Fält Typ
grayscale boolean
items SectionLogo[] · nullable
size string · nullable

SectionMediaText

EcomSectionMediaTextResponse
Fält Typ
altText string · nullable
bodyHtml string · nullable
mediaAspect string · nullable
mediaPosition string · nullable
mediaUrl string · nullable
videoUrl string · nullable

SectionProductSpotlight

EcomSectionProductSpotlightResponse

En `ProductSpotlight`-sektion: en artikel presenterad stort. `layout` är `SideBySide`, `Banner` eller `Row`, `mediaPosition``Left` eller `Right`, och `documents``None`, `Selected` eller `Category`. Vid `Selected` listas `documentIds`, vid `Category` artikelns alla dokument i `documentCategory`; båda finns i produktsvarets `documents`.

Fält Typ
altText string · nullable
badge string · nullable
bodyHtml string · nullable
documentCategory string · nullable
documentIds string(uuid)[] · nullable
documents string · nullable
layout string · nullable
mediaPosition string · nullable
mediaUrl string · nullable
productId string(uuid)
showAddToCart boolean
showKeySpecs boolean
showPrice boolean
showStock boolean

SectionTimeline

EcomSectionTimelineResponse
Fält Typ
layout string · nullable
marker string · nullable
steps SectionTimelineStep[] · nullable

SectionTimelineOption

EcomSectionTimelineOptionResponse
Fält Typ
bodyHtml string · nullable
buttons SectionButton[] · nullable
title string · nullable

SectionTimelineStep

EcomSectionTimelineStepResponse
Fält Typ
alternatives SectionTimelineOption[] · nullable
bodyHtml string · nullable
buttons SectionButton[] · nullable
iconName string · nullable
title string · nullable