Hoppa till innehållet

Content pages

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.

2 calls GET Base URL https://api.erp.fluit.cloud/ecom

Authentication, error codes, rate limits, idempotency and pagination apply to every call and are documented once under Getting started.

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 parentPageId and showInNavigation, so a storefront can build a nested menu from one call and still know which pages exist without appearing in it. Read the page body itself with GET /ecom/pages/{slug}.

Supports ETag

Responses

200 ContentPageNavResponse[]
Field Type
parentPageId string(uuid) · nullable
showInNavigation boolean
slug string · nullable
sortOrder integer
title string · nullable
304 Empty 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.

Standard errors: 404 Errors

Examples

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

Base URL https://api.erp.fluit.cloud/ecom. The response example is generated from the schema: the shape is right, the values are made up.

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 — and a storefront renders each kind its own way, so treat an unfamiliar section type as something to skip rather than fail on.

Show the full description

An unpublished or missing page both return 404; the two are deliberately indistinguishable.

Supports ETag

Path parameters

Field Type
slug Required string

Responses

200 ContentPageDetailResponse
Field Type
authorName string · nullable
excerpt string · nullable
featuredImageUrl string · nullable
fullWidth boolean
layout string · nullable
metaDescription string · nullable
pageType string · nullable
publishDate string(date-time) · nullable
sections ContentPageSection[] · nullable
slug string · nullable
tags string[] · nullable
title string · nullable
304 Empty 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.

Standard errors: 404 Errors

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/pages/{slug}" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "authorName": "Acme AB",
  "excerpt": "string",
  "featuredImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "fullWidth": true,
  "layout": "string",
  "metaDescription": "string",
  "pageType": "string",
  "publishDate": "2026-06-11T09:24:13.418",
  "sections": [
    {
      "articleLinkText": "string",
      "articleType": "string",
      "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "categoryId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "categoryIds": [
        "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
      ],
      "cssClass": "string",
      "featureCards": [
        {
          "iconName": "Width",
          "linkText": "string",
          "linkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
          "text": "string",
          "title": "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",
      "heroImageUrl": "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",
      "maxBrands": 42,
      "maxProducts": 42,
      "parentCategoryId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "productColumns": 42,
      "productIds": [
        "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
      ],
      "productSort": "string",
      "sortOrder": 42,
      "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"
        }
      ],
      "title": "string",
      "type": "string",
      "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
    }
  ],
  "slug": "string",
  "tags": [
    "string"
  ],
  "title": "string"
}

Base URL https://api.erp.fluit.cloud/ecom. The response example is generated from the schema: the shape is right, the values are made up.

Schemas

The objects this group's calls refer to. The field tables above go one level deep and link here rather than repeating the same schema on every endpoint.

ContentPageSection

ContentPageSectionResponse
Field Type
articleLinkText string · nullable
articleType string · nullable
bannerImageUrl string · nullable
bannerLinkUrl string · nullable
categoryId string(uuid) · nullable
categoryIds string(uuid)[] · nullable
cssClass string · nullable
featureCards ContentPageSectionFeatureCard[] · nullable
galleryImages ContentPageSectionImage[] · nullable
heroCtaText string · nullable
heroCtaUrl string · nullable
heroImageUrl string · nullable
heroTextColor string · nullable
heroVideoPosterUrl string · nullable
heroVideoUrl string · nullable
htmlContent string · nullable
id string(uuid)
itemGroupId string(uuid) · nullable
maxBrands integer
maxProducts integer
parentCategoryId string(uuid) · nullable
productColumns integer
productIds string(uuid)[] · nullable
productSort string · nullable
sortOrder integer
subtitle string · nullable
supplierIds string(uuid)[] · nullable
testimonials ContentPageSectionTestimonial[] · nullable
title string · nullable
type string · nullable
videoUrl string · nullable

ContentPageSectionFeatureCard

ContentPageSectionFeatureCardResponse
Field Type
iconName string · nullable
linkText string · nullable
linkUrl string · nullable
text string · nullable
title string · nullable

ContentPageSectionImage

ContentPageSectionImageResponse
Field Type
altText string · nullable
caption string · nullable
imageUrl string · nullable
linkUrl string · nullable

ContentPageSectionTestimonial

ContentPageSectionTestimonialResponse
Field Type
author string · nullable
avatarUrl string · nullable
quote string · nullable
rating integer · nullable
role string · nullable