Hoppa till innehållet

Channels

The storefronts a tenant runs, and the home page each one presents. A channel owns its assortment, price list, currency and branding, so the same item can be published in two channels at different prices.

4 calls PATCH POST 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.

PATCH /branding

Update channel custom CSS

Updates the custom CSS for the current channel's branding. Requires the X-Channel header and a valid X-Admin-Preview token for the same tenant and channel. The CSS is sanitised before it is stored, so the value in the response is what was actually saved and may differ from what was sent.

Body required

Field Type
customCss string · nullable

Responses

200 PatchChannelBrandingCssPatchBrandingCssResponse
Field Type Description
customCss string · nullable CSS:en som faktiskt lagrades, efter sanering.
success boolean Sant när CSS:en sparades.
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: 400 401 404 Errors

Examples

curl
curl -X PATCH "https://api.erp.fluit.cloud/ecom/branding" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "Content-Type: application/json" \
  -d @body.json
Response 200
{
  "customCss": "string",
  "success": true
}

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.

POST /branding/ai-suggest

Suggest branding CSS for an element

Proposes custom CSS for one element of the storefront, given the channel's current branding and a description of what to change, and streams the suggestion as server-sent events.

Show the full description

It only proposes — PATCH /ecom/branding is what stores anything. Part of the in-store admin overlay and gated by the same admin preview token, so it is not an endpoint a storefront calls on a visitor's behalf.

Body required

Field Type
brandingContext BrandingAiSuggestBrandingContextDto
currentCss string · nullable
prompt string · nullable
selectedElements BrandingAiSuggestElementInfoDto[] · nullable

Responses

200 Empty body.

Standard errors: 400 429 Errors

Examples

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/branding/ai-suggest" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "Content-Type: application/json" \
  -d @body.json

Base URL https://api.erp.fluit.cloud/ecom.

GET /channels

List available channels

Returns a list of available channels from DomainMappings. No authentication or tenant context required.

Responses

200 ChannelInfoResponse[]
Field Type
code Required string · nullable
currency Required string · nullable
logoUrl string · nullable
name Required string · nullable
type Required string · nullable
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.

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/channels" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
[
  {
    "code": "string",
    "currency": "string",
    "logoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
    "name": "Acme AB",
    "type": "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 /homepage

Get home page configuration

Returns the channel's configured home page layout and visible sections, filtered by date for banners.

Responses

200 HomePageResponse
Field Type
fullWidth boolean
layout string · nullable
sections HomePageSection[] · nullable
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/homepage" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "fullWidth": true,
  "layout": "string",
  "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"
    }
  ]
}

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.

BrandingAiSuggestBrandingContextDto

EcomBrandingAiSuggestBrandingContextDto
Field Type
accentColor string · nullable
borderRadius string · nullable
fontBody string · nullable
fontHeading string · nullable
primaryColor string · nullable

BrandingAiSuggestElementInfoDto

EcomBrandingAiSuggestElementInfoDto
Field Type
classNames string[] · nullable
computedStyles object · nullable
selector string · nullable
tagName string · nullable

HomePageSection

HomePageSectionResponse
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 PageSectionFeatureCard[] · nullable
galleryImages PageSectionImage[] · 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 PageSectionTestimonial[] · nullable
title string · nullable
type string · nullable
videoUrl string · nullable

PageSectionFeatureCard

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

PageSectionImage

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

PageSectionTestimonial

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