Hoppa till innehållet

Katalog

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.

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

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

GET /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.

Sökvägsparametrar

Fält Typ
tenantId Krävs string(uuid)
id Krävs string(uuid)

Frågeparametrar

Fält Typ
w integer

Svar

200 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 400 404 Felhantering

Exempel

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

Bas-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.

Sökvägsparametrar

Fält Typ
tenantId Krävs string(uuid)
id Krävs string(uuid)

Svar

200 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 404 Felhantering

Exempel

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

Bas-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.

Stödjer ETag

Frågeparametrar

Fält Typ
ids string

Svar

200 BrandsResponse
Fält Typ
brands Brand[] · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/brands" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "brands": [
    {
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "name": "Fluit",
      "website": "string"
    }
  ]
}

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

GET /catalog/categories

Get category tree

Returns the hierarchical category tree for navigation.

Stödjer ETag

Frågeparametrar

Fält Typ
parentId string
ids string

Svar

200 CategoriesResponse
Fält Typ
categories Category[] · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Exempel

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

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

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.

Stödjer ETag

Frågeparametrar

Fält Typ
category string
search string

Svar

200 CatalogFiltersResponse
Fält Typ
filters FilterGroup[] · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/filters" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "filters": [
    {
      "code": "string",
      "dataType": "string",
      "name": "Retail",
      "sortOrder": 42,
      "unit": "st",
      "values": [
        {
          "count": 42,
          "value": "string"
        }
      ]
    }
  ]
}

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

GET /catalog/list-widgets

Get product list page widgets

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

Stödjer ETag

Frågeparametrar

Fält Typ
categoryCode string

Svar

200 ListWidgetResponse[]
Fält Typ
cssClass string · nullable
htmlContent string · nullable
id string(uuid)
name string · nullable
placement string · nullable
sortOrder integer
style string · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/list-widgets" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
[
  {
    "cssClass": "string",
    "htmlContent": "string",
    "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
    "name": "Acme AB",
    "placement": "string",
    "sortOrder": 42,
    "style": "string"
  }
]

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

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.

Stödjer ETag

Frågeparametrar

Fält Typ
page integer
pageSize integer

Svar

200 PagedResult_ProductFeedRowResponse

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

Fält Typ Beskrivning
additionalImageUrls string[] · nullable
allowPreOrder boolean
brand string · nullable
countryOfOrigin string · nullable
currency string · nullable
depthCm decimal · nullable
description string · nullable
googleProductCategory string · nullable
grade string · nullable
gtin string · nullable
heightCm decimal · nullable
id string(uuid)
isOnSale boolean
itemGroupId string · nullable
itemNumber string · nullable
mainImageUrl string · nullable
mpn string · nullable
price decimal · nullable
priceIncludingVat decimal · nullable
priceValidFrom string(date) · nullable
priceValidTo string(date) · nullable
productType string · nullable
regularPrice decimal · nullable
regularPriceIncludingVat decimal · 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 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/product-feed" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "additionalImageUrls": [
        "https://cdn.fluit.cloud/assets/widget-a-front.jpg"
      ],
      "allowPreOrder": true,
      "brand": "string",
      "countryOfOrigin": "string",
      "currency": "string",
      "depthCm": "299.00",
      "description": "string",
      "googleProductCategory": "string",
      "grade": "string",
      "gtin": "string",
      "heightCm": "299.00",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "isOnSale": true,
      "itemGroupId": "string",
      "itemNumber": "WIDGET-A",
      "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "mpn": "string",
      "price": "299.00",
      "priceIncludingVat": "299.00",
      "priceValidFrom": "2026-06-11",
      "priceValidTo": "2026-06-11",
      "productType": "string",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "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
}

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

GET /catalog/products

List products

Returns a paginated list of products with optional filtering by category and search term. Pass ids=guid,guid to fetch a hand-picked set; without an explicit sort they are returned in the order given. Only includes products active on the current channel.

Stödjer ETag

Frågeparametrar

Fält Typ
category string
search string
page integer
pageSize integer
sort string
ids string

Svar

200 PagedResult_ProductSummaryResponse

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

Fält Typ Beskrivning
brand string · nullable
brandSlug string · nullable
id string(uuid)
incoming IncomingStock
isOnSale boolean
isPhasingOut boolean
itemNumber string · nullable
keySpecs ProductKeySpec[] · nullable
listPrice decimal · nullable
listPriceIncludingVat decimal · nullable
lowestPrice30Days decimal · nullable
lowestPrice30DaysIncludingVat decimal · nullable
mainImageUrl string · nullable
mpn string · nullable
name string · nullable
regularPrice decimal · nullable
regularPriceIncludingVat decimal · nullable
seoSlug string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
taxPercent decimal
updatedAt string(date-time) · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/products" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "brand": "string",
      "brandSlug": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isOnSale": true,
      "isPhasingOut": 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",
      "mpn": "string",
      "name": "Widget A",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "updatedAt": "2026-06-11T09:24:13.418"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

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.

