Hoppa till innehållet

ContentPages

Editorial content in a channel: the home page, plus standing pages, blog posts and news. The last three are the same record told apart by pageType, built from the same sections and carrying the same SEO. Addressed by the pair (channelCode, slug). The home page is built from the same sections but lives on the channel: one per channel, no slug, no publish state, addressed by channel code alone. A page's body is its section list, which is replaced whole with PUT .../config; the metadata is patched separately. Products, categories and suppliers referenced inside a section are named by business key, not by internal id.

10 anrop GET POST PATCH DELETE PUT Bas-URL https://api.erp.fluit.cloud/preview

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

GET /channels/{channelCode}/content-pages

List a channel's content pages

Returns the channel's editorial pages: standing pages, blog posts and news. All three are the same record told apart by pageType, so one call can fetch everything or be narrowed with ?pageType=.

Visa hela beskrivningen

Sorted by sort order, then slug. Each page carries its full section list under config, with products, categories and suppliers named by business key rather than internal id. publishDate may be in the future: the storefront hides such an article until it passes, but this endpoint returns it either way. Delta sync: ?modifiedSince= (ISO 8601 UTC datetime) returns records created or changed at or after that instant, and is the intended way to run an incremental sync. A change anywhere inside the record counts: editing a line moves the parent's modifiedDate too, so no change can hide below the resource level. Deletions are not visible here: a deleted record is really gone, so it simply stops appearing, which is indistinguishable from "unchanged". Poll GET /preview/deletions?deletedSince= alongside this endpoint to learn what was removed.

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel whose pages to list.

Frågeparametrar

Fält Typ Beskrivning
pageType enum Filters on the kind of page: Page, BlogPost or NewsPost. Page BlogPost NewsPost
isPublished boolean Filters on whether the page is published.
search string Matches slug and title, case-insensitively and on partial words.
tag string Returns only pages carrying this tag, matched case-insensitively. Applied before paging, so totalCount counts the tagged pages and page 1 is never empty while later pages hold matches.
modifiedSince string(date-time) Returns only records created or changed at or after this instant (ISO 8601 UTC datetime). A change anywhere inside the record counts, including on its lines.
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Svar

200 PagedResult_PublicContentPageResponse

Paginerat svar: raderna nedan ligger i items[], omgivna av totalCount, page, pageSize, totalPages, hasPreviousPage och hasNextPage. Paginerad

Fält Typ Beskrivning
authorName string · nullable Displayed author. Free text, not linked to a user.
channelCode Krävs string · nullable The channel the page belongs to.
config Krävs PageConfig A page built from sections: the layout plus the sections in order.
createdDate Krävs string(date-time) When the page was created (UTC).
excerpt string · nullable Short summary for list cards, RSS and meta. Articles only.
featuredImageUrl string · nullable Cover image for list cards and Open Graph. Articles only.
isPublished Krävs boolean Whether the page is published and visible in the storefront.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
metaDescription string · nullable SEO meta description.
modifiedDate string(date-time) · nullable When the page was last changed (UTC), or null if never changed.
pageType Krävs enum What kind of content page this is. Mirrors `Domain.Ecom.ContentPageType`. Page BlogPost NewsPost
parentSlug string · nullable Slug of the parent page, for a hierarchy. Null at the top level.
publishDate string(date-time) · nullable Editorial publication date shown and sorted on. May be in the future: public storefront queries hide an article until it passes.
publishedAt string(date-time) · nullable When it was published (UTC), or null if it never has been.
showInNavigation Krävs boolean Whether the page appears in the navigation menu.
slug Krävs string · nullable URL slug, unique within the channel.
sortOrder Krävs integer Sort order in listings and navigation.
tags string[] · nullable Tags used for filtering and related articles.
title Krävs string · nullable Page title, used for the heading and as the SEO title.
400 ProblemDetails pageType got a value outside its list.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No channel with that code.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/preview/channels/{channelCode}/content-pages"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "authorName": "Acme AB",
      "channelCode": "STD",
      "config": {
        "fullWidth": true,
        "layout": "Standard",
        "sections": [
          {
            "articleLinkText": "string",
            "articleType": "All",
            "bannerEndDate": "2026-06-11T09:24:13.418",
            "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "bannerStartDate": "2026-06-11T09:24:13.418",
            "categoryCode": "STD",
            "categoryCodes": [],
            "cssClass": "string",
            "featureCards": [],
            "galleryImages": [],
            "heroCtaText": "string",
            "heroCtaUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "heroImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "heroTextColor": "Light",
            "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",
            "isVisible": true,
            "itemGroupCode": "STD",
            "maxBrands": 42,
            "maxProducts": 42,
            "parentCategoryCode": "STD",
            "productColumns": 42,
            "productNumbers": [],
            "productSort": "Manual",
            "sortOrder": 42,
            "subtitle": "string",
            "supplierNumbers": [],
            "testimonials": [],
            "title": "string",
            "type": "Hero",
            "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
          }
        ]
      },
      "createdDate": "2026-06-11T09:24:13.418",
      "excerpt": "string",
      "featuredImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "isPublished": true,
      "links": {
        "self": "string"
      },
      "metaDescription": "string",
      "modifiedDate": "2026-06-11T09:24:13.418",
      "pageType": "Page",
      "parentSlug": "string",
      "publishDate": "2026-06-11T09:24:13.418",
      "publishedAt": "2026-06-11T09:24:13.418",
      "showInNavigation": true,
      "slug": "string",
      "sortOrder": 42,
      "tags": [
        "string"
      ],
      "title": "string"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

