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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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/search
Search products
Full-text product search with relevance ranking, synonym expansion, typo tolerance and zero-result fallbacks.
Supports ETag
Query parameters
Field
Type
q
string
category
string
page
integer
pageSize
integer
sort
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.