Stödjer ETag

Sökvägsparametrar

Fält Typ
idOrSlug Krävs string

Svar

200 ProductDetailResponse
Fält Typ Beskrivning
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
crossReferences ProductCrossReference[] · nullable
crossSellProducts ProductSummary[] · nullable
currency string · nullable
description string · nullable
documents ProductDocument[] · nullable
grade string · nullable
gtin string · nullable
height decimal · nullable
id string(uuid)
images ProductImage[] · nullable
incoming IncomingStock
isOnSale boolean
isPhasingOut boolean
itemNumber string · nullable
length decimal · nullable
listPrice decimal · nullable
listPriceIncludingVat decimal · nullable
lowestPrice30Days decimal · nullable
lowestPrice30DaysIncludingVat decimal · nullable
mainImageUrl string · nullable
metaDescription string · nullable
metaTitle string · nullable
mpn string · nullable
name string · nullable
priceValidUntil string(date) · nullable
primaryCategory CategorySummary
regularPrice decimal · nullable
regularPriceIncludingVat decimal · nullable
relatedProducts ProductSummary[] · nullable
reviewCount integer
salesStartDate string(date) · nullable
seoSlug string · nullable
shortDescription string · nullable
stock WarehouseStock[] · nullable
stockDisplayMode string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
taxPercent decimal
unit string · nullable
variantAttributes VariantAttribute[] · nullable
variants Variant[] · nullable
weight decimal · nullable
width decimal · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/products/{idOrSlug}" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "accessories": [
    {
      "brand": "string",
      "brandSlug": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isOnSale": true,
      "isPhasingOut": 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",
      "mpn": "string",
      "name": "Widget A",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "updatedAt": "2026-06-11T09:24:13.418"
    }
  ],
  "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"
    }
  ],
  "crossReferences": [
    {
      "isPrimary": true,
      "referenceNumber": "ABC-001",
      "source": "string",
      "type": "string"
    }
  ],
  "crossSellProducts": [
    {
      "brand": "string",
      "brandSlug": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isOnSale": true,
      "isPhasingOut": 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",
      "mpn": "string",
      "name": "Widget A",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "updatedAt": "2026-06-11T09:24:13.418"
    }
  ],
  "currency": "string",
  "description": "string",
  "documents": [
    {
      "category": "string",
      "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",
  "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
  },
  "isOnSale": true,
  "isPhasingOut": true,
  "itemNumber": "WIDGET-A",
  "length": "299.00",
  "listPrice": "299.00",
  "listPriceIncludingVat": "299.00",
  "lowestPrice30Days": "299.00",
  "lowestPrice30DaysIncludingVat": "299.00",
  "mainImageUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "metaDescription": "string",
  "metaTitle": "string",
  "mpn": "string",
  "name": "Widget A",
  "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",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isOnSale": true,
      "isPhasingOut": 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",
      "mpn": "string",
      "name": "Widget A",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "updatedAt": "2026-06-11T09:24:13.418"
    }
  ],
  "reviewCount": 42,
  "salesStartDate": "2026-06-11",
  "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",
  "taxPercent": "12.50",
  "unit": "st",
  "variantAttributes": [
    {
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "name": "Acme AB",
      "sortOrder": 42,
      "values": [
        {
          "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
          "sortOrder": 42,
          "value": "string"
        }
      ]
    }
  ],
  "variants": [
    {
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isOnSale": 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"
        }
      ]
    }
  ],
  "weight": "1.250",
  "width": "299.00"
}

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

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.

Visa hela beskrivningen

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.

Frågeparametrar

Fält Typ
itemIds Krävs string

Svar

200 StockResponse
Fält Typ
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.

Standardfel: 400 404 Felhantering

Exempel

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"
Svar 200
{
  "stock": [
    {
      "availableQuantity": 42,
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "itemId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "stockStatus": "InStock"
    }
  ]
}

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

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.

Visa hela beskrivningen

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 krävs

Fält Typ Beskrivning
itemIds string(uuid)[] · nullable Artikel-id:n att slå upp. Dubbletter tas bort; ordningen saknar betydelse.

Svar

200 StockResponse
Fält Typ
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.

Standardfel: 400 404 Felhantering

Exempel

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
Svar 200
{
  "stock": [
    {
      "availableQuantity": 42,
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "itemId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "stockStatus": "InStock"
    }
  ]
}

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

GET /catalog/suggest

Search suggestions

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

Stödjer ETag

Frågeparametrar

Fält Typ
q string
limit integer

Svar