POST /channels/{channelCode}/content-pages

Create a content page

Creates a standing page, a blog post or a news item, told apart by pageType. The page is created unpublished and with no sections; add the body with PUT /preview/channels/{channelCode}/content-pages/{slug}/config and make it visible with POST .../publish. publishDate may be in the future to schedule an article.

Visa hela beskrivningen

The response body is the same representation as GET on the page; the canonical URL is returned in the Location header and in links.self.

content-pages:write Kräver Idempotency-Key

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel to create the page in.

Body krävs

Fält Typ Beskrivning
authorName string · nullable Displayed author. Free text.
excerpt string · nullable Short summary for list cards and RSS. Articles.
featuredImageUrl string · nullable Cover image for list cards and Open Graph. Articles.
metaDescription string · nullable SEO meta description.
pageType enum What kind of content page this is. Mirrors `Domain.Ecom.ContentPageType`. Page BlogPost NewsPost
parentSlug string · nullable Slug of the parent page, for a hierarchy.
publishDate string(date-time) · nullable Editorial publication date. May be in the future to schedule.
slug Krävs string URL slug, unique within the channel. Lowercase letters, digits and hyphens.
sortOrder integer Sort order in listings and navigation.
tags string[] · nullable Tags for filtering and related articles.
title Krävs string Page title. Required.

Svar

201 PublicContentPageResponse
  • Location — URL of the newly created resource.
