Hoppa till innehållet

Catalog

Products, categories, brands, search, facets and type-ahead. Products are addressed by slug or id, and only what is published in the current channel is visible. Includes the product feed for Google Merchant and the binary endpoints that serve images and documents.

18 calls GET POST 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 /assets/{tenantId}/{id}

Get product image

Serves a public product image. No authentication required. Tenant resolved from URL. Pass ?w= with one of the supported widths to get a resized WebP variant for responsive srcset.

Path parameters

Field Type
tenantId Required string(uuid)
id Required string(uuid)

Query parameters

Field Type
w integer

Responses

200 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: 400 404 Errors

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/assets/{tenantId}/{id}" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"

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

GET /assets/{tenantId}/{id}/download

Get product document

Serves a public product document (datasheet, manual, firmware). No authentication required. Tenant resolved from URL. PDFs are served inline, everything else as a download.

Path parameters

Field Type
tenantId Required string(uuid)
id Required string(uuid)

Responses

200 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/assets/{tenantId}/{id}/download" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"

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

GET /catalog/brands

Get brands (suppliers) by id

Returns display data for the suppliers referenced by a Brands section.

Supports ETag

Query parameters

Field Type
ids string

Responses

200 BrandsResponse
Field Type
brands Brand[] · 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.

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/brands" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "brands": [
    {
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "name": "Fluit",
      "website": "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 /catalog/categories

Get category tree

Returns the hierarchical category tree for navigation.

Supports ETag

Query parameters

Field Type
parentId string
ids string

Headers

Field Type Description
X-Language string Language for translated content, as an ISO 639-1 code ("sv", "en"). Omitting it answers in the channel's default language, and so does a language the channel does not publish — this never fails the request. The channel decides which languages exist; read them from the session response.

Responses

200 CategoriesResponse
Field Type
categories Category[] · 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.

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/categories" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "X-Language: …"
Response 200
{
  "categories": [
    {
      "bannerHeadline": "string",
      "bannerImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "bannerSubtitle": "string",
      "children": [
        null
      ],
      "code": "string",
      "description": "string",
      "iconName": "Hand tools",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "imageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "metaDescription": "string",
      "metaTitle": "string",
      "name": "Hand tools",
      "parentId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "productCount": 42,
      "slug": "string",
      "sortOrder": 42
    }
  ]
}

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 /catalog/filters

Get catalog filters

Returns filterable attributes with available values and product counts. Counts are scoped to the channel, the optional category and the optional search term.

Supports ETag

Query parameters

Field Type
category string
search string

Headers

Field Type Description
X-Language string Language for translated content, as an ISO 639-1 code ("sv", "en"). Omitting it answers in the channel's default language, and so does a language the channel does not publish — this never fails the request. The channel decides which languages exist; read them from the session response.

Responses

200 CatalogFiltersResponse
Field Type
filters FilterGroup[] · 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.

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/filters" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "X-Language: …"
Response 200
{
  "filters": [
    {
      "code": "string",
      "dataType": "string",
      "name": "Retail",
      "sortOrder": 42,
      "unit": "st",
      "values": [
        {
          "count": 42,
          "label": "string",
          "value": "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 /catalog/list-widgets

Get product list page widgets

Returns active ProductList_Banner and ProductList_Sidebar widgets matching the current channel and optional category.

Supports ETag

Query parameters

Field Type
categoryCode string

Responses

200 ListWidgetResponse[]
Field Type
cssClass string · nullable
htmlContent string · nullable
id string(uuid)
name string · nullable
placement string · nullable
sortOrder integer
style 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/catalog/list-widgets" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
[
  {
    "cssClass": "string",
    "htmlContent": "string",
    "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
    "name": "Acme AB",
    "placement": "string",
    "sortOrder": 42,
    "style": "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 /catalog/product-feed

Product feed rows

Returns feed-ready product rows (identifiers, prices, availability, Google product category) for building Google Shopping and Meta catalog feeds. Page size is clamped to 1-1000.

Supports ETag

Query parameters

Field Type
page integer
pageSize integer

Responses

200 PagedResult_ProductFeedRowResponse

Paginated response: the fields below sit in items[], wrapped in totalCount, page, pageSize, totalPages, hasPreviousPage and hasNextPage. Paginated

Field Type Description
additionalImageUrls string[] · nullable
allowPreOrder boolean
availability enum InStock OutOfStock BackOrder PreOrder
availabilityDate string(date) · nullable
brand string · nullable
condition enum New Refurbished Used
countryOfOrigin string · nullable
currency string · nullable
depthCm decimal · nullable
description string · nullable
feedBrand string · nullable
feedDescription string · nullable
feedId string · nullable
feedMpn string · nullable
feedPrice decimal · nullable
feedProductType string · nullable
feedSalePrice decimal · nullable
feedTitle string · nullable
googleProductCategory string · nullable
grade string · nullable
gtin string · nullable
heightCm decimal · nullable
id string(uuid)
identifierExists boolean
ineligibleReason enum DefectiveGrade MissingTitle MissingSlug MissingImage MissingPrice UnknownGrossPrice
isEligible boolean
isOnSale boolean
itemGroupId string · nullable
itemNumber string · nullable
mainImageUrl string · nullable
mpn string · nullable
normalizedGtin string · nullable
price decimal · nullable
priceIncludingVat decimal · nullable
priceValidFrom string(date) · nullable
priceValidTo string(date) · nullable
productPath string · nullable
productType string · nullable
regularPrice decimal · nullable
regularPriceIncludingVat decimal · nullable
salePriceEffectiveFrom string(date) · nullable
salePriceEffectiveTo string(date) · nullable
salesStartDate string(date) · nullable
seoSlug string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
taxPercent decimal
title string · nullable
weightKg decimal · nullable
widthCm decimal · 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.

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/product-feed" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "additionalImageUrls": [
        "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      ],
      "allowPreOrder": true,
      "availability": "InStock",
      "availabilityDate": "2026-06-11",
      "brand": "string",
      "condition": "New",
      "countryOfOrigin": "string",
      "currency": "string",
      "depthCm": "299.00",
      "description": "string",
      "feedBrand": "string",
      "feedDescription": "string",
      "feedId": "string",
      "feedMpn": "string",
      "feedPrice": "299.00",
      "feedProductType": "string",
      "feedSalePrice": "299.00",
      "feedTitle": "string",
      "googleProductCategory": "string",
      "grade": "string",
      "gtin": "string",
      "heightCm": "299.00",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "identifierExists": true,
      "ineligibleReason": "DefectiveGrade",
      "isEligible": true,
      "isOnSale": true,
      "itemGroupId": "string",
      "itemNumber": "WIDGET-A",
      "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "mpn": "string",
      "normalizedGtin": "string",
      "price": "299.00",
      "priceIncludingVat": "299.00",
      "priceValidFrom": "2026-06-11",
      "priceValidTo": "2026-06-11",
      "productPath": "string",
      "productType": "string",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "salePriceEffectiveFrom": "2026-06-11",
      "salePriceEffectiveTo": "2026-06-11",
      "salesStartDate": "2026-06-11",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "title": "string",
      "weightKg": "1.250",
      "widthCm": "299.00"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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 /catalog/products

List products

Returns a paginated list of products with optional filtering by category, product tag (tag=slug) and search term. Pass ids=guid,guid to fetch a hand-picked set; without an explicit sort they are returned in the order given.

Show the full description

With a category, sort=category returns the products in the order they were assigned to that category; products only in a subcategory follow, in the default order. Pass onSale=true to list only products that are reduced right now: priced by a campaign price list or a public discount rule below the item's regular price, for an anonymous visitor in the channel's currency (customer-specific prices never count). Only includes products active on the current channel.

Supports ETag

Query parameters

Field Type
category string
search string
page integer
pageSize integer
sort string
ids string
tag string
onSale boolean

Headers

Field Type Description
X-Language string Language for translated content, as an ISO 639-1 code ("sv", "en"). Omitting it answers in the channel's default language, and so does a language the channel does not publish — this never fails the request. The channel decides which languages exist; read them from the session response.

Responses

200 PagedResult_ProductSummaryResponse

Paginated response: the fields below sit in items[], wrapped in totalCount, page, pageSize, totalPages, hasPreviousPage and hasNextPage. Paginated

Field Type Description
brand string · nullable
brandSlug string · nullable
hasPriceRange boolean
id string(uuid)
incoming IncomingStock
isConfigurable boolean
isOnSale boolean
isPhasingOut boolean
isVariantMaster boolean
itemNumber string · nullable
keySpecs ProductKeySpec[] · nullable
listPrice decimal · nullable
listPriceIncludingVat decimal · nullable
lowestPrice30Days decimal · nullable
lowestPrice30DaysIncludingVat decimal · nullable
mainImageUrl string · nullable
matchedVariantId string(uuid) · nullable
matchedVariantSlug string · nullable
mpn string · nullable
name string · nullable
priceAfterTaxReduction decimal · nullable
regularPrice decimal · nullable
regularPriceIncludingVat decimal · nullable
secondImageUrl string · nullable
seoSlug string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
taxPercent decimal
taxReductionName string · nullable
updatedAt string(date-time) · nullable
variantSwatchTotal integer
variantSwatches VariantSwatch[] · 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.

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/products" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "X-Language: …"
Response 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "brand": "string",
      "brandSlug": "string",
      "hasPriceRange": true,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isConfigurable": true,
      "isOnSale": true,
      "isPhasingOut": true,
      "isVariantMaster": true,
      "itemNumber": "WIDGET-A",
      "keySpecs": [
        {
          "code": "string",
          "label": "string",
          "unit": "st",
          "value": "string"
        }
      ],
      "listPrice": "299.00",
      "listPriceIncludingVat": "299.00",
      "lowestPrice30Days": "299.00",
      "lowestPrice30DaysIncludingVat": "299.00",
      "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "matchedVariantId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "matchedVariantSlug": "string",
      "mpn": "string",
      "name": "Widget A",
      "priceAfterTaxReduction": "299.00",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "secondImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "taxReductionName": "Widget A",
      "updatedAt": "2026-06-11T09:24:13.418",
      "variantSwatchTotal": 42,
      "variantSwatches": [
        {
          "colorHex": "string",
          "value": "string",
          "valueId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
        }
      ]
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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 /catalog/products/{idOrSlug}

Get product details

Returns complete product information including stock status, images, and attributes. Only shows products active on the current channel.

Show the full description

A variant (looked up by slug, item number or id) returns its variant master with `selectedVariantId` set to the variant. `canonicalSlug` is the page's canonical slug: the master's, except in channels that list variants as products of their own. A client that received the response on another slug should redirect to `/products/{canonicalSlug}?variant={variant seoSlug}`. `defaultVariantId` is the first purchasable variant in axis order.

Supports ETag

Path parameters

Field Type
idOrSlug Required string

Headers

Field Type Description
X-Language string Language for translated content, as an ISO 639-1 code ("sv", "en"). Omitting it answers in the channel's default language, and so does a language the channel does not publish — this never fails the request. The channel decides which languages exist; read them from the session response.

Responses

200 ProductDetailResponse
Field Type Description
accessories ProductSummary[] · nullable
aggregatedAvailableQuantity integer · nullable
allowPreOrder boolean
attributes ProductAttribute[] · nullable
averageRating decimal · nullable
brand string · nullable
brandLogoUrl string · nullable
brandSlug string · nullable
breadcrumbs Breadcrumb[] · nullable
canonicalSlug string · nullable
crossReferences ProductCrossReference[] · nullable
crossSellProducts ProductSummary[] · nullable
currency string · nullable
defaultVariantId string(uuid) · nullable
description string · nullable
discountEndsAt string(date) · nullable
documents ProductDocument[] · nullable
grade string · nullable
gradedAlternatives GradedAlternative[] · nullable
gtin string · nullable
height decimal · nullable
id string(uuid)
images ProductImage[] · nullable
incoming IncomingStock
isConfigurable boolean
isMadeToOrder boolean
isOnSale boolean
isPhasingOut boolean
itemNumber string · nullable
leadTimeDays integer · nullable
length decimal · nullable
listPrice decimal · nullable
listPriceIncludingVat decimal · nullable
lowestPrice30Days decimal · nullable
lowestPrice30DaysIncludingVat decimal · nullable
madeToOrderText string · nullable
mainImageUrl string · nullable
metaDescription string · nullable
metaTitle string · nullable
mpn string · nullable
name string · nullable
priceAfterTaxReduction decimal · nullable
priceValidUntil string(date) · nullable
primaryCategory CategorySummary
regularPrice decimal · nullable
regularPriceIncludingVat decimal · nullable
relatedProducts ProductSummary[] · nullable
reviewCount integer
salesStartDate string(date) · nullable
selectedVariantId string(uuid) · nullable
seoSlug string · nullable
shortDescription string · nullable
stock WarehouseStock[] · nullable
stockDisplayMode string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
tags TagSummary[] · nullable
taxPercent decimal
taxReductionName string · nullable
unit string · nullable
variantAttributes VariantAttribute[] · nullable
variants Variant[] · nullable
variantsHaveOwnPages boolean
weight decimal · nullable
width decimal · 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/catalog/products/{idOrSlug}" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "X-Language: …"
Response 200
{
  "accessories": [
    {
      "brand": "string",
      "brandSlug": "string",
      "hasPriceRange": true,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isConfigurable": true,
      "isOnSale": true,
      "isPhasingOut": true,
      "isVariantMaster": true,
      "itemNumber": "WIDGET-A",
      "keySpecs": [
        {
          "code": "string",
          "label": "string",
          "unit": "st",
          "value": "string"
        }
      ],
      "listPrice": "299.00",
      "listPriceIncludingVat": "299.00",
      "lowestPrice30Days": "299.00",
      "lowestPrice30DaysIncludingVat": "299.00",
      "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "matchedVariantId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "matchedVariantSlug": "string",
      "mpn": "string",
      "name": "Widget A",
      "priceAfterTaxReduction": "299.00",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "secondImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "taxReductionName": "Widget A",
      "updatedAt": "2026-06-11T09:24:13.418",
      "variantSwatchTotal": 42,
      "variantSwatches": [
        {
          "colorHex": "string",
          "value": "string",
          "valueId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
        }
      ]
    }
  ],
  "aggregatedAvailableQuantity": 42,
  "allowPreOrder": true,
  "attributes": [
    {
      "code": "string",
      "colorCode": "STD",
      "dataType": "Text",
      "name": "Widget A",
      "showInCompare": true,
      "unit": "st",
      "value": "string"
    }
  ],
  "averageRating": "299.00",
  "brand": "string",
  "brandLogoUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "brandSlug": "string",
  "breadcrumbs": [
    {
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "level": 42,
      "name": "Acme AB",
      "slug": "string"
    }
  ],
  "canonicalSlug": "string",
  "crossReferences": [
    {
      "isPrimary": true,
      "referenceNumber": "ABC-001",
      "source": "string",
      "type": "string"
    }
  ],
  "crossSellProducts": [
    {
      "brand": "string",
      "brandSlug": "string",
      "hasPriceRange": true,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isConfigurable": true,
      "isOnSale": true,
      "isPhasingOut": true,
      "isVariantMaster": true,
      "itemNumber": "WIDGET-A",
      "keySpecs": [
        {
          "code": "string",
          "label": "string",
          "unit": "st",
          "value": "string"
        }
      ],
      "listPrice": "299.00",
      "listPriceIncludingVat": "299.00",
      "lowestPrice30Days": "299.00",
      "lowestPrice30DaysIncludingVat": "299.00",
      "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "matchedVariantId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "matchedVariantSlug": "string",
      "mpn": "string",
      "name": "Widget A",
      "priceAfterTaxReduction": "299.00",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "secondImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "taxReductionName": "Widget A",
      "updatedAt": "2026-06-11T09:24:13.418",
      "variantSwatchTotal": 42,
      "variantSwatches": [
        {
          "colorHex": "string",
          "value": "string",
          "valueId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
        }
      ]
    }
  ],
  "currency": "string",
  "defaultVariantId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "description": "string",
  "discountEndsAt": "2026-06-11",
  "documents": [
    {
      "category": "string",
      "categoryName": "Hand tools",
      "categorySortOrder": 42,
      "contentType": "image/jpeg",
      "description": "string",
      "fileSize": 42,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "languageCode": "STD",
      "name": "Widget A",
      "sortOrder": 42,
      "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
    }
  ],
  "grade": "string",
  "gradedAlternatives": [
    {
      "grade": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "isCurrent": true,
      "itemNumber": "WIDGET-A",
      "listPrice": "299.00",
      "listPriceIncludingVat": "299.00",
      "name": "Acme AB",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50"
    }
  ],
  "gtin": "string",
  "height": "299.00",
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "images": [
    {
      "altText": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "isPrimary": true,
      "sortOrder": 42,
      "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
    }
  ],
  "incoming": {
    "expectedDate": "2026-06-11",
    "isConfirmed": true,
    "quantity": 42
  },
  "isConfigurable": true,
  "isMadeToOrder": true,
  "isOnSale": true,
  "isPhasingOut": true,
  "itemNumber": "WIDGET-A",
  "leadTimeDays": 42,
  "length": "299.00",
  "listPrice": "299.00",
  "listPriceIncludingVat": "299.00",
  "lowestPrice30Days": "299.00",
  "lowestPrice30DaysIncludingVat": "299.00",
  "madeToOrderText": "string",
  "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "metaDescription": "string",
  "metaTitle": "string",
  "mpn": "string",
  "name": "Widget A",
  "priceAfterTaxReduction": "299.00",
  "priceValidUntil": "2026-06-11",
  "primaryCategory": {
    "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
    "name": "Hand tools",
    "slug": "string"
  },
  "regularPrice": "299.00",
  "regularPriceIncludingVat": "299.00",
  "relatedProducts": [
    {
      "brand": "string",
      "brandSlug": "string",
      "hasPriceRange": true,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isConfigurable": true,
      "isOnSale": true,
      "isPhasingOut": true,
      "isVariantMaster": true,
      "itemNumber": "WIDGET-A",
      "keySpecs": [
        {
          "code": "string",
          "label": "string",
          "unit": "st",
          "value": "string"
        }
      ],
      "listPrice": "299.00",
      "listPriceIncludingVat": "299.00",
      "lowestPrice30Days": "299.00",
      "lowestPrice30DaysIncludingVat": "299.00",
      "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "matchedVariantId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "matchedVariantSlug": "string",
      "mpn": "string",
      "name": "Widget A",
      "priceAfterTaxReduction": "299.00",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "secondImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "taxReductionName": "Widget A",
      "updatedAt": "2026-06-11T09:24:13.418",
      "variantSwatchTotal": 42,
      "variantSwatches": [
        {
          "colorHex": "string",
          "value": "string",
          "valueId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
        }
      ]
    }
  ],
  "reviewCount": 42,
  "salesStartDate": "2026-06-11",
  "selectedVariantId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "seoSlug": "string",
  "shortDescription": "string",
  "stock": [
    {
      "availableQuantity": 42,
      "isAvailableForPickup": true,
      "leadTime": "string",
      "sortOrder": 42,
      "status": "InStock",
      "warehouseCode": "MAIN",
      "warehouseId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "warehouseName": "Main warehouse"
    }
  ],
  "stockDisplayMode": "string",
  "stockStatus": "InStock",
  "tags": [
    {
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "name": "Acme AB",
      "slug": "string"
    }
  ],
  "taxPercent": "12.50",
  "taxReductionName": "Widget A",
  "unit": "st",
  "variantAttributes": [
    {
      "displayType": "Buttons",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "name": "Acme AB",
      "sortOrder": 42,
      "values": [
        {
          "colorHex": "string",
          "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
          "sortOrder": 42,
          "value": "string"
        }
      ]
    }
  ],
  "variants": [
    {
      "documents": [
        {
          "category": "string",
          "categoryName": "Hand tools",
          "categorySortOrder": 42,
          "contentType": "image/jpeg",
          "description": "string",
          "fileSize": 42,
          "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
          "languageCode": "STD",
          "name": "Widget A",
          "sortOrder": 42,
          "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
        }
      ],
      "gtin": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "images": [
        {
          "altText": "string",
          "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
          "isPrimary": true,
          "sortOrder": 42,
          "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
        }
      ],
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isConfigurable": true,
      "isOnSale": true,
      "isPurchasable": true,
      "itemNumber": "WIDGET-A",
      "listPrice": "299.00",
      "listPriceIncludingVat": "299.00",
      "lowestPrice30Days": "299.00",
      "lowestPrice30DaysIncludingVat": "299.00",
      "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "name": "Acme AB",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "values": [
        {
          "attributeId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
          "valueId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
        }
      ]
    }
  ],
  "variantsHaveOwnPages": true,
  "weight": "1.250",
  "width": "299.00"
}

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 /catalog/products/{idOrSlug}/configuration

Get the configuration schema for a product

Returns what the shopper has to choose before a made-to-order product can be added to the cart: the fields, grouped for display, and the options for each field with their price impact and an image when one is set.

Show the full description

Fields without a group come first in a single unnamed group, so a product that was never grouped renders as a flat list. Calculated fields are left out — they are derived from the others. Pair this with POST .../configuration/price to price the choices as they are made. 404 when the product is not published on the channel, has no configurable features, or requires an on-site measurement: those products are sold through quote and order, not self-service, and are deliberately indistinguishable from a product that does not exist.

Supports ETag

Path parameters

Field Type
idOrSlug Required string

Responses

200 ProductConfigurationSchemaResponse
Field Type
currencyCode string · nullable
groups ConfigurationGroupDto[] · nullable
itemId string(uuid)
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/catalog/products/{idOrSlug}/configuration" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "currencyCode": "SEK",
  "groups": [
    {
      "fields": [
        {
          "code": "string",
          "defaultValue": "string",
          "displayStyle": "string",
          "hasMoreSelectableItems": true,
          "helpText": "string",
          "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
          "isRequired": true,
          "maxValue": "299.00",
          "minValue": "299.00",
          "name": "Acme AB",
          "options": [
            {}
          ],
          "selectableItems": [
            {}
          ],
          "selectableItemsCategoryId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
          "showWhen": "string",
          "step": "299.00",
          "swatchSize": "string",
          "type": "string",
          "unit": "st"
        }
      ],
      "name": "Retail"
    }
  ],
  "itemId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
}

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 /catalog/products/{idOrSlug}/configuration/price

Price a product configuration

Prices a set of choices without saving anything, so a storefront can show the price updating as the shopper chooses. POST rather than GET because the choices do not fit a query string; the call has no side effects and is never cached.

Show the full description

Returns the unit and total price together with isValid, which is false while a required field is missing or a value falls outside its range — the errors name the field so they can be shown next to the right input. The breakdown into base price and configuration surcharge is deliberately not part of this response: it describes how the merchant prices, not what the shopper pays.

Path parameters

Field Type
idOrSlug Required string

Body required

Field Type Description
quantity integer Antal att prissätta. Minst 1.
selections ConfigurationSelection[] · nullable Valen så långt de är gjorda. Ofullständiga val är förväntade.

Responses

200 ProductConfigurationPriceResponse
Field Type
currencyCode string · nullable
errors ConfigurationFieldErrorDto[] · nullable
isValid boolean
totalPrice decimal · nullable
unitPrice decimal · 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: 400 404 Errors

Examples

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/catalog/products/{idOrSlug}/configuration/price" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "Content-Type: application/json" \
  -d @body.json
Response 200
{
  "currencyCode": "SEK",
  "errors": [
    {
      "code": "string",
      "fieldId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "message": "string"
    }
  ],
  "isValid": true,
  "totalPrice": "299.00",
  "unitPrice": "299.00"
}

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 /catalog/stock

Get stock status for items

Returns aggregated stock status for a batch of items. Returns nothing when the storefront hides stock, or when it hides stock from visitors who are not logged in and the request carries no customer session.

Show the full description

Maximum 100 item ids per request; ids that cannot be parsed are skipped. With GUIDs the URL runs out before that limit does — use POST /ecom/catalog/stock for longer lists.

Query parameters

Field Type
itemIds Required string

Responses

200 StockResponse
Field Type
stock ItemStock[] · 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: 400 404 Errors

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/stock" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "stock": [
    {
      "availableQuantity": 42,
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "itemId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "stockStatus": "InStock"
    }
  ]
}

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 /catalog/stock

Get stock status for items (ids in body)

Identical to GET /ecom/catalog/stock — same handler, same response body — but takes the item ids in a JSON body, for id lists long enough to strain the URL. Both variants enforce the same limit of 100 ids per request.

Show the full description

Returns nothing when the storefront hides stock, or when it hides stock from visitors who are not logged in and the request carries no customer session.

Body required

Field Type Description
itemIds string(uuid)[] · nullable Artikel-id:n att slå upp. Dubbletter tas bort; ordningen saknar betydelse.

Responses

200 StockResponse
Field Type
stock ItemStock[] · 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: 400 404 Errors

Examples

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/catalog/stock" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "Content-Type: application/json" \
  -d @body.json
Response 200
{
  "stock": [
    {
      "availableQuantity": 42,
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "itemId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "stockStatus": "InStock"
    }
  ]
}

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 /catalog/suggest

Search suggestions

Type-ahead suggestions for the storefront search field: matching products, term completions and categories.

Supports ETag

Query parameters

Field Type
q string
limit integer

Headers

Field Type Description
X-Language string Language for translated content, as an ISO 639-1 code ("sv", "en"). Omitting it answers in the channel's default language, and so does a language the channel does not publish — this never fails the request. The channel decides which languages exist; read them from the session response.

Responses

200 SearchSuggestionsResponse
Field Type
categories SuggestedCategory[] · nullable
didYouMean string · nullable
products ProductSummary[] · nullable
query string · nullable
terms string[] · nullable
totalCount integer
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.

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/suggest" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "X-Language: …"
Response 200
{
  "categories": [
    {
      "code": "string",
      "name": "Hand tools"
    }
  ],
  "didYouMean": "string",
  "products": [
    {
      "brand": "string",
      "brandSlug": "string",
      "hasPriceRange": true,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isConfigurable": true,
      "isOnSale": true,
      "isPhasingOut": true,
      "isVariantMaster": true,
      "itemNumber": "WIDGET-A",
      "keySpecs": [
        {
          "code": "string",
          "label": "string",
          "unit": "st",
          "value": "string"
        }
      ],
      "listPrice": "299.00",
      "listPriceIncludingVat": "299.00",
      "lowestPrice30Days": "299.00",
      "lowestPrice30DaysIncludingVat": "299.00",
      "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "matchedVariantId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "matchedVariantSlug": "string",
      "mpn": "string",
      "name": "Widget A",
      "priceAfterTaxReduction": "299.00",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "secondImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "taxReductionName": "Widget A",
      "updatedAt": "2026-06-11T09:24:13.418",
      "variantSwatchTotal": 42,
      "variantSwatches": [
        {
          "colorHex": "string",
          "value": "string",
          "valueId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
        }
      ]
    }
  ],
  "query": "string",
  "terms": [
    "string"
  ],
  "totalCount": 137
}

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 /catalog/tags

List product tags

Returns the product tags that have at least one product listed in the current channel, with the number of products per tag, sorted by name. Each tag is a landing page: list its products with GET /ecom/catalog/products?tag={slug}.

Show the full description

Pass slug to look up a single tag — an empty list means no such tag page exists in this channel. Tags are shared by all channels, but the counts and the selection are channel-specific.

Supports ETag

Query parameters

Field Type
slug string

Responses

200 TagsResponse
Field Type
tags Tag[] · 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.

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/tags" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "tags": [
    {
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "name": "Acme AB",
      "productCount": 42,
      "slug": "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 /products/{itemId}/widgets

Get matching product widgets for a product

Returns active HTML widgets that match the given product based on category, supplier, item group, price range, etc.

Supports ETag

Path parameters

Field Type
itemId Required string(uuid)

Responses

200 ProductWidgetResponse[]
Field Type
cssClass string · nullable
htmlContent string · nullable
id string(uuid)
name string · nullable
placement string · nullable
sortOrder integer
style 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/products/{itemId}/widgets" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
[
  {
    "cssClass": "string",
    "htmlContent": "string",
    "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
    "name": "Widget A",
    "placement": "string",
    "sortOrder": 42,
    "style": "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.

Brand

BrandResponse
Field Type
id string(uuid)
name string · nullable
website string · nullable

Breadcrumb

BreadcrumbResponse
Field Type
id string(uuid)
level integer
name string · nullable
slug string · nullable

Category

CategoryResponse
Field Type
bannerHeadline string · nullable
bannerImageUrl string · nullable
bannerSubtitle string · nullable
children Category[] · nullable
code string · nullable
description string · nullable
iconName string · nullable
id string(uuid)
imageUrl string · nullable
metaDescription string · nullable
metaTitle string · nullable
name string · nullable
parentId string(uuid) · nullable
productCount integer
slug string · nullable
sortOrder integer

CategorySummary

CategorySummaryResponse
Field Type
id string(uuid)
name string · nullable
slug string · nullable

ConfigurationFieldDto

ConfigurationFieldDto
Field Type
code string · nullable
defaultValue string · nullable
displayStyle string · nullable
hasMoreSelectableItems boolean
helpText string · nullable
id string(uuid)
isRequired boolean
maxValue decimal · nullable
minValue decimal · nullable
name string · nullable
options ConfigurationOptionDto[] · nullable
selectableItems ConfigurationItemDto[] · nullable
selectableItemsCategoryId string(uuid) · nullable
showWhen string · nullable
step decimal · nullable
swatchSize string · nullable
type string · nullable
unit string · nullable

ConfigurationFieldErrorDto

ConfigurationFieldErrorDto
Field Type
code string · nullable
fieldId string(uuid)
message string · nullable

ConfigurationItemDto

ConfigurationItemDto
Field Type
imageUrl string · nullable
itemId string(uuid)
itemNumber string · nullable
name string · nullable

ConfigurationOptionDto

ConfigurationOptionDto
Field Type
code string · nullable
id string(uuid)
imageUrl string · nullable
isDefault boolean
name string · nullable
priceImpact decimal · nullable

ConfigurationSelection

ConfigurationSelectionInput
Field Type
boolean boolean · nullable
fieldId string(uuid)
number decimal · nullable
optionId string(uuid) · nullable
selectedItemId string(uuid) · nullable
text string · nullable

FilterGroup

FilterGroupResponse
Field Type
code string · nullable
dataType string · nullable
name string · nullable
sortOrder integer
unit string · nullable
values FilterValue[] · nullable

FilterValue

FilterValueResponse
Field Type
count integer
label string · nullable
value string · nullable

GradedAlternative

GradedAlternativeResponse
Field Type Description
grade string · nullable
id string(uuid)
isCurrent boolean
itemNumber string · nullable
listPrice decimal · nullable
listPriceIncludingVat decimal · nullable
name string · nullable
seoSlug string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
taxPercent decimal

IncomingStock

IncomingStockResponse
Field Type
expectedDate string(date)
isConfirmed boolean
quantity integer · nullable

ItemStock

ItemStockResponse
Field Type Description
availableQuantity integer · nullable
incoming IncomingStock
itemId string(uuid)
stockStatus enum InStock LowStock OutOfStock BackOrder

PagedResult<ProductSummary>

PagedResult_ProductSummaryResponse
Field Type
hasNextPage boolean
hasPreviousPage boolean
items ProductSummary[] · nullable
page integer
pageSize integer
totalCount integer
totalPages integer

ProductAttribute

ProductAttributeResponse
Field Type Description
code string · nullable
colorCode string · nullable
dataType enum Text WholeNumber DecimalNumber Boolean Date Url Html Color
name string · nullable
showInCompare boolean
unit string · nullable
value string · nullable

ProductCrossReference

ProductCrossReferenceResponse
Field Type
isPrimary boolean
referenceNumber string · nullable
source string · nullable
type string · nullable

ProductDocument

ProductDocumentResponse
Field Type
category string · nullable
categoryName string · nullable
categorySortOrder integer
contentType string · nullable
description string · nullable
fileSize integer
id string(uuid)
languageCode string · nullable
name string · nullable
sortOrder integer
url string · nullable

ProductImage

ProductImageResponse
Field Type
altText string · nullable
id string(uuid)
isPrimary boolean
sortOrder integer
url string · nullable

ProductKeySpec

ProductKeySpecResponse
Field Type
code string · nullable
label string · nullable
unit string · nullable
value string · nullable

ProductSummary

ProductSummaryResponse
Field Type Description
brand string · nullable
brandSlug string · nullable
hasPriceRange boolean
id string(uuid)
incoming IncomingStock
isConfigurable boolean
isOnSale boolean
isPhasingOut boolean
isVariantMaster boolean
itemNumber string · nullable
keySpecs ProductKeySpec[] · nullable
listPrice decimal · nullable
listPriceIncludingVat decimal · nullable
lowestPrice30Days decimal · nullable
lowestPrice30DaysIncludingVat decimal · nullable
mainImageUrl string · nullable
matchedVariantId string(uuid) · nullable
matchedVariantSlug string · nullable
mpn string · nullable
name string · nullable
priceAfterTaxReduction decimal · nullable
regularPrice decimal · nullable
regularPriceIncludingVat decimal · nullable
secondImageUrl string · nullable
seoSlug string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
taxPercent decimal
taxReductionName string · nullable
updatedAt string(date-time) · nullable
variantSwatchTotal integer
variantSwatches VariantSwatch[] · nullable

SearchCategoryMatch

SearchCategoryMatch
Field Type
code string · nullable
name string · nullable
productCount integer

SuggestedCategory

SuggestedCategory
Field Type
code string · nullable
name string · nullable

Tag

TagResponse
Field Type
id string(uuid)
name string · nullable
productCount integer
slug string · nullable

TagSummary

TagSummaryResponse
Field Type
id string(uuid)
name string · nullable
slug string · nullable

Variant

VariantResponse
Field Type Description
documents ProductDocument[] · nullable
gtin string · nullable
id string(uuid)
images ProductImage[] · nullable
incoming IncomingStock
isConfigurable boolean
isOnSale boolean
isPurchasable boolean
itemNumber string · nullable
listPrice decimal · nullable
listPriceIncludingVat decimal · nullable
lowestPrice30Days decimal · nullable
lowestPrice30DaysIncludingVat decimal · nullable
mainImageUrl string · nullable
name string · nullable
regularPrice decimal · nullable
regularPriceIncludingVat decimal · nullable
seoSlug string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
taxPercent decimal
values VariantValueRef[] · nullable

VariantAttribute

VariantAttributeResponse
Field Type Description
displayType enum Buttons Swatch Dropdown
id string(uuid)
name string · nullable
sortOrder integer
values VariantAttributeValue[] · nullable

VariantAttributeValue

VariantAttributeValueResponse
Field Type
colorHex string · nullable
id string(uuid)
sortOrder integer
value string · nullable

VariantSwatch

VariantSwatchResponse
Field Type
colorHex string · nullable
value string · nullable
valueId string(uuid)

VariantValueRef

VariantValueRef
Field Type
attributeId string(uuid)
valueId string(uuid)

WarehouseStock

WarehouseStockResponse
Field Type Description
availableQuantity integer · nullable
isAvailableForPickup boolean
leadTime string · nullable
sortOrder integer
status enum InStock LowStock OutOfStock BackOrder
warehouseCode string · nullable
warehouseId string(uuid)
warehouseName string · nullable