200 SearchSuggestionsResponse
Fält Typ
categories SuggestedCategory[] · nullable
didYouMean string · nullable
products ProductSummary[] · nullable
query string · nullable
terms string[] · nullable
totalCount integer
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/catalog/suggest" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
{
  "categories": [
    {
      "code": "string",
      "name": "Hand tools"
    }
  ],
  "didYouMean": "string",
  "products": [
    {
      "brand": "string",
      "brandSlug": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "incoming": {
        "expectedDate": "2026-06-11",
        "isConfirmed": true,
        "quantity": 42
      },
      "isOnSale": true,
      "isPhasingOut": 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",
      "mpn": "string",
      "name": "Widget A",
      "regularPrice": "299.00",
      "regularPriceIncludingVat": "299.00",
      "seoSlug": "string",
      "stockStatus": "InStock",
      "taxPercent": "12.50",
      "updatedAt": "2026-06-11T09:24:13.418"
    }
  ],
  "query": "string",
  "terms": [
    "string"
  ],
  "totalCount": 137
}

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

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.

Stödjer ETag

Sökvägsparametrar

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

Svar

200 ProductWidgetResponse[]
Fält Typ
cssClass string · nullable
htmlContent string · nullable
id string(uuid)
name string · nullable
placement string · nullable
sortOrder integer
style string · nullable
304 Tom body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standardfel: 404 Felhantering

Exempel

curl
curl "https://api.erp.fluit.cloud/ecom/products/{itemId}/widgets" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Svar 200
[
  {
    "cssClass": "string",
    "htmlContent": "string",
    "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
    "name": "Widget A",
    "placement": "string",
    "sortOrder": 42,
    "style": "string"
  }
]

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

Scheman

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

Brand

BrandResponse
Fält Typ
id string(uuid)
name string · nullable
website string · nullable

Breadcrumb

BreadcrumbResponse
Fält Typ
id string(uuid)
level integer
name string · nullable
slug string · nullable

Category

CategoryResponse
Fält Typ
children Category[] · nullable
code string · nullable
description string · nullable
id string(uuid)
imageUrl string · nullable
name string · nullable
parentId string(uuid) · nullable
productCount integer
slug string · nullable
sortOrder integer

CategorySummary

CategorySummaryResponse
Fält Typ
id string(uuid)
name string · nullable
slug string · nullable

FilterGroup

FilterGroupResponse
Fält Typ
code string · nullable
dataType string · nullable
name string · nullable
sortOrder integer
unit string · nullable
values FilterValue[] · nullable

FilterValue

FilterValueResponse
Fält Typ
count integer
value string · nullable

IncomingStock

IncomingStockResponse
Fält Typ
expectedDate string(date)
isConfirmed boolean
quantity integer · nullable

ItemStock

ItemStockResponse
Fält Typ Beskrivning
availableQuantity integer · nullable
incoming IncomingStock
itemId string(uuid)
stockStatus enum InStock LowStock OutOfStock BackOrder

PagedResult<ProductSummary>

PagedResult_ProductSummaryResponse
Fält Typ
hasNextPage boolean
hasPreviousPage boolean
items ProductSummary[] · nullable
page integer
pageSize integer
totalCount integer
totalPages integer

ProductAttribute

ProductAttributeResponse
Fält Typ Beskrivning
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
Fält Typ
isPrimary boolean
referenceNumber string · nullable
source string · nullable
type string · nullable

ProductDocument

ProductDocumentResponse
Fält Typ
category string · nullable
contentType string · nullable
description string · nullable
fileSize integer
id string(uuid)
languageCode string · nullable
name string · nullable
sortOrder integer
url string · nullable

ProductImage

ProductImageResponse
Fält Typ
altText string · nullable
id string(uuid)
isPrimary boolean
sortOrder integer
url string · nullable

ProductKeySpec

ProductKeySpecResponse
Fält Typ
code string · nullable
label string · nullable
unit string · nullable
value string · nullable

ProductSummary

ProductSummaryResponse
Fält Typ Beskrivning
brand string · nullable
brandSlug string · nullable
id string(uuid)
incoming IncomingStock
isOnSale boolean
isPhasingOut boolean
itemNumber string · nullable
keySpecs ProductKeySpec[] · nullable
listPrice decimal · nullable
listPriceIncludingVat decimal · nullable
lowestPrice30Days decimal · nullable
lowestPrice30DaysIncludingVat decimal · nullable
mainImageUrl string · nullable
mpn string · nullable
name string · nullable
regularPrice decimal · nullable
regularPriceIncludingVat decimal · nullable
seoSlug string · nullable
stockStatus enum InStock LowStock OutOfStock BackOrder
taxPercent decimal
updatedAt string(date-time) · nullable

SearchCategoryMatch

SearchCategoryMatch
Fält Typ
code string · nullable
name string · nullable
productCount integer

SuggestedCategory

SuggestedCategory
Fält Typ
code string · nullable
name string · nullable

Variant

VariantResponse
Fält Typ Beskrivning
id string(uuid)
incoming IncomingStock
isOnSale 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
Fält Typ
id string(uuid)
name string · nullable
sortOrder integer
values VariantAttributeValue[] · nullable

VariantAttributeValue

VariantAttributeValueResponse
Fält Typ
id string(uuid)
sortOrder integer
value string · nullable

VariantValueRef

VariantValueRef
Fält Typ
attributeId string(uuid)
valueId string(uuid)

WarehouseStock

WarehouseStockResponse
Fält Typ Beskrivning
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