Fält Typ Beskrivning
authorName string · nullable Displayed author. Free text, not linked to a user.
channelCode Krävs string · nullable The channel the page belongs to.
config Krävs PageConfig A page built from sections: the layout plus the sections in order.
createdDate Krävs string(date-time) When the page was created (UTC).
excerpt string · nullable Short summary for list cards, RSS and meta. Articles only.
featuredImageUrl string · nullable Cover image for list cards and Open Graph. Articles only.
isPublished Krävs boolean Whether the page is published and visible in the storefront.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
metaDescription string · nullable SEO meta description.
modifiedDate string(date-time) · nullable When the page was last changed (UTC), or null if never changed.
pageType Krävs enum What kind of content page this is. Mirrors `Domain.Ecom.ContentPageType`. Page BlogPost NewsPost
parentSlug string · nullable Slug of the parent page, for a hierarchy. Null at the top level.
publishDate string(date-time) · nullable Editorial publication date shown and sorted on. May be in the future: public storefront queries hide an article until it passes.
publishedAt string(date-time) · nullable When it was published (UTC), or null if it never has been.
showInNavigation Krävs boolean Whether the page appears in the navigation menu.
slug Krävs string · nullable URL slug, unique within the channel.
sortOrder Krävs integer Sort order in listings and navigation.
tags string[] · nullable Tags used for filtering and related articles.
title Krävs string · nullable Page title, used for the heading and as the SEO title.
400 ProblemDetails A field failed validation, or parentSlug names a page that does not exist in this channel.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No channel with that code.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
409 ProblemDetails A page with that slug already exists in the channel.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/preview/channels/{channelCode}/content-pages" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @body.json
Full — a scheduled blog post
{
  "authorName": "Redaktionen",
  "excerpt": "Fyra modeller, samma DSP-plattform.",
  "featuredImageUrl": "https://cdn.fluit.cloud/media/hero/abc.jpg",
  "metaDescription": "Vi släpper en ny serie aktiva högtalare för konferensrum.",
  "pageType": "BlogPost",
  "publishDate": "2026-09-15T08:00:00Z",
  "slug": "nya-hogtalarserien",
  "tags": [
    "produktnyhet",
    "ljud"
  ],
  "title": "Nya högtalarserien är här"
}
Minimal — a standing page
{
  "slug": "om-oss",
  "title": "Om oss"
}
Svar 201
{
  "authorName": "Acme AB",
  "channelCode": "STD",
  "config": {
    "fullWidth": true,
    "layout": "Standard",
    "sections": [
      {
        "articleLinkText": "string",
        "articleType": "All",
        "bannerEndDate": "2026-06-11T09:24:13.418",
        "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerStartDate": "2026-06-11T09:24:13.418",
        "categoryCode": "STD",
        "categoryCodes": [
          "STD"
        ],
        "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": "Light",
        "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",
        "isVisible": true,
        "itemGroupCode": "STD",
        "maxBrands": 42,
        "maxProducts": 42,
        "parentCategoryCode": "STD",
        "productColumns": 42,
        "productNumbers": [
          "ABC-001"
        ],
        "productSort": "Manual",
        "sortOrder": 42,
        "subtitle": "string",
        "supplierNumbers": [
          "SUP-001"
        ],
        "testimonials": [
          {
            "author": "string",
            "avatarUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "quote": "string",
            "rating": 42,
            "role": "string"
          }
        ],
        "title": "string",
        "type": "Hero",
        "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      }
    ]
  },
  "createdDate": "2026-06-11T09:24:13.418",
  "excerpt": "string",
  "featuredImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "isPublished": true,
  "links": {
    "self": "string"
  },
  "metaDescription": "string",
  "modifiedDate": "2026-06-11T09:24:13.418",
  "pageType": "Page",
  "parentSlug": "string",
  "publishDate": "2026-06-11T09:24:13.418",
  "publishedAt": "2026-06-11T09:24:13.418",
  "showInNavigation": true,
  "slug": "string",
  "sortOrder": 42,
  "tags": [
    "string"
  ],
  "title": "string"
}

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

GET /channels/{channelCode}/content-pages/{slug}

Get a content page by slug

Returns the page with its full section list. Products, categories and suppliers inside the sections are named by business key — item number, category code, supplier number — so the same body can be written back. Responses carry a weak ETag; pass it back in If-None-Match to get 304 Not Modified while the page is unchanged.

content-pages:read Stödjer ETag

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel the page belongs to.
slug Krävs string The page's slug within that channel.

Svar

200 PublicContentPageResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Fält Typ Beskrivning
authorName string · nullable Displayed author. Free text, not linked to a user.
channelCode Krävs string · nullable The channel the page belongs to.
config Krävs PageConfig A page built from sections: the layout plus the sections in order.
createdDate Krävs string(date-time) When the page was created (UTC).
excerpt string · nullable Short summary for list cards, RSS and meta. Articles only.
featuredImageUrl string · nullable Cover image for list cards and Open Graph. Articles only.
isPublished Krävs boolean Whether the page is published and visible in the storefront.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
metaDescription string · nullable SEO meta description.
modifiedDate string(date-time) · nullable When the page was last changed (UTC), or null if never changed.
pageType Krävs enum What kind of content page this is. Mirrors `Domain.Ecom.ContentPageType`. Page BlogPost NewsPost
parentSlug string · nullable Slug of the parent page, for a hierarchy. Null at the top level.
publishDate string(date-time) · nullable Editorial publication date shown and sorted on. May be in the future: public storefront queries hide an article until it passes.
publishedAt string(date-time) · nullable When it was published (UTC), or null if it never has been.
showInNavigation Krävs boolean Whether the page appears in the navigation menu.
slug Krävs string · nullable URL slug, unique within the channel.
sortOrder Krävs integer Sort order in listings and navigation.
tags string[] · nullable Tags used for filtering and related articles.
title Krävs string · nullable Page title, used for the heading and as the SEO title.
304 Tom body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
404 ProblemDetails No channel with that code, or no page with that slug in it.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/preview/channels/{channelCode}/content-pages/{slug}"
Svar 200
{
  "authorName": "Acme AB",
  "channelCode": "STD",
  "config": {
    "fullWidth": true,
    "layout": "Standard",
    "sections": [
      {
        "articleLinkText": "string",
        "articleType": "All",
        "bannerEndDate": "2026-06-11T09:24:13.418",
        "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerStartDate": "2026-06-11T09:24:13.418",
        "categoryCode": "STD",
        "categoryCodes": [
          "STD"
        ],
        "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": "Light",
        "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",
        "isVisible": true,
        "itemGroupCode": "STD",
        "maxBrands": 42,
        "maxProducts": 42,
        "parentCategoryCode": "STD",
        "productColumns": 42,
        "productNumbers": [
          "ABC-001"
        ],
        "productSort": "Manual",
        "sortOrder": 42,
        "subtitle": "string",
        "supplierNumbers": [
          "SUP-001"
        ],
        "testimonials": [
          {
            "author": "string",
            "avatarUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "quote": "string",
            "rating": 42,
            "role": "string"
          }
        ],
        "title": "string",
        "type": "Hero",
        "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      }
    ]
  },
  "createdDate": "2026-06-11T09:24:13.418",
  "excerpt": "string",
  "featuredImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "isPublished": true,
  "links": {
    "self": "string"
  },
  "metaDescription": "string",
  "modifiedDate": "2026-06-11T09:24:13.418",
  "pageType": "Page",
  "parentSlug": "string",
  "publishDate": "2026-06-11T09:24:13.418",
  "publishedAt": "2026-06-11T09:24:13.418",
  "showInNavigation": true,
  "slug": "string",
  "sortOrder": 42,
  "tags": [
    "string"
  ],
  "title": "string"
}

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

PATCH /channels/{channelCode}/content-pages/{slug}

Update a content page's metadata

Partially updates the page's title, SEO, navigation and article fields. Only provided fields are updated (JSON Merge Patch semantics). Omitted fields are left unchanged. Pass null to clear a nullable field.

Visa hela beskrivningen

Unknown fields are rejected with 400, naming the field and listing the ones this endpoint accepts. tags replaces the whole list rather than merging into it. The sections are not touched here — use PUT .../config for the body. Renaming the slug with newSlug changes the page's public URL and automatically creates a 301 redirect from the old one, so incoming links and their ranking are preserved. Changing pageType does the same, because it moves the page between the /blog/... and /pages/... URL families.

content-pages:write

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel the page belongs to.
slug Krävs string The page's slug within that channel.

Body krävs

Fält Typ Beskrivning
authorName string · nullable Displayed author. Pass `null` to clear.
excerpt string · nullable Short summary for list cards and RSS. Pass `null` to clear.
featuredImageUrl string · nullable Cover image. Pass `null` to clear.
metaDescription string · nullable SEO meta description. Pass `null` to clear.
newSlug string · nullable Move the page to a different slug. A 301 from the old URL is created automatically, so incoming links and their ranking survive.
pageType enum What kind of content page this is. Mirrors `Domain.Ecom.ContentPageType`. Page BlogPost NewsPost
parentSlug string · nullable Slug of the parent page. Pass `null` to move it to the top level.
publishDate string(date-time) · nullable Editorial publication date. Pass `null` to clear.
showInNavigation boolean · nullable Whether the page appears in the navigation menu.
sortOrder integer · nullable Sort order in listings and navigation.
tags string[] · nullable Replaces the whole tag list. Pass `null` to clear.
title string · nullable Page title.

Svar

204 Tom body.
400 ProblemDetails The body is not a JSON object, contains a field this endpoint does not have, a field present in it failed validation, parentSlug names a page that does not exist in this channel, or one of newSlug, title, sortOrder, showInNavigation and pageType was sent as null.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No channel with that code, or no page with that slug in it.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
409 ProblemDetails newSlug is already taken by another page in the channel.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X PATCH "https://api.erp.fluit.cloud/preview/channels/{channelCode}/content-pages/{slug}" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 400
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

DELETE /channels/{channelCode}/content-pages/{slug}

Delete a content page

Removes the page and its sections for good. To take a page down while keeping its content, use POST .../unpublish instead. A page with child pages cannot be deleted: move the children to another parent or delete them first.

Visa hela beskrivningen

The deletion is reported under GET /preview/deletions as the resource content-pages, with the business key {channelCode}/{slug}, so a client syncing on ?modifiedSince= learns the page is gone.

content-pages:write

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel the page belongs to.
slug Krävs string The page's slug within that channel.

Svar

204 Tom body.
404 ProblemDetails No channel with that code, or no page with that slug in it.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
409 ProblemDetails ContentPage.HasChildPages — the page still has child pages.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X DELETE "https://api.erp.fluit.cloud/preview/channels/{channelCode}/content-pages/{slug}"
Svar 404
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

PUT /channels/{channelCode}/content-pages/{slug}/config

Replace a content page's sections

Replaces the page body: layout, full-width flag and the whole section list. This is a PUT and not a PATCH because the section list is positional — sending a subset would be ambiguous between "these are the sections now" and "merge these in".

Visa hela beskrivningen

Read the page, change what you need, send the whole config back. Keep each section's id when you do: an omitted id creates a new section, so dropping them would replace every section with a copy and lose their identity. This replaces the whole config, so send every field you want kept: an omitted layout or fullWidth falls back to its default rather than to the stored value. sections has no default and must be present — send [] to clear the body deliberately. Products, categories and suppliers are named by business key. An unknown key is rejected with 400 rather than dropped, so a section cannot silently lose half its products. Returns the whole page, the same representation as GET, so the caller sees the result without a second request. No Idempotency-Key is needed — the header is required on POST. Repeating the same body is safe as long as the sections carry their ids; sections sent without one are created afresh on every call.

content-pages:write

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel the page belongs to.
slug Krävs string The page's slug within that channel.

Body krävs

Fält Typ Beskrivning
fullWidth boolean True for a full-bleed page, false to keep the content inside the container width.
layout enum Page layout exposed via the Public API. Standard WithSidebar Magazine
sections Krävs PageSection[] · nullable The sections, in the order they are rendered. Required on the way in — send `[]` to clear the page.

Svar

200 PublicContentPageResponse
Fält Typ Beskrivning
authorName string · nullable Displayed author. Free text, not linked to a user.
channelCode Krävs string · nullable The channel the page belongs to.
config Krävs PageConfig A page built from sections: the layout plus the sections in order.
createdDate Krävs string(date-time) When the page was created (UTC).
excerpt string · nullable Short summary for list cards, RSS and meta. Articles only.
featuredImageUrl string · nullable Cover image for list cards and Open Graph. Articles only.
isPublished Krävs boolean Whether the page is published and visible in the storefront.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
metaDescription string · nullable SEO meta description.
modifiedDate string(date-time) · nullable When the page was last changed (UTC), or null if never changed.
pageType Krävs enum What kind of content page this is. Mirrors `Domain.Ecom.ContentPageType`. Page BlogPost NewsPost
parentSlug string · nullable Slug of the parent page, for a hierarchy. Null at the top level.
publishDate string(date-time) · nullable Editorial publication date shown and sorted on. May be in the future: public storefront queries hide an article until it passes.
publishedAt string(date-time) · nullable When it was published (UTC), or null if it never has been.
showInNavigation Krävs boolean Whether the page appears in the navigation menu.
slug Krävs string · nullable URL slug, unique within the channel.
sortOrder Krävs integer Sort order in listings and navigation.
tags string[] · nullable Tags used for filtering and related articles.
title Krävs string · nullable Page title, used for the heading and as the SEO title.
400 ProblemDetails A section referenced an item number, category code or supplier number that does not exist. The error names the section and the field, e.g. sections[2].productNumbers[0].
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No channel with that code, or no page with that slug in it.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X PUT "https://api.erp.fluit.cloud/preview/channels/{channelCode}/content-pages/{slug}/config" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 200
{
  "authorName": "Acme AB",
  "channelCode": "STD",
  "config": {
    "fullWidth": true,
    "layout": "Standard",
    "sections": [
      {
        "articleLinkText": "string",
        "articleType": "All",
        "bannerEndDate": "2026-06-11T09:24:13.418",
        "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerStartDate": "2026-06-11T09:24:13.418",
        "categoryCode": "STD",
        "categoryCodes": [
          "STD"
        ],
        "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": "Light",
        "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",
        "isVisible": true,
        "itemGroupCode": "STD",
        "maxBrands": 42,
        "maxProducts": 42,
        "parentCategoryCode": "STD",
        "productColumns": 42,
        "productNumbers": [
          "ABC-001"
        ],
        "productSort": "Manual",
        "sortOrder": 42,
        "subtitle": "string",
        "supplierNumbers": [
          "SUP-001"
        ],
        "testimonials": [
          {
            "author": "string",
            "avatarUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "quote": "string",
            "rating": 42,
            "role": "string"
          }
        ],
        "title": "string",
        "type": "Hero",
        "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      }
    ]
  },
  "createdDate": "2026-06-11T09:24:13.418",
  "excerpt": "string",
  "featuredImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "isPublished": true,
  "links": {
    "self": "string"
  },
  "metaDescription": "string",
  "modifiedDate": "2026-06-11T09:24:13.418",
  "pageType": "Page",
  "parentSlug": "string",
  "publishDate": "2026-06-11T09:24:13.418",
  "publishedAt": "2026-06-11T09:24:13.418",
  "showInNavigation": true,
  "slug": "string",
  "sortOrder": 42,
  "tags": [
    "string"
  ],
  "title": "string"
}

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

POST /channels/{channelCode}/content-pages/{slug}/publish

Publish a content page

Marks the page published and stamps publishedAt. Publishing an already published page is harmless and leaves the original publishedAt alone. An article whose publishDate is still in the future stays hidden in the storefront until that date passes, even once published here.

content-pages:write Kräver Idempotency-Key

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel the page belongs to.
slug Krävs string The page's slug within that channel.

Svar

204 Tom body.
404 ProblemDetails No channel with that code, or no page with that slug in it.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/preview/channels/{channelCode}/content-pages/{slug}/publish" \
  -H "Idempotency-Key: $(uuidgen)"
Svar 404
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

POST /channels/{channelCode}/content-pages/{slug}/unpublish

Unpublish a content page

Hides the page from the storefront without deleting it. The sections, SEO and slug are kept, so publishing it again restores exactly what was there. Use this rather than DELETE to take something down temporarily.

content-pages:write Kräver Idempotency-Key

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel the page belongs to.
slug Krävs string The page's slug within that channel.

Svar

204 Tom body.
404 ProblemDetails No channel with that code, or no page with that slug in it.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.erp.fluit.cloud/preview/channels/{channelCode}/content-pages/{slug}/unpublish" \
  -H "Idempotency-Key: $(uuidgen)"
Svar 404
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

GET /channels/{channelCode}/home-page

Read a channel's home page

Returns the section list the storefront renders at the channel's root. The home page is not a content page: there is exactly one per channel, it has no slug, and it cannot be unpublished or deleted — which is why it is addressed by channel code alone.

Visa hela beskrivningen

The body is the same config a content page carries, with the same section types and the same business-key references, so one renderer covers both. Replace it with PUT on the same URL. Responses carry a weak ETag; pass it back in If-None-Match to get 304 Not Modified while the home page is unchanged.

content-pages:read Stödjer ETag

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel whose home page to read.

Svar

200 PublicChannelHomePageResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Fält Typ Beskrivning
channelCode Krävs string · nullable The channel whose home page this is.
config Krävs PageConfig A page built from sections: the layout plus the sections in order.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
modifiedDate string(date-time) · nullable When the storefront configuration was last changed (UTC), or null if never.
304 Tom body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
404 ProblemDetails No channel with that code, or the channel has no storefront configuration yet (StorefrontConfig.NotFound).
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/preview/channels/{channelCode}/home-page"
Svar 200
{
  "channelCode": "STD",
  "config": {
    "fullWidth": true,
    "layout": "Standard",
    "sections": [
      {
        "articleLinkText": "string",
        "articleType": "All",
        "bannerEndDate": "2026-06-11T09:24:13.418",
        "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerStartDate": "2026-06-11T09:24:13.418",
        "categoryCode": "STD",
        "categoryCodes": [
          "STD"
        ],
        "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": "Light",
        "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",
        "isVisible": true,
        "itemGroupCode": "STD",
        "maxBrands": 42,
        "maxProducts": 42,
        "parentCategoryCode": "STD",
        "productColumns": 42,
        "productNumbers": [
          "ABC-001"
        ],
        "productSort": "Manual",
        "sortOrder": 42,
        "subtitle": "string",
        "supplierNumbers": [
          "SUP-001"
        ],
        "testimonials": [
          {
            "author": "string",
            "avatarUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "quote": "string",
            "rating": 42,
            "role": "string"
          }
        ],
        "title": "string",
        "type": "Hero",
        "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      }
    ]
  },
  "links": {
    "self": "string"
  },
  "modifiedDate": "2026-06-11T09:24:13.418"
}

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

PUT /channels/{channelCode}/home-page

Replace a channel's home page

Replaces the home page: layout, full-width flag and the whole section list. This is a PUT and not a PATCH because the section list is positional — sending a subset would be ambiguous between "these are the sections now" and "merge these in".

Visa hela beskrivningen

Read the home page, change what you need, send the whole config back. Keep each section's id when you do: an omitted id creates a new section, so dropping them would replace every section with a copy and lose their identity. This replaces the whole config, so send every field you want kept: an omitted layout or fullWidth falls back to its default rather than to the stored value. sections has no default and must be present — send [] to clear the page deliberately, so that a body carrying only layout cannot wipe it by accident. Products, categories and suppliers are named by business key. An unknown key is rejected with 400 rather than dropped, so a section cannot silently lose half its products. Returns the whole home page, the same representation as GET, so the caller sees the result without a second request. No Idempotency-Key is needed — the header is required on POST. Repeating the same body is safe as long as the sections carry their ids; sections sent without one are created afresh on every call.

content-pages:write

Sökvägsparametrar

Fält Typ Beskrivning
channelCode Krävs string Code of the channel whose home page to replace.

Body krävs

Fält Typ Beskrivning
fullWidth boolean True for a full-bleed page, false to keep the content inside the container width.
layout enum Page layout exposed via the Public API. Standard WithSidebar Magazine
sections Krävs PageSection[] · nullable The sections, in the order they are rendered. Required on the way in — send `[]` to clear the page.

Svar

200 PublicChannelHomePageResponse
Fält Typ Beskrivning
channelCode Krävs string · nullable The channel whose home page this is.
config Krävs PageConfig A page built from sections: the layout plus the sections in order.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
modifiedDate string(date-time) · nullable When the storefront configuration was last changed (UTC), or null if never.
400 ProblemDetails A section referenced an item number, category code or supplier number that does not exist, or two sections carried the same id. The error names the section and the field, e.g. sections[2].productNumbers[0].
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No channel with that code, or the channel has no storefront configuration yet (StorefrontConfig.NotFound).
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X PUT "https://api.erp.fluit.cloud/preview/channels/{channelCode}/home-page" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 200
{
  "channelCode": "STD",
  "config": {
    "fullWidth": true,
    "layout": "Standard",
    "sections": [
      {
        "articleLinkText": "string",
        "articleType": "All",
        "bannerEndDate": "2026-06-11T09:24:13.418",
        "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerLinkUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
        "bannerStartDate": "2026-06-11T09:24:13.418",
        "categoryCode": "STD",
        "categoryCodes": [
          "STD"
        ],
        "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": "Light",
        "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",
        "isVisible": true,
        "itemGroupCode": "STD",
        "maxBrands": 42,
        "maxProducts": 42,
        "parentCategoryCode": "STD",
        "productColumns": 42,
        "productNumbers": [
          "ABC-001"
        ],
        "productSort": "Manual",
        "sortOrder": 42,
        "subtitle": "string",
        "supplierNumbers": [
          "SUP-001"
        ],
        "testimonials": [
          {
            "author": "string",
            "avatarUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
            "quote": "string",
            "rating": 42,
            "role": "string"
          }
        ],
        "title": "string",
        "type": "Hero",
        "videoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      }
    ]
  },
  "links": {
    "self": "string"
  },
  "modifiedDate": "2026-06-11T09:24:13.418"
}

Bas-URL https://api.erp.fluit.cloud/preview. 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.

PageConfig

PublicPageConfig

A page built from sections: the layout plus the sections in order.

Fält Typ Beskrivning
fullWidth boolean True for a full-bleed page, false to keep the content inside the container width.
layout enum Page layout exposed via the Public API. Standard WithSidebar Magazine
sections Krävs PageSection[] · nullable The sections, in the order they are rendered. Required on the way in — send `[]` to clear the page.

PageSection

PublicPageSection

One section on a page. Which fields apply depends on PublicApi.Preview.ContentPages.Queries.PublicPageSection.Type; the rest are ignored.

Fält Typ Beskrivning
articleLinkText string · nullable Label on the link to the archive. Empty hides the link.
articleType enum Which content pages a PublicApi.Preview.ContentPages.Queries.PublicPageSectionType.LatestArticles section lists. Mirrors `Domain.Ecom.ArticleSourceType`. All BlogPosts News
bannerEndDate string(date-time) · nullable When the banner stops showing. Null means never.
bannerImageUrl string · nullable Banner image.
bannerLinkUrl string · nullable Where the banner leads.
bannerStartDate string(date-time) · nullable When the banner starts showing. Null means immediately.
categoryCode string · nullable Category to take products from, by category code.
categoryCodes string[] · nullable Specific categories to show, by category code.
cssClass string · nullable Extra CSS class, for storefronts that style sections themselves.
featureCards PageSectionFeatureCard[] · nullable Cards in a FeatureCards section.
galleryImages PageSectionImage[] · nullable Images in a gallery or carousel section.
heroCtaText string · nullable Call-to-action label.
heroCtaUrl string · nullable Where the call to action leads.
heroImageUrl string · nullable Background image for a Hero section.
heroTextColor enum Text colour for a hero section. Mirrors `Domain.Ecom.HeroTextColor`. Light Dark
heroVideoPosterUrl string · nullable Poster frame for a direct-link hero video. Falls back to heroImageUrl.
heroVideoUrl string · nullable Video played from the hero (YouTube, Vimeo or a direct link).
htmlContent string · nullable HTML body for a TextBlock section.
id string(uuid) · nullable The section's own id, stable across edits so a client can address one section of a page. Generated on create when omitted.
isVisible boolean False hides the section without removing it.
itemGroupCode string · nullable Item group to take products from, by category code.
maxBrands integer How many brands to show at most.
maxProducts integer How many products to show at most.
parentCategoryCode string · nullable Show every child of this category, by category code.
productColumns integer Columns in the product grid.
productNumbers string[] · nullable Manually picked products, by item number, in display order.
productSort enum How products are ordered inside a product section. Mirrors `Domain.Ecom.ProductSortOrder`. Manual Newest PriceLowToHigh PriceHighToLow Bestselling Random Alphabetical
sortOrder integer Position on the page. Sections are rendered in ascending order.
subtitle string · nullable Sub-heading or lead text.
supplierNumbers string[] · nullable Specific suppliers to show, by supplier number.
testimonials PageSectionTestimonial[] · nullable Testimonials to show.
title string · nullable Section heading.
type Krävs enum The kinds of section a page can be built from. Mirrors `Domain.Ecom.PageSectionType` — see PublicApi.Preview.ContentPages.Queries.PublicPageLayout for why. Hero FeaturedProducts ProductsByCategory ProductsByGroup NewArrivals BestSellers OnSale Categories Banner TextBlock Newsletter Brands Testimonials ImageGallery Video Divider LatestArticles FeatureCards
videoUrl string · nullable Video URL (YouTube, Vimeo or a direct mp4 link).

PageSectionFeatureCard

PublicPageSectionFeatureCard

One card in a FeatureCards section.

Fält Typ Beskrivning
iconName string · nullable Icon from the storefront's fixed set, e.g. `shield` or `truck`. An unknown name draws no icon rather than failing.
linkText string · nullable Link label. Without one the whole card is clickable.
linkUrl string · nullable Where the card links. Null makes it non-clickable. Either a storefront path starting with `/` or an absolute http(s) URL — a protocol-relative address is refused, because it inherits the page's scheme while looking like an internal path.
text string · nullable Body text under the heading.
title Krävs string Card heading.

PageSectionImage

PublicPageSectionImage

One image in a gallery section.

Fält Typ Beskrivning
altText string · nullable Alt text, for accessibility.
caption string · nullable Caption shown with the image.
imageUrl Krävs string The image.
linkUrl string · nullable Where the image links. Null makes it non-clickable.

PageSectionTestimonial

PublicPageSectionTestimonial

One testimonial.

Fält Typ Beskrivning
author string · nullable Who said it.
avatarUrl string · nullable Portrait image.
quote Krävs string The quote itself.
rating integer · nullable Rating from 1 to 5. Null shows no rating.
role string · nullable Their role or company.