Hoppa till innehållet

Artiklar

Items/products including stock availability, price calculation, units, attributes and assets. Addressed by itemNumber.

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

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

GET /attributes

List attribute definitions

Returns the active product attribute definitions — the specification fields an item can carry — with the rules that govern their values: data type, unit, allowed values for a fixed list, numeric bounds, a pattern text must match, and whether an item may hold several values.

Visa hela beskrivningen

Use code when setting a value with PUT /preview/items/{itemNumber}/attributes/{attributeCode}, and when filtering GET /preview/items with ?attribute=.

items:read Paginerad

Frågeparametrar

Fält Typ Beskrivning
search string Matches the attribute code and name, case-insensitively and on partial words.
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Svar

200 PagedResult_PublicAttributeResponse

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

Fält Typ Beskrivning
allowedValues string[] · nullable The permitted values when PublicApi.Preview.Items.Queries.PublicAttributeResponse.HasPredefinedValues is true.
code Krävs string · nullable Stable code, e.g. `material`. This is what you pass when setting a value.
dataType enum Data type of a product attribute value. Mirrors `Domain.Items.AttributeDataType`. Determines how `attributes[].value` is formatted in responses and parsed in requests. Text WholeNumber DecimalNumber Boolean Date Url Html Color
description string · nullable Administrator-facing description of what the attribute means.
group string · nullable Group the attribute is shown under, e.g. `Dimensions`.
hasPredefinedValues boolean True when the attribute takes its value from PublicApi.Preview.Items.Queries.PublicAttributeResponse.AllowedValues rather than free input.
isMultiValue boolean True when an item may hold several values for this attribute.
isVisibleOnProductPage boolean True when the attribute is shown on the product page in the web shop.
maxValue decimal · nullable Highest accepted value for a numeric attribute. Null means no upper bound.
minValue decimal · nullable Lowest accepted value for a numeric attribute. Null means no lower bound.
name Krävs string · nullable Display name, e.g. `Material`.
pattern string · nullable Regular expression a text value must match in full. Null means no pattern is enforced.
unit string · nullable Unit shown after the value, e.g. `kg`. Null when the attribute has no unit.

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/attributes"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "allowedValues": [
        "string"
      ],
      "code": "string",
      "dataType": "Text",
      "description": "string",
      "group": "string",
      "hasPredefinedValues": true,
      "isMultiValue": true,
      "isVisibleOnProductPage": true,
      "maxValue": "299.00",
      "minValue": "299.00",
      "name": "Acme AB",
      "pattern": "string",
      "unit": "st"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

GET /inventory/availability

List stock availability for many items

Returns stock availability for every stocked item, paginated, with the same per-warehouse breakdown as GET /preview/items/{itemNumber}/availability — including whether movements in that warehouse require serial or batch numbers.

Visa hela beskrivningen

Use this instead of calling the per-item endpoint in a loop: a catalogue of a few thousand SKUs otherwise consumes the entire rate limit budget on every sync cycle. Items with no stock record in any active warehouse are omitted. Pagination is over items, never over warehouse rows, so an item's totals are always complete.

Frågeparametrar

Fält Typ Beskrivning
itemNumbers string Comma-separated item numbers to limit the result to. Max 200 values.
warehouseCode string Restricts the breakdown to one warehouse, in which case the totals cover that warehouse only.
modifiedSince string(date-time) Returns only items whose stock records were created or changed at or after this instant (ISO 8601 UTC datetime). This is what makes a recurring poll cheap.
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Svar

200 PagedResult_PublicItemAvailabilityResponse

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

Fält Typ Beskrivning
itemNumber string · nullable Item number of the item.
totalAllocatedQuantity decimal Total quantity reserved for orders across all warehouses. Serialised as a decimal string.
totalAvailableQuantity decimal Total quantity available for new orders (on hand − allocated). Serialised as a decimal string.
totalQuantityOnHand decimal Total physical quantity on hand across all warehouses. Serialised as a decimal string.
warehouses WarehouseAvailability[] · nullable Per-warehouse breakdown. Empty list if the item is not stocked in any warehouse.
400 ProblemDetails itemNumbers held more than 200 values.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/inventory/availability"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "itemNumber": "WIDGET-A",
      "totalAllocatedQuantity": "10",
      "totalAvailableQuantity": "10",
      "totalQuantityOnHand": "10",
      "warehouses": [
        {
          "allocatedQuantity": "10",
          "availableQuantity": "10",
          "quantityOnHand": "10",
          "replenishmentType": "Purchase",
          "requiresBatch": true,
          "requiresSerial": true,
          "trackingType": "None",
          "warehouseCode": "MAIN",
          "warehouseName": "Main warehouse"
        }
      ]
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

POST /item-relations/batch

Link many items to each other in one call

Adds up to 200 item relations per call — accessories, related items, cross-sells, spare parts. Both items are addressed by item number and must already exist. A relation that already exists (same source, target and type) is reported as `unchanged`, not as an error, so a migration can be re-run from the top.

Visa hela beskrivningen

Like POST /preview/items/batch, a well-formed batch always answers 200 and every row carries its own `outcome`; re-send only the failed rows. Row errors: `ItemRelations.Bulk.UnknownSourceItem`, `ItemRelations.Bulk.UnknownTargetItem`, `ItemRelation.SelfReference`, `ItemRelation.InvalidType` and `ItemRelations.Bulk.GradedAlternativeNotSupported` — a graded alternative carries a grade and is linked one at a time in the app.

Body krävs

Fält Typ Beskrivning
relations Krävs BatchItemRelationsRelationRow[] The relations to add. At most 200 per call.

Svar

200 BatchItemRelationsResponse
Fält Typ
createdCount integer
failedCount integer
results BatchItemRelationsRowResult[] · nullable
unchangedCount integer

Standardfel: 400 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.fluit.cloud/preview/item-relations/batch" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @body.json
Two accessories on a chair
{
  "relations": [
    {
      "relationType": "Accessory",
      "sourceItemNumber": "655-001",
      "targetItemNumber": "100-21OIL"
    },
    {
      "relationType": "Accessory",
      "sourceItemNumber": "655-001",
      "targetItemNumber": "100-FARSKINN"
    }
  ]
}
Svar 200
{
  "createdCount": 42,
  "failedCount": 42,
  "results": [
    {
      "error": {
        "code": "string",
        "detail": "string"
      },
      "index": 42,
      "outcome": "string",
      "sourceItemNumber": "ABC-001",
      "targetItemNumber": "ABC-001"
    }
  ],
  "unchangedCount": 42
}

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

GET /item-warehouses

List item warehouse settings

Returns one row per item and warehouse the item is set up in, with the reorder point, stock levels, safety stock, lead time, lot sizing, supply policy and replenishment settings.

Visa hela beskrivningen

Filter with itemNumber for one item's warehouses, or with warehouseCode for everything in one warehouse — the starting point for a periodic recalculation that writes back through POST /preview/item-warehouses/batch. Sorted by itemNumber, then warehouseCode. **How MRP reads these settings.** `minQuantity` is the reorder point. When projected stock falls below max(safety stock, minQuantity), MRP proposes replenishment according to `lotSizing`: `LotForLot` fills to the safety stock and ignores the reorder point, `FixedReorderQuantity` orders `reorderQuantity` (required, > 0) in whole multiples, `FillToMax` orders up to `maxQuantity` (required). The safety stock is `safetyStock`, else `calculatedSafetyStock`, else zero. A purchase quantity is then rounded up to the supplier's `minOrderQuantity` and `orderMultiple`. **Which lead time MRP uses for a purchased item**, first one set wins: (1) the lead time on an active purchase agreement line, (2) `leadTimeDays` on the supplier item of the supplier MRP picks (agreement supplier, else the primary supplier) — see GET/PATCH /preview/suppliers/{supplierNumber}/items, (3) `leadTimeDays` on this item-warehouse row, (4) 14 days, with a warning in the MRP run. A manufactured item uses (3) then (4). A transferred item uses `transferLeadTimeDays`, else the warehouse's transport time.

items:read Paginerad

Frågeparametrar

Fält Typ Beskrivning
itemNumber string Only rows for this item, matched exactly.
warehouseCode string Only rows in this warehouse, matched exactly.
isActive boolean Filters on whether the item is active in the warehouse.
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Svar

200 PagedResult_PublicItemWarehouseResponse

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

Fält Typ Beskrivning
calculatedSafetyStock decimal · nullable Read only. The safety stock Fluit last calculated from demand history, importance and service level. Used by MRP when `safetyStock` is null. Serialised as a decimal string.
importance enum Stocking importance, which drives safety stock calculation. Mirrors `Domain.Items.ItemImportance`. Critical Standard Accessory SpecialOrder
isActive boolean Whether the item is active in this warehouse.
itemName string · nullable Display name of the item.
itemNumber string · nullable Item number — together with `warehouseCode` the address of this row.
leadTimeDays integer · nullable Lead time in calendar days for this item in this warehouse. For a purchased item, the supplier's lead time wins when one is set — see the endpoint description for the order. Null if not set.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
lotSizing enum How much MRP proposes when a make-to-stock item needs replenishing in a warehouse. Mirrors `Domain.Items.LotSizingPolicy`. The policy reads the levels on the same item-warehouse row: `minQuantity` (the reorder point), `reorderQuantity` and `maxQuantity`. A purchase quantity is then rounded up to the supplier's `minOrderQuantity` and `orderMultiple`. LotForLot FixedReorderQuantity FillToMax
maxQuantity decimal · nullable Maximum stock level. The target for `FillToMax`. Null if not set. Serialised as a decimal string.
minQuantity decimal · nullable Reorder point. When projected stock falls below max(safetyStock, minQuantity), MRP proposes replenishment according to `lotSizing`. Null if not set. Serialised as a decimal string.
reorderQuantity decimal · nullable Reorder quantity. The quantity ordered with `FixedReorderQuantity`. Null if not set. Serialised as a decimal string.
replenishmentType enum How an item is replenished. Mirrors `Domain.Items.ReplenishmentType`. Can be overridden per warehouse. Purchase Manufacture Transfer Assembly Subcontract
safetyStock decimal · nullable Safety stock set by hand. Null means MRP uses `calculatedSafetyStock`, or zero when that is null too. Serialised as a decimal string.
serviceLevelOverride decimal · nullable Service level between 0 and 1 (e.g. "0.95") that overrides the one implied by `importance`. Null if not overridden. Serialised as a decimal string.
supplyPolicy enum Whether an item is supplied to stock or to order. Mirrors `Domain.Items.SupplyPolicy`. ToStock ToOrder
transferFromWarehouseCode string · nullable Warehouse the item is transferred from when `replenishmentType` is `Transfer`. Null means the warehouse's own transfer source applies.
transferLeadTimeDays integer · nullable Transport time in days from the source warehouse. Null means the warehouse's own transport time applies, when the source is the warehouse's.
warehouseCode string · nullable Warehouse code — together with `itemNumber` the address of this row.
warehouseName string · nullable Display name of the warehouse.

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/item-warehouses"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "calculatedSafetyStock": "299.00",
      "importance": "Critical",
      "isActive": true,
      "itemName": "Widget A",
      "itemNumber": "WIDGET-A",
      "leadTimeDays": 42,
      "links": {
        "self": "string"
      },
      "lotSizing": "LotForLot",
      "maxQuantity": "10",
      "minQuantity": "10",
      "reorderQuantity": "10",
      "replenishmentType": "Purchase",
      "safetyStock": "299.00",
      "serviceLevelOverride": "299.00",
      "supplyPolicy": "ToStock",
      "transferFromWarehouseCode": "MAIN",
      "transferLeadTimeDays": 42,
      "warehouseCode": "MAIN",
      "warehouseName": "Main warehouse"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

POST /item-warehouses/batch

Update warehouse settings on many items in one call

Updates up to 200 item-warehouse rows per call — for example reorder points recalculated outside Fluit once a month. Each row is a PATCH /preview/items/{itemNumber}/warehouses/{warehouseCode} body plus its address, `itemNumber` and `warehouseCode`, and is validated exactly like that PATCH.

Visa hela beskrivningen

The batch only updates rows that exist; it does not set an item up in a new warehouse. The HTTP status describes the request, not the rows: a well-formed batch always answers 200, and every row carries its own `outcome` (`updated` or `failed`) plus an `error` when it failed. A failed row changes nothing on that row and never blocks the others — re-send only the failed rows. Typical row errors: `ItemWarehouse.NotFound` (the item, the warehouse or the pairing does not exist), a validation error naming the field, and `ItemWarehouse.ConcurrentModification` when the row changed while it was written. 4xx is reserved for the batch itself. An `Idempotency-Key` is required like on every POST under /preview; deriving it from the run and the batch index (for example `sha256(runId + ':' + batchIndex)`) makes an interrupted run safe to resume. Only provided fields are updated (JSON Merge Patch semantics). Omitted fields are left unchanged. Pass null to clear a nullable field. isActive, lotSizing, replenishmentType and importance cannot be null. Unknown fields are rejected with 400, naming the field and listing the ones this endpoint accepts. Rules are checked against the resulting combination, not field by field, so raising minQuantity and maxQuantity together in one call (10/20 → 30/40) is accepted. Decimals are sent as strings ("12.5"); numbers are accepted too. Enums are sent by name. Quantities are 0 to 99999999999999.9999 and lead times 0 to 365 days. **How MRP reads these settings.** `minQuantity` is the reorder point. When projected stock falls below max(safety stock, minQuantity), MRP proposes replenishment according to `lotSizing`: `LotForLot` fills to the safety stock and ignores the reorder point, `FixedReorderQuantity` orders `reorderQuantity` (required, > 0) in whole multiples, `FillToMax` orders up to `maxQuantity` (required). The safety stock is `safetyStock`, else `calculatedSafetyStock`, else zero. A purchase quantity is then rounded up to the supplier's `minOrderQuantity` and `orderMultiple`. **Which lead time MRP uses for a purchased item**, first one set wins: (1) the lead time on an active purchase agreement line, (2) `leadTimeDays` on the supplier item of the supplier MRP picks (agreement supplier, else the primary supplier) — see GET/PATCH /preview/suppliers/{supplierNumber}/items, (3) `leadTimeDays` on this item-warehouse row, (4) 14 days, with a warning in the MRP run. A manufactured item uses (3) then (4). A transferred item uses `transferLeadTimeDays`, else the warehouse's transport time.

Body krävs

Fält Typ Beskrivning
itemWarehouses Krävs BatchPatchItemWarehousesRow[] The rows to update. At most 200 per call.

Svar

200 BatchPatchItemWarehousesResponse
Fält Typ
failedCount integer
results BatchPatchItemWarehousesRowResult[] · nullable
updatedCount integer
400 ProblemDetails The body is not a JSON object, has no itemWarehouses array, the array is empty (ItemWarehouses.Batch.Empty) or holds more than 200 rows (ItemWarehouses.Batch.TooManyRows).
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.fluit.cloud/preview/item-warehouses/batch" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @body.json
Switch to fixed reorder quantity
{
  "itemWarehouses": [
    {
      "itemNumber": "670-00001",
      "leadTimeDays": 10,
      "lotSizing": "FixedReorderQuantity",
      "reorderQuantity": "50",
      "warehouseCode": "MAIN"
    },
    {
      "itemNumber": "670-00003",
      "safetyStock": null,
      "warehouseCode": "MAIN"
    }
  ]
}
Monthly reorder point update
{
  "itemWarehouses": [
    {
      "itemNumber": "670-00001",
      "maxQuantity": "120",
      "minQuantity": "40",
      "warehouseCode": "MAIN"
    },
    {
      "itemNumber": "670-00002",
      "minQuantity": "15",
      "safetyStock": "5",
      "warehouseCode": "MAIN"
    }
  ]
}
Svar 200
{
  "failedCount": 42,
  "results": [
    {
      "error": {
        "code": "string",
        "detail": "string"
      },
      "index": 42,
      "itemNumber": "WIDGET-A",
      "outcome": "string",
      "warehouseCode": "MAIN"
    }
  ],
  "updatedCount": 42
}

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

GET /items

List items

Returns a paginated list of items for the authenticated tenant. Sorted by item number. Filters combine with AND. Enum filters are matched case-insensitively and an unknown value returns 400.

Visa hela beskrivningen

Delta sync: ?modifiedSince= (ISO 8601 UTC datetime) returns records created or changed at or after that instant, and is the intended way to run an incremental sync. A change anywhere inside the record counts: editing a line moves the parent's modifiedDate too, so no change can hide below the resource level. Newly created items are included even though they have no modifiedDate yet. Deletions are not visible here: a deleted record is really gone, so it simply stops appearing, which is indistinguishable from "unchanged". Poll GET /preview/deletions?deletedSince= alongside this endpoint to learn what was removed.

Frågeparametrar

Fält Typ Beskrivning
search string Matches item number, name and description, case-insensitively and on partial words.
status enum Filters on the item's lifecycle status. Draft PendingApproval Active PhasingOut Discontinued Archived
modifiedSince string(date-time) Returns only records created or changed at or after this instant (ISO 8601 UTC datetime). A change anywhere inside the record counts, including on its lines.
reference string Looks the value up as an identifier: first the item number, then the item's own barcode, then barcodes on alternative units (case, pallet) and finally cross-references such as manufacturer (MPN) and OEM numbers. The identifier that matched is reported per row in matchedOn. Barcodes are not guaranteed unique, so this returns a list rather than one item.
referenceType enum Restricts ?reference= to one cross-reference type instead of searching every identifier. Manufacturer Oem IndustryStandard Superseded Competitor Barcode Custom
itemNumbers string Comma-separated item numbers to fetch in one call, so a change notification covering many items costs one request instead of one each. Max 200 values.
itemType enum Filters on what kind of item it is. StockItem NonStockItem Service Work Consumable Kit Phantom Charge VariantMaster
grade enum Filters on the item's quality grade. A B C D
publishOnWeb boolean Retired. Use sales-channel publications instead.
isSellable boolean Filters on whether the item may be sold.
isConfigurable boolean True returns only made-to-order items that have a configuration schema at GET /preview/items/{itemNumber}/configuration; false returns only the plain catalogue items.
isVariant boolean True returns only variants, false only non-variants.
categoryCode string Filters on the stable category code, counting only active and non-deleted assignments. Subcategories are not included — expand the tree client-side. This is also how you build the picker for an ItemSelection feature, by passing its selectableItemCategoryCode.
brandCode string Filters on the brand code.
parentItemNumber string Returns the variants of one variant master, given by its item number.
attribute string Filters on an attribute code from GET /preview/attributes. Alone it returns the items that have the attribute filled in at all — useful for finding what is still missing. Combine with attributeValue to filter on the value.
attributeValue string The attribute value to match, exactly. Requires ?attribute=. Numbers are compared as numbers, so 40 matches a stored 40.000000. For partial matches across all text, use ?search= instead.
language string ISO 639-1 language code, e.g. en. Returns name, description and short description translated to that language where a translation exists; other fields and untranslated texts come back in the base language. An unknown or inactive language is ignored.
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Svar

200 PagedResult_PublicItemResponse

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

Fält Typ Beskrivning
barcode string · nullable EAN / GTIN barcode or other scanning code. Null if not set.
baseUnitCode string · nullable Code of the item's base unit of measure, e.g. `st`, `kg`. Null if not set.
brandCode string · nullable Stable brand code, usable to correlate against your own brand register. Null if not set.
brandName string · nullable Brand name. Null if not set.
categoryCode string · nullable Stable code of the item's primary-hierarchy category, e.g. `TOOLS-HAND` — the value to pass to `?categoryCode=` and the one a feature's `selectableItemCategoryCode` refers to. Null if not categorised.
categoryName string · nullable Name of the item's primary-hierarchy category. Null if not categorised.
countryOfOrigin string · nullable ISO 3166-1 alpha-2 country of manufacture, e.g. `SE`, `CN`. Null if not set.
createdDate string(date-time) UTC timestamp when the item was created.
decimalPlaces integer Number of decimals allowed on quantities for this item (0–6). Quantities with more decimals are rejected.
depth decimal · nullable Depth in centimetres. Serialised as a decimal string. Null if not set.
description string · nullable Long-form description, e.g. for a product page. Null if not set.
grade enum Item condition grade (A/B/C-stock) exposed via the Public API. Mirrors `Domain.Items.Grade`. A B C D
height decimal · nullable Height in centimetres. Serialised as a decimal string. Null if not set.
hsCode string · nullable Harmonized System (HS / KN) customs tariff code. Null if not set.
id string(uuid) Internal unique identifier (UUID v7).
isActive boolean Whether the item is active. Inactive items cannot be placed on new orders.
isConfigurable boolean Whether the item is made to order from configurable features (measurements, fabrics, add-ons). True means GET /preview/items/{itemNumber}/configuration returns a configuration schema and the item is ordered through /preview/configurations rather than as a plain order line.
isSellable boolean Whether the item can be sold. False for component-only items.
isStockable boolean Whether the item is held in inventory. False for services, charges and drop-shipped items. Derived from `itemType` — use this rather than matching on the type yourself, so a new item type does not silently change how your integration classifies the item.
itemNumber string · nullable Unique item number — business key, e.g. `WIDGET-PRO`.
itemType enum Item type exposed via the Public API. Mirrors `Domain.Items.ItemType`. StockItem NonStockItem Service Work Consumable Kit Phantom Charge VariantMaster
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
matchedOn string · nullable Which identifier the `?reference=` lookup matched on: `ItemNumber`, `Barcode` (the item's own), `PackBarcode` (a barcode on an alternative unit such as a box) or `CrossReference` (manufacturer/OEM number). Null unless `?reference=` was used. A scanner uses this to tell a single unit from a case: a `PackBarcode` match means the scanned code represents several base units, so read `units[]` on the item detail for the conversion factor before booking a quantity.
modifiedDate string(date-time) · nullable UTC timestamp of the last modification. Null if never modified after creation.
name string · nullable Display name / product name.
netWeight decimal · nullable Net weight in kilograms. Serialised as a decimal string to avoid IEEE 754 precision loss. Null if not set.
parentItemNumber string · nullable Item number of the variant master this item belongs to. Null unless the item is a variant.
publishOnWeb boolean Whether the item has an active publication on at least one sales channel. Retained as a compatibility alias; new integrations should use channel publications.
salesEndDate string(date) · nullable Date until which the item can be sold (ISO 8601 date). Null if unrestricted.
salesPrice decimal · nullable Default sales price in the tenant default currency. Serialised as a decimal string. Null if not set.
salesStartDate string(date) · nullable Date from which the item can be sold (ISO 8601 date). Null if unrestricted.
shortDescription string · nullable Short selling description, e.g. for a product card. Null if not set.
slug string · nullable URL slug for storefronts. Null when the item has none and the item number is used.
status enum Item status exposed via the Public API. Mirrors `Domain.Items.ItemStatus`. Draft PendingApproval Active PhasingOut Discontinued Archived
taxClassCode string · nullable Code of the tax class governing VAT for this item, e.g. `STANDARD`. Null if not set, in which case the tenant default applies. Look the rate up via GET /preview/reference/tax-classes — the rate depends on country and date and is therefore not a property of the item.
thumbnailUrl string · nullable URL to the item's thumbnail image. Null if no image is set.
width decimal · nullable Width in centimetres. Serialised as a decimal string. Null if not set.
400 ProblemDetails An enum filter (status, referenceType, itemType, grade) got a value outside its list, itemNumbers held more than 200 values, or the retired publishOnWeb filter was provided.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "barcode": "string",
      "baseUnitCode": "st",
      "brandCode": "STD",
      "brandName": "Fluit",
      "categoryCode": "STD",
      "categoryName": "Hand tools",
      "countryOfOrigin": "string",
      "createdDate": "2026-06-11T09:24:13.418",
      "decimalPlaces": 2,
      "depth": "299.00",
      "description": "string",
      "grade": "A",
      "height": "299.00",
      "hsCode": "STD",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "isActive": true,
      "isConfigurable": true,
      "isSellable": true,
      "isStockable": true,
      "itemNumber": "WIDGET-A",
      "itemType": "StockItem",
      "links": {
        "self": "string"
      },
      "matchedOn": "string",
      "modifiedDate": "2026-06-11T09:24:13.418",
      "name": "Widget A",
      "netWeight": "1.250",
      "parentItemNumber": "ABC-001",
      "publishOnWeb": true,
      "salesEndDate": "2026-06-11",
      "salesPrice": "299.00",
      "salesStartDate": "2026-06-11",
      "shortDescription": "string",
      "slug": "string",
      "status": "Draft",
      "taxClassCode": "STD",
      "thumbnailUrl": "https://cdn.fluit.cloud/assets/widget-a-front-thumb.jpg",
      "width": "299.00"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

POST /items

Create an item

Creates a new item for the authenticated tenant. Item number is auto-generated if not provided. The response body is the same representation as GET /preview/items/{itemNumber}; the canonical URL is returned in the Location header and in links.self.

Body krävs

Fält Typ Beskrivning
barcode string · nullable EAN / GTIN barcode or other scanning code.
costPrice decimal · nullable Purchase / cost price in the tenant default currency.
countryOfOrigin string · nullable ISO 3166-1 alpha-2 country of manufacture, e.g. `SE`, `CN`.
description string · nullable Long-form description, e.g. for a webshop product page.
hsCode string · nullable Harmonized System (HS / KN) customs tariff code.
itemNumber string · nullable Unique item number. Only uppercase letters, digits, hyphens and underscores are allowed. Auto-generated if omitted.
name Krävs string Display name / product name.
netWeight decimal · nullable Net weight in kilograms.
salesPrice decimal · nullable Default sales price in the tenant default currency.

Svar

201 PublicItemDetailResponse
  • Location — URL of the newly created resource.
Fält Typ Beskrivning
allowBackorder boolean Whether customers can back-order the item when it is out of stock.
allowPreOrder boolean Whether customers can pre-order the item before it is in stock.
attributes ItemAttribute[] · nullable Specification attributes (Material, Energy class, …) as name/value pairs. Empty if none.
barcode string · nullable EAN / GTIN barcode of the base unit. Null if not set.
baseUnitCode string · nullable Code of the item's base unit of measure, e.g. `st`, `kg`. Null if not set.
brandCode string · nullable Stable brand code, usable to correlate against your own brand register. Null if not set.
brandName string · nullable Brand name. Null if not set.
categories ItemCategoryAssignment[] · nullable Category assignments for this item, each with its code, name and whether it belongs to the primary hierarchy. Empty if uncategorised.
costPrice decimal · nullable Purchase / cost price in the tenant default currency. Serialised as a decimal string. Null if not set.
costPriceMethod enum How `costPrice` is maintained. Mirrors `Domain.Items.CostPriceMethod`. Anything other than PublicApi.Preview.Items.Queries.PublicCostPriceMethod.Manual means the ERP recalculates the cost price on stock and supplier price changes — a value written through the API will not necessarily stay put. Manual WeightedAverage LastPurchasePrice PrimarySupplier BomRollup
countryOfOrigin string · nullable ISO 3166-1 alpha-2 country of manufacture, e.g. `SE`, `CN`. Null if not set.
createdDate string(date-time) UTC timestamp when the item was created.
crossReferences ItemCrossReference[] · nullable Alternative identifiers (manufacturer part numbers, OEM numbers, extra barcodes, …). Empty if none.
decimalPlaces integer Number of decimals allowed on quantities for this item (0–6). Quantities with more decimals are rejected.
defaultReplenishmentType enum How an item is replenished. Mirrors `Domain.Items.ReplenishmentType`. Can be overridden per warehouse. Purchase Manufacture Transfer Assembly Subcontract
depth decimal · nullable Depth in centimetres. Serialised as a decimal string. Null if not set.
description string · nullable Long-form description, e.g. for a product page. Null if not set.
grade enum Item condition grade (A/B/C-stock) exposed via the Public API. Mirrors `Domain.Items.Grade`. A B C D
grossWeight decimal · nullable Gross weight in kilograms: the sum of the parcels' weights. Serialised as a decimal string. Null when the item has no parcels or any parcel lacks a weight — derived, not stored.
height decimal · nullable Height in centimetres. Serialised as a decimal string. Null if not set.
hsCode string · nullable Harmonized System (HS / KN) customs tariff code. Null if not set.
id string(uuid) Internal unique identifier (UUID v7).
isActive boolean Whether the item is active. Inactive items cannot be placed on new orders.
isConfigurable boolean Whether the item is made to order from configurable features (measurements, fabrics, add-ons). True means GET /preview/items/{itemNumber}/configuration returns a configuration schema and the item is ordered through /preview/configurations rather than as a plain order line.
isSellable boolean Whether the item can be sold. False for component-only items.
isStockable boolean Whether the item is held in inventory. False for services, charges and drop-shipped items. Derived from `itemType` — use this rather than matching on the type yourself, so a new item type does not silently change how your integration classifies the item.
itemNumber string · nullable Unique item number — business key, e.g. `WIDGET-PRO`.
itemType enum Item type exposed via the Public API. Mirrors `Domain.Items.ItemType`. StockItem NonStockItem Service Work Consumable Kit Phantom Charge VariantMaster
legacyItemNumber string · nullable Item number in the system this item was migrated from. Null if not migrated.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
modifiedDate string(date-time) · nullable UTC timestamp of the last modification. Null if never modified after creation.
name string · nullable Display name / product name.
netWeight decimal · nullable Net weight in kilograms. Serialised as a decimal string. Null if not set.
packages ItemPackage[] · nullable The parcels one base unit of the item ships in, in parcel-number order — e.g. a sofa shipped as frame and cushions. Empty when the item has no parcel data, in which case freight is estimated from `netWeight`.
parentItemNumber string · nullable Item number of the variant master this item belongs to. Null unless the item is a variant.
publishOnWeb boolean Whether the item has an active publication on at least one sales channel. Retained as a compatibility alias; new integrations should use channel publications.
salesEndDate string(date) · nullable Date until which the item can be sold (ISO 8601 date). Null if unrestricted.
salesPrice decimal · nullable Default sales price in the tenant default currency. Serialised as a decimal string. Null if not set.
salesStartDate string(date) · nullable Date from which the item can be sold (ISO 8601 date). Null if unrestricted.
shortDescription string · nullable Short selling description, e.g. for a product card. Null if not set.
slug string · nullable URL slug for storefronts. Null when the item has none and the item number is used.
status enum Item status exposed via the Public API. Mirrors `Domain.Items.ItemStatus`. Draft PendingApproval Active PhasingOut Discontinued Archived
taxClassCode string · nullable Code of the tax class governing VAT for this item, e.g. `STANDARD`. Null if not set, in which case the tenant default applies. Look the rate up via GET /preview/reference/tax-classes.
thumbnailUrl string · nullable URL to the item's thumbnail image. Null if no image is set.
units ItemUnit[] · nullable All orderable units: the base unit first (factor 1), then alternative units (box, pallet, …) with their conversion factors and barcodes.
variantAttributes ItemVariantAttribute[] · nullable The variant's own attribute values (e.g. Colour=Red, Size=M). Empty unless the item is a variant.
variantAxes ItemVariantAxis[] · nullable The axes this variant master varies on, with the values available on each (e.g. Colour = [Red, Blue], Size = [S, M, L]). Empty unless the item is a variant master. This is the master's side of the relationship — `variantAttributes` above is a single variant's values. Use GET /preview/items/{itemNumber}/variants to enumerate the variants themselves.
volume decimal · nullable Volume in <b>cubic metres</b>, computed from width × height × depth — which are in <b>centimetres</b>. Serialised as a decimal string. Null unless all three dimensions are set.
width decimal · nullable Width in centimetres. Serialised as a decimal string. Null if not set.
400 ProblemDetails A field failed validation, for example an item number containing characters outside A-Z, 0-9, hyphen and underscore.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.fluit.cloud/preview/items" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @body.json
Full item with pricing and customs
{
  "barcode": "7350100500001",
  "costPrice": "120.00",
  "countryOfOrigin": "SE",
  "description": "High-quality widget for professional use.",
  "hsCode": "84795000",
  "itemNumber": "WIDGET-PRO",
  "name": "Widget Pro 3000",
  "salesPrice": "299.00"
}
Minimal — name only
{
  "name": "Widget Pro 3000"
}
Svar 201
{
  "allowBackorder": true,
  "allowPreOrder": true,
  "attributes": [
    {
      "code": "string",
      "dataType": "Text",
      "groupCode": "STD",
      "groupName": "Retail",
      "isVisibleOnWeb": true,
      "name": "Widget A",
      "sortOrder": 42,
      "unit": "st",
      "value": "string"
    }
  ],
  "barcode": "string",
  "baseUnitCode": "st",
  "brandCode": "STD",
  "brandName": "Fluit",
  "categories": [
    {
      "code": "string",
      "isPrimary": true,
      "name": "Hand tools"
    }
  ],
  "costPrice": "299.00",
  "costPriceMethod": "Manual",
  "countryOfOrigin": "string",
  "createdDate": "2026-06-11T09:24:13.418",
  "crossReferences": [
    {
      "isPrimary": true,
      "referenceNumber": "ABC-001",
      "source": "string",
      "type": "Manufacturer"
    }
  ],
  "decimalPlaces": 2,
  "defaultReplenishmentType": "Purchase",
  "depth": "299.00",
  "description": "string",
  "grade": "A",
  "grossWeight": "1.250",
  "height": "299.00",
  "hsCode": "STD",
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "isActive": true,
  "isConfigurable": true,
  "isSellable": true,
  "isStockable": true,
  "itemNumber": "WIDGET-A",
  "itemType": "StockItem",
  "legacyItemNumber": "ABC-001",
  "links": {
    "self": "string"
  },
  "modifiedDate": "2026-06-11T09:24:13.418",
  "name": "Widget A",
  "netWeight": "1.250",
  "packages": [
    {
      "barcode": "string",
      "grossWeight": "1.250",
      "height": "299.00",
      "length": "299.00",
      "name": "Widget A",
      "sequence": 42,
      "width": "299.00"
    }
  ],
  "parentItemNumber": "ABC-001",
  "publishOnWeb": true,
  "salesEndDate": "2026-06-11",
  "salesPrice": "299.00",
  "salesStartDate": "2026-06-11",
  "shortDescription": "string",
  "slug": "string",
  "status": "Draft",
  "taxClassCode": "STD",
  "thumbnailUrl": "https://cdn.fluit.cloud/assets/widget-a-front-thumb.jpg",
  "units": [
    {
      "barcode": "string",
      "conversionFactor": "299.00",
      "grossWeight": "1.250",
      "height": "299.00",
      "isPurchaseUnit": true,
      "isSalesUnit": true,
      "length": "299.00",
      "unitCode": "st",
      "width": "299.00"
    }
  ],
  "variantAttributes": [
    {
      "name": "Widget A",
      "value": "string"
    }
  ],
  "variantAxes": [
    {
      "name": "Widget A",
      "values": [
        "string"
      ]
    }
  ],
  "volume": "299.00",
  "width": "299.00"
}

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

GET /items/{itemNumber}

Get an item by item number

Returns the full details of an item by its unique item number: all orderable units with barcodes and conversion factors (base unit first), specification attributes, category assignments, cross-references (MPN/OEM/extra barcodes) and, for variants, the parent item and variant attribute values.

Visa hela beskrivningen

The list endpoint returns a leaner representation without these collections. Responses carry a weak ETag; pass it back in If-None-Match to get 304 Not Modified while the record is unchanged. The validator follows the whole record, so a change to a nested part invalidates it too.

items:read Stödjer ETag

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item to read.

Frågeparametrar

Fält Typ Beskrivning
language string ISO 639-1 language code, e.g. en. Returns name, description and short description translated to that language where a translation exists; other fields and untranslated texts come back in the base language. An unknown or inactive language is ignored.

Svar

200 PublicItemDetailResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Fält Typ Beskrivning
allowBackorder boolean Whether customers can back-order the item when it is out of stock.
allowPreOrder boolean Whether customers can pre-order the item before it is in stock.
attributes ItemAttribute[] · nullable Specification attributes (Material, Energy class, …) as name/value pairs. Empty if none.
barcode string · nullable EAN / GTIN barcode of the base unit. Null if not set.
baseUnitCode string · nullable Code of the item's base unit of measure, e.g. `st`, `kg`. Null if not set.
brandCode string · nullable Stable brand code, usable to correlate against your own brand register. Null if not set.
brandName string · nullable Brand name. Null if not set.
categories ItemCategoryAssignment[] · nullable Category assignments for this item, each with its code, name and whether it belongs to the primary hierarchy. Empty if uncategorised.
costPrice decimal · nullable Purchase / cost price in the tenant default currency. Serialised as a decimal string. Null if not set.
costPriceMethod enum How `costPrice` is maintained. Mirrors `Domain.Items.CostPriceMethod`. Anything other than PublicApi.Preview.Items.Queries.PublicCostPriceMethod.Manual means the ERP recalculates the cost price on stock and supplier price changes — a value written through the API will not necessarily stay put. Manual WeightedAverage LastPurchasePrice PrimarySupplier BomRollup
countryOfOrigin string · nullable ISO 3166-1 alpha-2 country of manufacture, e.g. `SE`, `CN`. Null if not set.
createdDate string(date-time) UTC timestamp when the item was created.
crossReferences ItemCrossReference[] · nullable Alternative identifiers (manufacturer part numbers, OEM numbers, extra barcodes, …). Empty if none.
decimalPlaces integer Number of decimals allowed on quantities for this item (0–6). Quantities with more decimals are rejected.
defaultReplenishmentType enum How an item is replenished. Mirrors `Domain.Items.ReplenishmentType`. Can be overridden per warehouse. Purchase Manufacture Transfer Assembly Subcontract
depth decimal · nullable Depth in centimetres. Serialised as a decimal string. Null if not set.
description string · nullable Long-form description, e.g. for a product page. Null if not set.
grade enum Item condition grade (A/B/C-stock) exposed via the Public API. Mirrors `Domain.Items.Grade`. A B C D
grossWeight decimal · nullable Gross weight in kilograms: the sum of the parcels' weights. Serialised as a decimal string. Null when the item has no parcels or any parcel lacks a weight — derived, not stored.
height decimal · nullable Height in centimetres. Serialised as a decimal string. Null if not set.
hsCode string · nullable Harmonized System (HS / KN) customs tariff code. Null if not set.
id string(uuid) Internal unique identifier (UUID v7).
isActive boolean Whether the item is active. Inactive items cannot be placed on new orders.
isConfigurable boolean Whether the item is made to order from configurable features (measurements, fabrics, add-ons). True means GET /preview/items/{itemNumber}/configuration returns a configuration schema and the item is ordered through /preview/configurations rather than as a plain order line.
isSellable boolean Whether the item can be sold. False for component-only items.
isStockable boolean Whether the item is held in inventory. False for services, charges and drop-shipped items. Derived from `itemType` — use this rather than matching on the type yourself, so a new item type does not silently change how your integration classifies the item.
itemNumber string · nullable Unique item number — business key, e.g. `WIDGET-PRO`.
itemType enum Item type exposed via the Public API. Mirrors `Domain.Items.ItemType`. StockItem NonStockItem Service Work Consumable Kit Phantom Charge VariantMaster
legacyItemNumber string · nullable Item number in the system this item was migrated from. Null if not migrated.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
modifiedDate string(date-time) · nullable UTC timestamp of the last modification. Null if never modified after creation.
name string · nullable Display name / product name.
netWeight decimal · nullable Net weight in kilograms. Serialised as a decimal string. Null if not set.
packages ItemPackage[] · nullable The parcels one base unit of the item ships in, in parcel-number order — e.g. a sofa shipped as frame and cushions. Empty when the item has no parcel data, in which case freight is estimated from `netWeight`.
parentItemNumber string · nullable Item number of the variant master this item belongs to. Null unless the item is a variant.
publishOnWeb boolean Whether the item has an active publication on at least one sales channel. Retained as a compatibility alias; new integrations should use channel publications.
salesEndDate string(date) · nullable Date until which the item can be sold (ISO 8601 date). Null if unrestricted.
salesPrice decimal · nullable Default sales price in the tenant default currency. Serialised as a decimal string. Null if not set.
salesStartDate string(date) · nullable Date from which the item can be sold (ISO 8601 date). Null if unrestricted.
shortDescription string · nullable Short selling description, e.g. for a product card. Null if not set.
slug string · nullable URL slug for storefronts. Null when the item has none and the item number is used.
status enum Item status exposed via the Public API. Mirrors `Domain.Items.ItemStatus`. Draft PendingApproval Active PhasingOut Discontinued Archived
taxClassCode string · nullable Code of the tax class governing VAT for this item, e.g. `STANDARD`. Null if not set, in which case the tenant default applies. Look the rate up via GET /preview/reference/tax-classes.
thumbnailUrl string · nullable URL to the item's thumbnail image. Null if no image is set.
units ItemUnit[] · nullable All orderable units: the base unit first (factor 1), then alternative units (box, pallet, …) with their conversion factors and barcodes.
variantAttributes ItemVariantAttribute[] · nullable The variant's own attribute values (e.g. Colour=Red, Size=M). Empty unless the item is a variant.
variantAxes ItemVariantAxis[] · nullable The axes this variant master varies on, with the values available on each (e.g. Colour = [Red, Blue], Size = [S, M, L]). Empty unless the item is a variant master. This is the master's side of the relationship — `variantAttributes` above is a single variant's values. Use GET /preview/items/{itemNumber}/variants to enumerate the variants themselves.
volume decimal · nullable Volume in <b>cubic metres</b>, computed from width × height × depth — which are in <b>centimetres</b>. Serialised as a decimal string. Null unless all three dimensions are set.
width decimal · nullable Width in centimetres. Serialised as a decimal string. Null if not set.
304 Tom body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}"
Svar 200
{
  "allowBackorder": true,
  "allowPreOrder": true,
  "attributes": [
    {
      "code": "string",
      "dataType": "Text",
      "groupCode": "STD",
      "groupName": "Retail",
      "isVisibleOnWeb": true,
      "name": "Widget A",
      "sortOrder": 42,
      "unit": "st",
      "value": "string"
    }
  ],
  "barcode": "string",
  "baseUnitCode": "st",
  "brandCode": "STD",
  "brandName": "Fluit",
  "categories": [
    {
      "code": "string",
      "isPrimary": true,
      "name": "Hand tools"
    }
  ],
  "costPrice": "299.00",
  "costPriceMethod": "Manual",
  "countryOfOrigin": "string",
  "createdDate": "2026-06-11T09:24:13.418",
  "crossReferences": [
    {
      "isPrimary": true,
      "referenceNumber": "ABC-001",
      "source": "string",
      "type": "Manufacturer"
    }
  ],
  "decimalPlaces": 2,
  "defaultReplenishmentType": "Purchase",
  "depth": "299.00",
  "description": "string",
  "grade": "A",
  "grossWeight": "1.250",
  "height": "299.00",
  "hsCode": "STD",
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "isActive": true,
  "isConfigurable": true,
  "isSellable": true,
  "isStockable": true,
  "itemNumber": "WIDGET-A",
  "itemType": "StockItem",
  "legacyItemNumber": "ABC-001",
  "links": {
    "self": "string"
  },
  "modifiedDate": "2026-06-11T09:24:13.418",
  "name": "Widget A",
  "netWeight": "1.250",
  "packages": [
    {
      "barcode": "string",
      "grossWeight": "1.250",
      "height": "299.00",
      "length": "299.00",
      "name": "Widget A",
      "sequence": 42,
      "width": "299.00"
    }
  ],
  "parentItemNumber": "ABC-001",
  "publishOnWeb": true,
  "salesEndDate": "2026-06-11",
  "salesPrice": "299.00",
  "salesStartDate": "2026-06-11",
  "shortDescription": "string",
  "slug": "string",
  "status": "Draft",
  "taxClassCode": "STD",
  "thumbnailUrl": "https://cdn.fluit.cloud/assets/widget-a-front-thumb.jpg",
  "units": [
    {
      "barcode": "string",
      "conversionFactor": "299.00",
      "grossWeight": "1.250",
      "height": "299.00",
      "isPurchaseUnit": true,
      "isSalesUnit": true,
      "length": "299.00",
      "unitCode": "st",
      "width": "299.00"
    }
  ],
  "variantAttributes": [
    {
      "name": "Widget A",
      "value": "string"
    }
  ],
  "variantAxes": [
    {
      "name": "Widget A",
      "values": [
        "string"
      ]
    }
  ],
  "volume": "299.00",
  "width": "299.00"
}

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

PATCH /items/{itemNumber}

Update an item

Partially updates an item. Only provided fields are updated (JSON Merge Patch semantics). Omitted fields are left unchanged. Pass null to clear a nullable field.

Visa hela beskrivningen

Unknown fields are rejected with 400, naming the field and listing the ones this endpoint accepts. itemNumber cannot be changed here — it is the resource's public key and the address external systems reference.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item to update.

Body krävs

Fält Typ Beskrivning
allowBackorder boolean · nullable Whether customers can back-order the item when it is out of stock.
allowPreOrder boolean · nullable Whether customers can pre-order the item before it is in stock.
barcode string · nullable EAN / GTIN barcode or other scanning code. Pass `null` to clear.
brandCode string · nullable Code of the brand. Pass `null` to clear it. The brand must already exist — create it with POST /preview/brands.
categoryCode string · nullable Code of the item's main category — the one listed with `isPrimary: true` under the item's categories. A category counts as main when its category type is the primary one, or when it has no category type at all. Pass `null` to remove the main category. Only the main category changes: categories with `isPrimary: false` are left untouched and are managed with POST and DELETE /preview/items/{itemNumber}/categories. The category must already exist — create it with POST /preview/categories.
costPrice decimal · nullable Purchase / cost price in the tenant default currency. Pass `null` to clear.
countryOfOrigin string · nullable ISO 3166-1 alpha-2 country of manufacture, e.g. `SE`, `CN`. Pass `null` to clear.
depth decimal · nullable Depth in centimetres. Pass `null` to clear.
description string · nullable Long-form description, e.g. for a webshop product page. Pass `null` to clear.
height decimal · nullable Height in centimetres. Pass `null` to clear.
hsCode string · nullable Harmonized System (HS / KN) customs tariff code. Pass `null` to clear.
itemType enum Item type exposed via the Public API. Mirrors `Domain.Items.ItemType`. StockItem NonStockItem Service Work Consumable Kit Phantom Charge VariantMaster
name string · nullable Display name / product name.
netWeight decimal · nullable Net weight in kilograms. Pass `null` to clear.
salesEndDate string(date) · nullable Date until which the item can be sold. Pass `null` to clear.
salesPrice decimal · nullable Default sales price in the tenant default currency. Pass `null` to clear.
salesStartDate string(date) · nullable Date from which the item can be sold. Pass `null` to clear.
status enum Item status exposed via the Public API. Mirrors `Domain.Items.ItemStatus`. Draft PendingApproval Active PhasingOut Discontinued Archived
unitCode string · nullable Code of the base unit of measure, for example `ST`.
width decimal · nullable Width in centimetres. Pass `null` to clear.

Svar

204 Tom body.
400 ProblemDetails The body is not a JSON object, contains a field this endpoint does not have, or a field present in it failed validation.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

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

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

GET /items/{itemNumber}/assets

List item assets

Returns a paginated list of the item's public images and documents, primary image first and then by sort order. Only assets marked as public are included. url points either to an external location or to GET /preview/items/{itemNumber}/assets/{assetId}/download (same API key required).

Visa hela beskrivningen

Use languageCode to pick language-specific assets where present.

items:read Paginerad

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item whose assets to list.

Frågeparametrar

Fält Typ Beskrivning
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Svar

200 PagedResult_PublicItemAssetResponse

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

Fält Typ Beskrivning
altText string · nullable Alt text for images (SEO/accessibility). Null if not set.
assetType enum Type of an item asset. Mirrors `Domain.Items.AssetType`. Image Document
category string · nullable Asset category. For an image its role: `MainImage`, `GalleryImage`, `LifestyleImage`, `TechnicalImage` or `VariantImage`. For a document the code of a document category the tenant defines, e.g. `Datasheet`, `Manual` or a tenant's own `Archive`.
contentType string · nullable MIME content type, e.g. `image/jpeg`, `application/pdf`.
description string · nullable Free-text description. Null if not set.
displayName string · nullable Display name for UI listings. Null if not set.
fileName string · nullable Original file name, e.g. `widget-pro-front.jpg`.
fileSize integer File size in bytes.
height integer · nullable Image height in pixels. Null for non-images or if unknown.
id string(uuid) Internal unique identifier of the asset.
isPrimary boolean Whether this is the item's primary image (used as thumbnail in item responses).
languageCode string · nullable ISO 639-1 language code if the asset is language-specific, e.g. `sv`. Null if language-neutral.
sortOrder integer Sort order for galleries (ascending).
thumbnailUrl string · nullable URL to a thumbnail rendition. Null if no thumbnail exists.
url string · nullable URL to download the full asset. Either an external URL or a /preview download endpoint (requires the same API key).
width integer · nullable Image width in pixels. Null for non-images or if unknown.
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/assets"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "altText": "string",
      "assetType": "Image",
      "category": "string",
      "contentType": "image/jpeg",
      "description": "string",
      "displayName": "Widget A",
      "fileName": "widget-a-front.jpg",
      "fileSize": 42,
      "height": 42,
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "isPrimary": true,
      "languageCode": "STD",
      "sortOrder": 42,
      "thumbnailUrl": "https://cdn.fluit.cloud/assets/widget-a-front-thumb.jpg",
      "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
      "width": 42
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

POST /items/{itemNumber}/assets

Upload an item image or document

Uploads a product image, a datasheet (PDF) or a CAD drawing (DWG) as multipart/form-data. The field name is 'file'; everything else is a query parameter. Supported types: PNG, JPEG, GIF and WebP up to 50 MB; PDF and DWG up to 100 MB.

Visa hela beskrivningen

The file's own bytes decide what it is — a file that only claims to be an image or a PDF is rejected, and a DWG served as application/octet-stream is still recognised. The stored content type is the detected one. Uploaded files are always public: they are what the storefront and this API's list endpoint show. isPrimary=true makes an image the item's primary image, which is what the item's thumbnailUrl points at and what a storefront shows in listings; the item's previous primary image loses the flag. The response is the representation GET /preview/items/{itemNumber}/assets/{assetId} returns, and Location points at that address. This POST takes no Idempotency-Key — a multipart body cannot be hashed the way a JSON one can — so a retry after a network failure may create a second image. List the item's assets to see whether the first attempt landed before retrying, and remove a duplicate with DELETE /preview/items/{itemNumber}/assets/{assetId}. Uploads always append: a new image is sorted after the ones already on the item, so replacing a picture means uploading the new one and deleting the old. Known error codes: ItemAssets.EmptyFile, ItemAssets.FileTooLarge, ItemAssets.UnsupportedType, ItemAssets.NotAnImage, ItemAssets.ContentMismatch, Item.NotFound. **Not idempotent.** A file upload carries no Idempotency-Key: the body cannot be buffered and hashed the way a JSON request can. Retrying after a network failure may therefore create a second copy — list the folder and compare before retrying, or delete the duplicate afterwards.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item to attach the file to.

Frågeparametrar

Fält Typ Beskrivning
category string Category. An image takes an image category (MainImage, GalleryImage, LifestyleImage, TechnicalImage, VariantImage) and defaults to MainImage when isPrimary is true, otherwise GalleryImage. A document takes the code of one of the tenant's active document categories and defaults to CadDrawing for a DWG and Datasheet for a PDF, or the tenant's default category when it has neither.
isPrimary boolean Whether this becomes the item's primary image. Defaults to false. Images only.
displayName string Display name in listings. Defaults to the file name.
altText string Alt text for accessibility and SEO. Strongly recommended.
description string Free-text description.
languageCode string ISO 639-1 code when the image is language-specific, e.g. sv. Omit for a language-neutral image.

Body

Fält Typ
file Krävs string(binary)

Svar

201 PublicItemAssetResponse
  • Location — URL of the newly created resource.
Fält Typ Beskrivning
altText string · nullable Alt text for images (SEO/accessibility). Null if not set.
assetType enum Type of an item asset. Mirrors `Domain.Items.AssetType`. Image Document
category string · nullable Asset category. For an image its role: `MainImage`, `GalleryImage`, `LifestyleImage`, `TechnicalImage` or `VariantImage`. For a document the code of a document category the tenant defines, e.g. `Datasheet`, `Manual` or a tenant's own `Archive`.
contentType string · nullable MIME content type, e.g. `image/jpeg`, `application/pdf`.
description string · nullable Free-text description. Null if not set.
displayName string · nullable Display name for UI listings. Null if not set.
fileName string · nullable Original file name, e.g. `widget-pro-front.jpg`.
fileSize integer File size in bytes.
height integer · nullable Image height in pixels. Null for non-images or if unknown.
id string(uuid) Internal unique identifier of the asset.
isPrimary boolean Whether this is the item's primary image (used as thumbnail in item responses).
languageCode string · nullable ISO 639-1 language code if the asset is language-specific, e.g. `sv`. Null if language-neutral.
sortOrder integer Sort order for galleries (ascending).
thumbnailUrl string · nullable URL to a thumbnail rendition. Null if no thumbnail exists.
url string · nullable URL to download the full asset. Either an external URL or a /preview download endpoint (requires the same API key).
width integer · nullable Image width in pixels. Null for non-images or if unknown.
400 ProblemDetails The file is empty, larger than its type allows, not one of the supported types, does not match its declared type, has no file name, category does not fit the file (an image category on a document or the other way round), isPrimary is set on a document, or displayName, altText, description or languageCode is longer than allowed.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
413 ProblemDetails The request body is larger than 100 MB plus multipart overhead.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.fluit.cloud/preview/items/{itemNumber}/assets" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 201
{
  "altText": "string",
  "assetType": "Image",
  "category": "string",
  "contentType": "image/jpeg",
  "description": "string",
  "displayName": "Widget A",
  "fileName": "widget-a-front.jpg",
  "fileSize": 42,
  "height": 42,
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "isPrimary": true,
  "languageCode": "STD",
  "sortOrder": 42,
  "thumbnailUrl": "https://cdn.fluit.cloud/assets/widget-a-front-thumb.jpg",
  "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "width": 42
}

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

GET /items/{itemNumber}/assets/{assetId}

Read one item asset

Returns the record for one image or document on the item: its url plus the metadata the listing carries. This endpoint returns JSON, not the file itself — the bytes are fetched from GET /preview/items/{itemNumber}/assets/{assetId}/download, which needs the same API key.

Visa hela beskrivningen

This is the address the upload's Location header points at. Responses carry a weak ETag; pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.

items:read Stödjer ETag

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item the asset belongs to.
assetId Krävs string(uuid) The asset's id, as returned by the upload and by the listing.

Svar

200 PublicItemAssetResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Fält Typ Beskrivning
altText string · nullable Alt text for images (SEO/accessibility). Null if not set.
assetType enum Type of an item asset. Mirrors `Domain.Items.AssetType`. Image Document
category string · nullable Asset category. For an image its role: `MainImage`, `GalleryImage`, `LifestyleImage`, `TechnicalImage` or `VariantImage`. For a document the code of a document category the tenant defines, e.g. `Datasheet`, `Manual` or a tenant's own `Archive`.
contentType string · nullable MIME content type, e.g. `image/jpeg`, `application/pdf`.
description string · nullable Free-text description. Null if not set.
displayName string · nullable Display name for UI listings. Null if not set.
fileName string · nullable Original file name, e.g. `widget-pro-front.jpg`.
fileSize integer File size in bytes.
height integer · nullable Image height in pixels. Null for non-images or if unknown.
id string(uuid) Internal unique identifier of the asset.
isPrimary boolean Whether this is the item's primary image (used as thumbnail in item responses).
languageCode string · nullable ISO 639-1 language code if the asset is language-specific, e.g. `sv`. Null if language-neutral.
sortOrder integer Sort order for galleries (ascending).
thumbnailUrl string · nullable URL to a thumbnail rendition. Null if no thumbnail exists.
url string · nullable URL to download the full asset. Either an external URL or a /preview download endpoint (requires the same API key).
width integer · nullable Image width in pixels. Null for non-images or if unknown.
304 Tom body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
404 ProblemDetails No item with that item number, or no asset with that id on the item.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/assets/{assetId}"
Svar 200
{
  "altText": "string",
  "assetType": "Image",
  "category": "string",
  "contentType": "image/jpeg",
  "description": "string",
  "displayName": "Widget A",
  "fileName": "widget-a-front.jpg",
  "fileSize": 42,
  "height": 42,
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "isPrimary": true,
  "languageCode": "STD",
  "sortOrder": 42,
  "thumbnailUrl": "https://cdn.fluit.cloud/assets/widget-a-front-thumb.jpg",
  "url": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "width": 42
}

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

PATCH /items/{itemNumber}/assets/{assetId}

Update an item file's metadata

Partially updates an image's or document's metadata without uploading it again, so its url stays the same and links to it keep working. Only provided fields are updated (JSON Merge Patch semantics).

Visa hela beskrivningen

Pass null to clear displayName, altText, description or languageCode; category, sortOrder and isPrimary cannot be null. Unknown fields are rejected with 400, naming the field and listing the ones this endpoint accepts. category takes an image role for an image and a document category code for a document — the same values as the upload endpoint. isPrimary=true makes the image the item's primary image and the previous one loses the flag. The file itself cannot be replaced here: a new file is a new upload, with a new url. The same files are reachable here as through GET /preview/items/{itemNumber}/assets — public, current images, PDFs and DWGs. Anything else answers 404, the same as an id that does not exist. Known error codes: Item.NotFound, ItemAsset.NotFound, ItemAsset.CategoryDoesNotMatchType, ItemAsset.NotImage, DocumentCategory.CodeNotFound.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item the file belongs to.
assetId Krävs string(uuid) The file's id, from GET /preview/items/{itemNumber}/assets.

Body krävs

Fält Typ Beskrivning
altText string · nullable Alt text for accessibility and SEO. Pass `null` to clear.
category string · nullable For an image, its role: `MainImage`, `GalleryImage`, `LifestyleImage`, `TechnicalImage` or `VariantImage`. For a document, the code of one of the tenant's active document categories, such as `Datasheet`, `Manual` or `CadDrawing`. Cannot be null.
description string · nullable Free-text description. Pass `null` to clear.
displayName string · nullable Display name in listings. Pass `null` to fall back to the file name.
isPrimary boolean · nullable `true` makes this image the item's primary image; the previous one loses the flag. Only `true` is accepted — an item keeps a primary image until another one takes over.
languageCode string · nullable ISO 639-1 code when the file is language-specific, e.g. `sv`. Pass `null` to make it language-neutral.
sortOrder integer · nullable Position among the item's files; lower comes first. The item's primary image is always listed first regardless.

Svar

204 Tom body.
400 ProblemDetails The body is not a JSON object, contains a field this endpoint does not have, or a field present in it failed validation: category was null, did not fit the file (an image role on a document or the other way round) or is not an active document category; isPrimary was false or set on a document; sortOrder was negative; or a text field was longer than allowed.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number, or no file with that id on the item.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X PATCH "https://api.fluit.cloud/preview/items/{itemNumber}/assets/{assetId}" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 400
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

DELETE /items/{itemNumber}/assets/{assetId}

Delete an item image or document

Removes an image, datasheet (PDF) or CAD drawing (DWG) from the item. Deleting is how you replace a file: the upload endpoint always appends, so a new file lands after the one it was meant to replace.

Visa hela beskrivningen

To change a file's category, name or order without replacing it — and without changing its url — use PATCH on the same address instead. Only files this surface manages can be deleted — public, current ones of a type the upload endpoint accepts. An id that belongs to an internal document, a superseded revision, a file type that cannot be uploaded here or another item answers 404, the same as an id that does not exist: what cannot be uploaded here cannot be deleted here. Nothing checks whether anything still points at the url — a storefront or feed that cached it keeps a broken link until it refreshes. Deleting the item's primary image leaves the item without one, and nothing promotes a replacement: thumbnailUrl in GET /preview/items goes null until another image is marked primary. Upload the replacement and mark it primary before deleting if the item should never be without a picture. The deletion leaves a tombstone under GET /preview/deletions with resource 'item-assets' and the business key {itemNumber}/{assetId}, so a client syncing with ?modifiedSince= sees the file disappear. Known error codes: Item.NotFound, ItemAsset.NotFound.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item the file belongs to.
assetId Krävs string(uuid) The file's id, from GET /preview/items/{itemNumber}/assets.

Svar

204 Tom body.
404 ProblemDetails No item with that item number, or no file with that id on the item.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X DELETE "https://api.fluit.cloud/preview/items/{itemNumber}/assets/{assetId}"
Svar 404
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

GET /items/{itemNumber}/assets/{assetId}/download

Download an item asset

Streams the asset file (image or document). Externally hosted assets return a 302 redirect to the external URL. Only assets marked as public can be downloaded.

items:read

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item the asset belongs to.
assetId Krävs string(uuid) Id of the asset, as returned by the asset list endpoint.

Svar

200 Tom body.
302 Tom body.
404 ProblemDetails No public asset with that id on that item — the same answer whether the item, the asset or only its public flag is missing.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/assets/{assetId}/download"
Svar 404
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

PUT /items/{itemNumber}/attributes/{attributeCode}

Set an item attribute value

Sets one attribute value on an item, replacing any previous value. Pass value for a single-value attribute and values for one where isMultiValue is true — the list replaces the whole set, so values left out are removed.

Visa hela beskrivningen

The value is checked against the attribute's rules: data type, numeric bounds, pattern, and its list of permitted values where it has one. See GET /preview/attributes for those rules. Send an empty value to clear the attribute.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item to set the value on.
attributeCode Krävs string Attribute code, from GET /preview/attributes.

Body krävs

Fält Typ Beskrivning
isVisibleOnWeb boolean · nullable Overrides whether the attribute is shown on the web. Omit to use the attribute's default.
value string · nullable The value to set. Use this for single-value attributes.
values string[] · nullable The complete list of values, for attributes where isMultiValue is true. Values not included are removed. Max 50 values.

Svar

204 Tom body.
400 ProblemDetails The value is not valid for the attribute — wrong type, outside its bounds, not in its list of permitted values, or not matching its pattern. Several values were given for an attribute that holds one.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number, or no active attribute with that code.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X PUT "https://api.fluit.cloud/preview/items/{itemNumber}/attributes/{attributeCode}" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 400
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

GET /items/{itemNumber}/availability

Get item stock availability

Returns the item's stock availability summed across all active warehouses and broken down per warehouse. availableQuantity is the quantity that can be promised to new orders (on hand minus reservations).

Visa hela beskrivningen

Items never stocked in a warehouse return an empty warehouses list with zero totals. The warehouse breakdown is bounded by the tenant's warehouse count and is not paginated. Responses carry a weak ETag; pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.

items:read Stödjer ETag

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item to read availability for.

Svar

200 PublicItemAvailabilityResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Fält Typ Beskrivning
itemNumber string · nullable Item number of the item.
totalAllocatedQuantity decimal Total quantity reserved for orders across all warehouses. Serialised as a decimal string.
totalAvailableQuantity decimal Total quantity available for new orders (on hand − allocated). Serialised as a decimal string.
totalQuantityOnHand decimal Total physical quantity on hand across all warehouses. Serialised as a decimal string.
warehouses WarehouseAvailability[] · nullable Per-warehouse breakdown. Empty list if the item is not stocked in any warehouse.
304 Tom body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/availability"
Svar 200
{
  "itemNumber": "WIDGET-A",
  "totalAllocatedQuantity": "10",
  "totalAvailableQuantity": "10",
  "totalQuantityOnHand": "10",
  "warehouses": [
    {
      "allocatedQuantity": "10",
      "availableQuantity": "10",
      "quantityOnHand": "10",
      "replenishmentType": "Purchase",
      "requiresBatch": true,
      "requiresSerial": true,
      "trackingType": "None",
      "warehouseCode": "MAIN",
      "warehouseName": "Main warehouse"
    }
  ]
}

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

POST /items/{itemNumber}/categories

Add a category to an item

Files the item under one more category, keeping the categories it already has. The item's categories are listed under categories in GET /preview/items/{itemNumber}. Adding a category the item already has changes nothing and still returns 204, so a sync can re-run without special-casing.

Visa hela beskrivningen

To move the item to another main category, use categoryCode on PATCH /preview/items/{itemNumber}: it replaces the main category and leaves every other category untouched. A category counts as main — isPrimary: true on the item — when its category type is the primary one or when it has no category type, so a category created without a type is a main category too. A category type that allows one category per item — the primary one does — rejects a second one here with ItemCategoryAssignments.SingleAssignmentViolation. Known error codes: categoryCode, ItemCategoryAssignments.DirectAssignmentNotAllowed, ItemCategoryAssignments.SingleAssignmentViolation, Item.NotFound.

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item to categorise.

Body krävs

Fält Typ Beskrivning
categoryCode Krävs string Code of the category to add, from GET /preview/categories. The category must be active.
sortOrder integer · nullable Position among the item's categories. Defaults to after the item's last category.

Svar

204 Tom body.
400 ProblemDetails categoryCode is missing or is not an active category, the category does not take items directly (pick one of its subcategories), or its category type allows one category per item and the item already has one of that type.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.fluit.cloud/preview/items/{itemNumber}/categories" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @body.json
Add a category at a given position
{
  "categoryCode": "WEB-SPEAKERS",
  "sortOrder": 2
}
Add a category
{
  "categoryCode": "WEB-SPEAKERS"
}
Svar 400
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

DELETE /items/{itemNumber}/categories/{categoryCode}

Remove a category from an item

Takes the item out of one category and leaves its other categories as they are. Removing a category the item is not in is not an error — the end state is the same either way, so a retried call cannot fail on the second attempt.

Visa hela beskrivningen

The 404 is about the item or a category code that does not exist at all, not about the link between them. Removing the item's main category leaves it without one, exactly like PATCH /preview/items/{itemNumber} with categoryCode set to null. Known error codes: Item.NotFound, Category.NotFound.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item to take out of the category.
categoryCode Krävs string Code of the category to remove, as listed under categories on the item.

Svar

204 Tom body.
404 ProblemDetails No item with that item number, or no category with that code.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X DELETE "https://api.fluit.cloud/preview/items/{itemNumber}/categories/{categoryCode}"
Svar 404
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

PUT /items/{itemNumber}/features/{code}

Set a selectable configuration choice on an item

Creates or replaces a Selection feature — a choice the buyer makes when ordering the item, such as the seat or back of a chair. The request carries the complete list of options: options are matched on `code`, so an unchanged option keeps its identity, new ones are added and options left out are removed.

Visa hela beskrivningen

Sending the same request twice gives the same result, which makes the call safe in a migration that is re-run. An option's `itemNumber` names the item it stands for; that item must exist and is pulled into the bill of materials when the option is chosen. `priceFormula` decides what the choice adds to the price. To charge for the item behind the chosen option — a chair sold as a frame, priced with its seat — send `SEAT_PRIS` for the feature `SEAT`. Every linked item then needs a sales price, or the configuration cannot be priced. Other feature types (measurements, formulas) are set up in the app.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item the choice is made on.
code Krävs string Feature code, unique per item, e.g. SEAT.

Body krävs

Fält Typ Beskrivning
isRequired boolean Whether a choice must be made when the item is ordered.
name Krävs string Name of the choice, e.g. "Seat".
options Krävs PutItemFeatureOption[] The complete list of options. Options left out are removed.
priceFormula string · nullable What the choice adds to the unit price. `SEAT_PRIS` adds the sales price of the item behind the chosen option (the feature code followed by `_PRIS`); `SEAT_KOST` is its cost price. Numbers, other feature codes, + - * / ( ) and ROUND, CEILING, FLOOR, ABS, MIN, MAX are allowed. Omit when the choice does not change the price — like the rest of the request, leaving it out removes a formula set earlier.
sortOrder integer · nullable Position among the item's features. Defaults to last on creation.

Svar

200 PutItemFeatureResponse
Fält Typ Beskrivning
changed boolean True when the call changed anything. A re-run that sends the same request gets false.
created boolean True when the feature did not exist before this call.
featureId string(uuid)
400 ProblemDetails No options, more than one default, two options with the same code, an option naming an item that does not exist, a price formula that cannot be parsed, or an existing feature with this code that is not a selection.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X PUT "https://api.fluit.cloud/preview/items/{itemNumber}/features/{code}" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 200
{
  "changed": true,
  "created": true,
  "featureId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44"
}

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

GET /items/{itemNumber}/price

Calculate item price

Calculates the price for an item via the price engine — the same price an order line would get. quantityBreaks lists the volume price tiers of the applied price list. Responses carry a weak ETag; pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.

items:read Stödjer ETag

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item to price.

Frågeparametrar

Fält Typ Beskrivning
customerNumber string Prices for this customer, applying their price lists, agreements and campaigns. Omit for the default price.
currencyCode string ISO 4217 currency to price in. Defaults to the customer's currency, then the tenant base currency.
quantity decimal Quantity to price, which is what activates volume pricing. Must be greater than zero. Default 1.

Svar

200 PublicItemPriceResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Fält Typ Beskrivning
currencyCode string · nullable ISO 4217 currency code of the price.
customerNumber string · nullable Customer number the price was calculated for. Null for the default price.
found boolean Whether a price was found. If false, unitPrice is 0 and the item has no configured price.
itemName string · nullable Display name of the item.
itemNumber string · nullable Item number of the priced item.
priceListName string · nullable Name of the price list used. Null if no price list applied.
priceSource string · nullable Where the price came from, e.g. `Customer`, `Campaign`, `Standard`.
quantity decimal Quantity the price was calculated for. Serialised as a decimal string.
quantityBreaks QuantityBreak[] · nullable Volume price breaks from the applied price list. Empty if none.
unit string · nullable Unit of measure code the price applies to, e.g. `st`.
unitPrice decimal Calculated net unit price. Serialised as a decimal string.
304 Tom body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
400 ProblemDetails The quantity is zero or less, or no customer has that customer number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/price"
Svar 200
{
  "currencyCode": "SEK",
  "customerNumber": "CUST-001",
  "found": true,
  "itemName": "Widget A",
  "itemNumber": "WIDGET-A",
  "priceListName": "Retail 2026",
  "priceSource": "string",
  "quantity": "10",
  "quantityBreaks": [
    {
      "discountPercent": "12.50",
      "minQuantity": "10",
      "unitPrice": "299.00"
    }
  ],
  "unit": "st",
  "unitPrice": "299.00"
}

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

GET /items/{itemNumber}/relations

List item relations

Returns the item's relations to other items — accessories, spare parts, related products, cross- and up-sells, replacements and graded alternatives.

Visa hela beskrivningen

Besides the relations set up on this item (direction Outgoing), the list includes relations set up on another item and marked bidirectional (direction Incoming), since those are shown on this item's product page too. Sorted with outgoing relations first, then by relation type, sort order and item number. Add relations with POST /preview/item-relations/batch.

items:read Paginerad

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item whose relations to list.

Frågeparametrar

Fält Typ Beskrivning
relationType enum Only relations of this type. Related Accessory CrossSell UpSell SparePart GradedAlternative Replacement
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Svar

200 PagedResult_PublicItemRelationResponse

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

Fält Typ Beskrivning
direction enum Which item a relation was set up on. Outgoing Incoming
isBidirectional boolean Whether the relation is also shown from the related item's side.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
relatedItemName string · nullable Name of the item at the other end of the relation.
relatedItemNumber string · nullable Item number of the item at the other end of the relation.
relationType enum Relation between two items. Mirrors `Domain.Items.ItemRelationType`. Related Accessory CrossSell UpSell SparePart GradedAlternative Replacement
sortOrder integer Position among the source item's relations of the same type (ascending).
400 ProblemDetails relationType is not one of the relation types.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/relations"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "direction": "Outgoing",
      "isBidirectional": true,
      "links": {
        "self": "string"
      },
      "relatedItemName": "Widget A",
      "relatedItemNumber": "ABC-001",
      "relationType": "Related",
      "sortOrder": 42
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

GET /items/{itemNumber}/translations

List an item's translations

Returns the item's own texts (base) and, for every active language, the translated name, description, short description and search-engine title and description. A field without a translation is null, and missing lists the fields the item has a text for but the language lacks, so an integration can see which translations remain.

Visa hela beskrivningen

Languages without any translation are included. To read an item with its texts already translated, use GET /preview/items/{itemNumber}?language={languageCode}.

items:read Stödjer ETag

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item.

Svar

200 PublicItemTranslationsResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Fält Typ Beskrivning
base ItemTexts An item's texts: the item's own, or a translation of them.
itemNumber string · nullable
languages ItemTranslation[] · nullable One entry per active language, in the order the tenant has sorted them.
304 Tom body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
404 ProblemDetails No item with that item number.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/translations"
Svar 200
{
  "base": {
    "description": "string",
    "metaDescription": "string",
    "metaTitle": "string",
    "name": "Widget A",
    "shortDescription": "string"
  },
  "itemNumber": "WIDGET-A",
  "languages": [
    {
      "languageCode": "STD",
      "languageName": "Widget A",
      "missing": [
        "string"
      ],
      "texts": {
        "description": "string",
        "metaDescription": "string",
        "metaTitle": "string",
        "name": "Widget A",
        "shortDescription": "string"
      }
    }
  ]
}

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

PUT /items/{itemNumber}/translations/{languageCode}

Set an item's translation

Replaces the item's translated texts in one language: name, description, short description and search-engine title and description. A field that is left out, null or empty is removed, and the item's own text is shown in its place — so send every field the language should keep.

Visa hela beskrivningen

The language code is case-insensitive and a region is ignored (en-GB is en). Texts set on a channel publication are not language-specific and are shown in every language ahead of these translations.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item.
languageCode Krävs string ISO 639-1 code of an active language, e.g. en. Listed by GET /preview/items/{itemNumber}/translations.

Body krävs

Fält Typ Beskrivning
description string · nullable Translated description.
metaDescription string · nullable Translated description for search engines.
metaTitle string · nullable Translated title for search engines.
name string · nullable Translated name. Omit or send null to remove the translation.
shortDescription string · nullable Translated short description.

Svar

204 Tom body.
400 ProblemDetails A text is longer than 10 000 characters.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number, or no active language with that code.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X PUT "https://api.fluit.cloud/preview/items/{itemNumber}/translations/{languageCode}" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 400
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

GET /items/{itemNumber}/variants

List an item's variants

Returns the variants belonging to a variant master, e.g. every colour and size of a T-shirt. The master itself declares which axes it varies on — read variantAxes on GET /preview/items/{itemNumber} — and each variant here reports its own values in variantAttributes.

Visa hela beskrivningen

Returns 404 only if the item number does not exist; an item that is not a variant master returns an empty page, so a catalogue sync can call this for every item without knowing in advance which ones have variants. The status filter is matched case-insensitively and an unknown value returns 400. Sorted by item number.

items:read Paginerad

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the variant master whose variants to list.

Frågeparametrar

Fält Typ Beskrivning
status enum Filters on the variant's lifecycle status. Draft PendingApproval Active PhasingOut Discontinued Archived
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Svar

200 PagedResult_PublicItemVariantResponse

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

Fält Typ Beskrivning
barcode string · nullable EAN / GTIN barcode of the variant. Null if not set.
id string(uuid) Internal unique identifier (UUID v7).
isActive boolean Whether the variant is active. Inactive variants cannot be placed on new orders.
isSellable boolean Whether the variant can be sold.
itemNumber string · nullable Unique item number of the variant — use this on order lines.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
name string · nullable Display name of the variant.
salesPrice decimal · nullable Default sales price in the tenant default currency. Serialised as a decimal string. Null if not set.
status enum Item status exposed via the Public API. Mirrors `Domain.Items.ItemStatus`. Draft PendingApproval Active PhasingOut Discontinued Archived
thumbnailUrl string · nullable URL to the variant's thumbnail image. Null if no public image is set.
variantAttributes ItemVariantAttribute[] · nullable The values that distinguish this variant, e.g. Colour=Red, Size=M. One entry per axis declared by the master in `variantAxes`.
400 ProblemDetails ?status= got a value outside its list.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number. An item that exists but is not a variant master returns an empty page instead.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/variants"
Svar 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "barcode": "string",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "isActive": true,
      "isSellable": true,
      "itemNumber": "WIDGET-A",
      "links": {
        "self": "string"
      },
      "name": "Widget A",
      "salesPrice": "299.00",
      "status": "Draft",
      "thumbnailUrl": "https://cdn.fluit.cloud/assets/widget-a-front-thumb.jpg",
      "variantAttributes": [
        {
          "name": "Widget A",
          "value": "string"
        }
      ]
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

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

GET /items/{itemNumber}/warehouses/{warehouseCode}

Get an item's warehouse settings

Returns the reorder point, stock levels, safety stock, lead time, lot sizing, supply policy and replenishment settings for one item in one warehouse. Stock on hand is read from GET /preview/items/{itemNumber}/availability.

Visa hela beskrivningen

Responses carry a weak ETag; pass it back in If-None-Match to get 304 Not Modified while the record is unchanged. **How MRP reads these settings.** `minQuantity` is the reorder point. When projected stock falls below max(safety stock, minQuantity), MRP proposes replenishment according to `lotSizing`: `LotForLot` fills to the safety stock and ignores the reorder point, `FixedReorderQuantity` orders `reorderQuantity` (required, > 0) in whole multiples, `FillToMax` orders up to `maxQuantity` (required). The safety stock is `safetyStock`, else `calculatedSafetyStock`, else zero. A purchase quantity is then rounded up to the supplier's `minOrderQuantity` and `orderMultiple`. **Which lead time MRP uses for a purchased item**, first one set wins: (1) the lead time on an active purchase agreement line, (2) `leadTimeDays` on the supplier item of the supplier MRP picks (agreement supplier, else the primary supplier) — see GET/PATCH /preview/suppliers/{supplierNumber}/items, (3) `leadTimeDays` on this item-warehouse row, (4) 14 days, with a warning in the MRP run. A manufactured item uses (3) then (4). A transferred item uses `transferLeadTimeDays`, else the warehouse's transport time.

items:read Stödjer ETag

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item.
warehouseCode Krävs string Code of the warehouse.

Svar

200 PublicItemWarehouseResponse
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
Fält Typ Beskrivning
calculatedSafetyStock decimal · nullable Read only. The safety stock Fluit last calculated from demand history, importance and service level. Used by MRP when `safetyStock` is null. Serialised as a decimal string.
importance enum Stocking importance, which drives safety stock calculation. Mirrors `Domain.Items.ItemImportance`. Critical Standard Accessory SpecialOrder
isActive boolean Whether the item is active in this warehouse.
itemName string · nullable Display name of the item.
itemNumber string · nullable Item number — together with `warehouseCode` the address of this row.
leadTimeDays integer · nullable Lead time in calendar days for this item in this warehouse. For a purchased item, the supplier's lead time wins when one is set — see the endpoint description for the order. Null if not set.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
lotSizing enum How much MRP proposes when a make-to-stock item needs replenishing in a warehouse. Mirrors `Domain.Items.LotSizingPolicy`. The policy reads the levels on the same item-warehouse row: `minQuantity` (the reorder point), `reorderQuantity` and `maxQuantity`. A purchase quantity is then rounded up to the supplier's `minOrderQuantity` and `orderMultiple`. LotForLot FixedReorderQuantity FillToMax
maxQuantity decimal · nullable Maximum stock level. The target for `FillToMax`. Null if not set. Serialised as a decimal string.
minQuantity decimal · nullable Reorder point. When projected stock falls below max(safetyStock, minQuantity), MRP proposes replenishment according to `lotSizing`. Null if not set. Serialised as a decimal string.
reorderQuantity decimal · nullable Reorder quantity. The quantity ordered with `FixedReorderQuantity`. Null if not set. Serialised as a decimal string.
replenishmentType enum How an item is replenished. Mirrors `Domain.Items.ReplenishmentType`. Can be overridden per warehouse. Purchase Manufacture Transfer Assembly Subcontract
safetyStock decimal · nullable Safety stock set by hand. Null means MRP uses `calculatedSafetyStock`, or zero when that is null too. Serialised as a decimal string.
serviceLevelOverride decimal · nullable Service level between 0 and 1 (e.g. "0.95") that overrides the one implied by `importance`. Null if not overridden. Serialised as a decimal string.
supplyPolicy enum Whether an item is supplied to stock or to order. Mirrors `Domain.Items.SupplyPolicy`. ToStock ToOrder
transferFromWarehouseCode string · nullable Warehouse the item is transferred from when `replenishmentType` is `Transfer`. Null means the warehouse's own transfer source applies.
transferLeadTimeDays integer · nullable Transport time in days from the source warehouse. Null means the warehouse's own transport time applies, when the source is the warehouse's.
warehouseCode string · nullable Warehouse code — together with `itemNumber` the address of this row.
warehouseName string · nullable Display name of the warehouse.
304 Tom body.
  • ETag — Weak validator for this representation. Pass it back in If-None-Match to get 304 Not Modified while the record is unchanged.
404 ProblemDetails No item with that item number, no warehouse with that code, or the item is not set up in that warehouse. The three are separate errors and the problem detail says which.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl "https://api.fluit.cloud/preview/items/{itemNumber}/warehouses/{warehouseCode}"
Svar 200
{
  "calculatedSafetyStock": "299.00",
  "importance": "Critical",
  "isActive": true,
  "itemName": "Widget A",
  "itemNumber": "WIDGET-A",
  "leadTimeDays": 42,
  "links": {
    "self": "string"
  },
  "lotSizing": "LotForLot",
  "maxQuantity": "10",
  "minQuantity": "10",
  "reorderQuantity": "10",
  "replenishmentType": "Purchase",
  "safetyStock": "299.00",
  "serviceLevelOverride": "299.00",
  "supplyPolicy": "ToStock",
  "transferFromWarehouseCode": "MAIN",
  "transferLeadTimeDays": 42,
  "warehouseCode": "MAIN",
  "warehouseName": "Main warehouse"
}

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

PATCH /items/{itemNumber}/warehouses/{warehouseCode}

Update an item's warehouse settings

Only provided fields are updated (JSON Merge Patch semantics). Omitted fields are left unchanged. Pass null to clear a nullable field. isActive, lotSizing, replenishmentType and importance cannot be null.

Visa hela beskrivningen

Unknown fields are rejected with 400, naming the field and listing the ones this endpoint accepts. Rules are checked against the resulting combination, not field by field, so raising minQuantity and maxQuantity together in one call (10/20 → 30/40) is accepted. Decimals are sent as strings ("12.5"); numbers are accepted too. Enums are sent by name. Quantities are 0 to 99999999999999.9999 and lead times 0 to 365 days. **How MRP reads these settings.** `minQuantity` is the reorder point. When projected stock falls below max(safety stock, minQuantity), MRP proposes replenishment according to `lotSizing`: `LotForLot` fills to the safety stock and ignores the reorder point, `FixedReorderQuantity` orders `reorderQuantity` (required, > 0) in whole multiples, `FillToMax` orders up to `maxQuantity` (required). The safety stock is `safetyStock`, else `calculatedSafetyStock`, else zero. A purchase quantity is then rounded up to the supplier's `minOrderQuantity` and `orderMultiple`. **Which lead time MRP uses for a purchased item**, first one set wins: (1) the lead time on an active purchase agreement line, (2) `leadTimeDays` on the supplier item of the supplier MRP picks (agreement supplier, else the primary supplier) — see GET/PATCH /preview/suppliers/{supplierNumber}/items, (3) `leadTimeDays` on this item-warehouse row, (4) 14 days, with a warning in the MRP run. A manufactured item uses (3) then (4). A transferred item uses `transferLeadTimeDays`, else the warehouse's transport time.

items:write

Sökvägsparametrar

Fält Typ Beskrivning
itemNumber Krävs string Item number of the item.
warehouseCode Krävs string Code of the warehouse.

Body krävs

Fält Typ Beskrivning
importance enum Stocking importance, which drives safety stock calculation. Mirrors `Domain.Items.ItemImportance`. Critical Standard Accessory SpecialOrder
isActive boolean · nullable Whether the item is active in this warehouse. Cannot be null.
leadTimeDays integer · nullable Lead time in calendar days in this warehouse. Pass `null` to clear.
lotSizing enum How much MRP proposes when a make-to-stock item needs replenishing in a warehouse. Mirrors `Domain.Items.LotSizingPolicy`. The policy reads the levels on the same item-warehouse row: `minQuantity` (the reorder point), `reorderQuantity` and `maxQuantity`. A purchase quantity is then rounded up to the supplier's `minOrderQuantity` and `orderMultiple`. LotForLot FixedReorderQuantity FillToMax
maxQuantity decimal · nullable Maximum stock level. Required by `FillToMax`. Pass `null` to clear.
minQuantity decimal · nullable Reorder point. Must not exceed maxQuantity. Pass `null` to clear.
reorderQuantity decimal · nullable Quantity ordered by `FixedReorderQuantity`. Pass `null` to clear.
replenishmentType enum How an item is replenished. Mirrors `Domain.Items.ReplenishmentType`. Can be overridden per warehouse. Purchase Manufacture Transfer Assembly Subcontract
safetyStock decimal · nullable Safety stock. Pass `null` to let MRP use the calculated safety stock.
serviceLevelOverride decimal · nullable Service level between 0 and 1, e.g. `"0.95"`. Pass `null` to use the one implied by importance.
supplyPolicy enum Whether an item is supplied to stock or to order. Mirrors `Domain.Items.SupplyPolicy`. ToStock ToOrder
transferFromWarehouseCode string · nullable Source warehouse for `Transfer`. Pass `null` to use the warehouse's own source.
transferLeadTimeDays integer · nullable Transport time in days from the source warehouse. Pass `null` to use the warehouse's own.

Svar

204 Tom body.
400 ProblemDetails The body is not a JSON object, contains a field this endpoint does not have, a field failed validation, transferFromWarehouseCode names a warehouse that does not exist, one of isActive, lotSizing, replenishmentType and importance was sent as null, or the resulting combination breaks a rule: ItemWarehouses.MinQuantityExceedsMaxQuantity, ItemWarehouses.InvalidQuantityValue, ItemWarehouses.LotSizingRequiresReorderQuantity, ItemWarehouses.LotSizingRequiresMaxQuantity, ItemWarehouses.InvalidServiceLevel, or a transfer source that is this warehouse, is unusable or closes a cycle (Warehouses.TransferSource*, Warehouses.TransferChainTooLong).
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No item with that item number, no warehouse with that code, or the item is not set up in that warehouse.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
409 ProblemDetails The row was changed by someone else, typically a stock movement, while it was being written. Send the request again.
Fält Typ
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standardfel: 401 403 Felhantering

Exempel

curl
curl -X PATCH "https://api.fluit.cloud/preview/items/{itemNumber}/warehouses/{warehouseCode}" \
  -H "Content-Type: application/json" \
  -d @body.json
Svar 400
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

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

POST /items/batch

Create or update many items in one call

Loads up to 200 items per call. `itemNumber` is required on every row — unlike POST /preview/items, this endpoint never generates one. The HTTP status describes the request, not the rows: a well-formed batch always answers 200, and every row carries its own `outcome` (`created`, `updated` or `failed`) plus an `error` when it failed.

Visa hela beskrivningen

A single bad row therefore never blocks the rest of the batch — re-send only the failed rows. 4xx is reserved for the batch itself: more than 200 rows, a missing scope, malformed JSON. `categoryCode`, `brandCode` and `unitCode` place the item in the catalogue. They are looked up once per batch and must already exist — the batch never creates a category, brand or unit, since a typo would otherwise silently become a new one. A row naming an unknown code fails on its own (`Items.Bulk.UnknownCategoryCode`, `Items.Bulk.UnknownBrandCode`, `Items.Bulk.UnknownUnitCode`) and leaves the rest of the batch alone. Load the catalogue first with POST /preview/categories and POST /preview/brands; GET /preview/reference/units lists the unit codes. **Variants.** A `VariantMaster` row names its axes in `variantAxes`; a variant row names its master in `parentItemNumber` and its place in the matrix in `variantValues`. Put masters before their variants — rows run in order, so a master created earlier in the same batch is found. Each row is one transaction: a variant that cannot be placed (`Variant.IncompleteCombination`, `Variant.DuplicateVariant`, a master that is not a `VariantMaster`) is not created at all. Variant attributes are looked up by name and must exist (`Items.Bulk.UnknownVariantAttribute`); their values are created as needed. `mode` is `upsert` (default), `create` or `update`. An `Idempotency-Key` is required like on every POST under /preview; deriving it from the run and the batch index (for example `sha256(runId + ':' + batchIndex)`) makes an interrupted load safe to resume without duplicates.

Body krävs

Fält Typ Beskrivning
items Krävs BatchUpsertItemsItemRow[] The rows to load. At most 200 per call.
mode enum `upsert` (default) creates missing items and updates existing ones, `create` fails a row whose item number already exists, `update` fails a row whose item number does not exist. Upsert Create Update

Svar

200 BatchUpsertItemsResponse
Fält Typ
createdCount integer
failedCount integer
results BatchUpsertItemsRowResult[] · nullable
updatedCount integer

Standardfel: 400 401 403 Felhantering

Exempel

curl
curl -X POST "https://api.fluit.cloud/preview/items/batch" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @body.json
Rows filed under a category and a brand
{
  "items": [
    {
      "brandCode": "KORDZ",
      "categoryCode": "HDMI",
      "depth": "12.00",
      "height": "3.50",
      "itemNumber": "670-00001",
      "name": "HDMI cable 2 m",
      "salesPrice": "249.00",
      "unitCode": "ST",
      "width": "12.00"
    }
  ]
}
Two rows, upsert
{
  "items": [
    {
      "itemNumber": "670-00001",
      "name": "HDMI cable 2 m",
      "salesPrice": "249.00"
    },
    {
      "itemNumber": "670-00002",
      "name": "HDMI cable 5 m",
      "salesPrice": "319.00"
    }
  ]
}
Update prices on existing items
{
  "items": [
    {
      "itemNumber": "670-00001",
      "salesPrice": "259.00"
    },
    {
      "itemNumber": "670-00002",
      "salesPrice": "329.00"
    }
  ],
  "mode": "update"
}
A master and two variants
{
  "items": [
    {
      "itemNumber": "655-001",
      "itemType": "VariantMaster",
      "name": "Verona chair",
      "variantAxes": [
        "Material",
        "Finish"
      ]
    },
    {
      "itemNumber": "655-001-OAK",
      "name": "Verona chair, oak oiled",
      "parentItemNumber": "655-001",
      "variantValues": {
        "Finish": "Oak oiled",
        "Material": "Solid oak"
      }
    },
    {
      "itemNumber": "655-001-ASH",
      "name": "Verona chair, ash blond",
      "parentItemNumber": "655-001",
      "status": "PhasingOut",
      "variantValues": {
        "Finish": "Ash blond",
        "Material": "Solid ash"
      }
    }
  ]
}
Svar 200
{
  "createdCount": 42,
  "failedCount": 42,
  "results": [
    {
      "error": {
        "code": "string",
        "detail": "string"
      },
      "index": 42,
      "itemNumber": "WIDGET-A",
      "outcome": "string"
    }
  ],
  "updatedCount": 42
}

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

Scheman

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

BatchItemRelationsRelationRow

BatchItemRelationsRelationRow
Fält Typ Beskrivning
isBidirectional boolean Also show the relation from the target item's side.
relationType Krävs string `Related`, `Accessory`, `CrossSell`, `UpSell`, `SparePart` or `Replacement`. Graded alternatives are not accepted in a batch.
sortOrder integer · nullable Position among the source item's relations of this type. Defaults to last.
sourceItemNumber Krävs string The item the relation is shown on.
targetItemNumber Krävs string The item it points to.

BatchItemRelationsRowError

BatchItemRelationsRowError
Fält Typ
code string · nullable
detail string · nullable

BatchItemRelationsRowResult

BatchItemRelationsRowResult
Fält Typ Beskrivning
error BatchItemRelationsRowError
index integer
outcome string · nullable `created`, `unchanged` (it already existed) or `failed`.
sourceItemNumber string · nullable
targetItemNumber string · nullable

BatchPatchItemWarehousesRow

BatchPatchItemWarehousesRow
Fält Typ Beskrivning
importance enum Stocking importance, which drives safety stock calculation. Mirrors `Domain.Items.ItemImportance`. Critical Standard Accessory SpecialOrder
isActive boolean · nullable Whether the item is active in this warehouse. Cannot be null.
itemNumber Krävs string Item number. Required — with warehouseCode it identifies the row.
leadTimeDays integer · nullable Lead time in calendar days in this warehouse. Pass `null` to clear.
lotSizing enum How much MRP proposes when a make-to-stock item needs replenishing in a warehouse. Mirrors `Domain.Items.LotSizingPolicy`. The policy reads the levels on the same item-warehouse row: `minQuantity` (the reorder point), `reorderQuantity` and `maxQuantity`. A purchase quantity is then rounded up to the supplier's `minOrderQuantity` and `orderMultiple`. LotForLot FixedReorderQuantity FillToMax
maxQuantity decimal · nullable Maximum stock level. Pass `null` to clear.
minQuantity decimal · nullable Reorder point. Pass `null` to clear.
reorderQuantity decimal · nullable Quantity ordered by `FixedReorderQuantity`. Pass `null` to clear.
replenishmentType enum How an item is replenished. Mirrors `Domain.Items.ReplenishmentType`. Can be overridden per warehouse. Purchase Manufacture Transfer Assembly Subcontract
safetyStock decimal · nullable Safety stock. Pass `null` to let MRP use the calculated safety stock.
serviceLevelOverride decimal · nullable Service level between 0 and 1. Pass `null` to clear.
supplyPolicy enum Whether an item is supplied to stock or to order. Mirrors `Domain.Items.SupplyPolicy`. ToStock ToOrder
transferFromWarehouseCode string · nullable Source warehouse for `Transfer`. Pass `null` to clear.
transferLeadTimeDays integer · nullable Transport time in days from the source warehouse. Pass `null` to clear.
warehouseCode Krävs string Warehouse code. Required — with itemNumber it identifies the row.

BatchPatchItemWarehousesRowError

BatchPatchItemWarehousesRowError
Fält Typ
code string · nullable
detail string · nullable

BatchPatchItemWarehousesRowResult

BatchPatchItemWarehousesRowResult
Fält Typ Beskrivning
error BatchPatchItemWarehousesRowError
index integer Zero-based position of the row in the request.
itemNumber string · nullable The row's item number, as sent.
outcome string · nullable `updated` or `failed`.
warehouseCode string · nullable The row's warehouse code, as sent.

BatchUpsertItemsItemRow

BatchUpsertItemsItemRow
Fält Typ Beskrivning
barcode string · nullable EAN / GTIN barcode.
brandCode string · nullable Code of the brand. The brand must already exist — create it with POST /preview/brands first.
categoryCode string · nullable Code of the item category to file the item under. The category must already exist — create it with POST /preview/categories first.
costPrice decimal · nullable Purchase / cost price in the tenant default currency.
countryOfOrigin string · nullable ISO 3166-1 alpha-2 country of manufacture.
depth decimal · nullable Depth in centimetres.
description string · nullable Long-form description.
height decimal · nullable Height in centimetres.
hsCode string · nullable Harmonized System (HS / KN) customs tariff code.
itemNumber Krävs string Business key. Required — it identifies the row in the response.
itemType enum Item type exposed via the Public API. Mirrors `Domain.Items.ItemType`. StockItem NonStockItem Service Work Consumable Kit Phantom Charge VariantMaster
name string · nullable Item name. Required when the item does not exist yet.
netWeight decimal · nullable Net weight in kilograms.
packages BatchUpsertItemsPackageRow[] · nullable The parcels one base unit ships in, in parcel-number order — e.g. a sofa shipped as frame and cushions. Omit to leave the item's parcels alone; a list replaces them, and an empty list removes them. Each parcel's barcode must not already identify another item, unit or parcel.
parentItemNumber string · nullable On a variant: the item number of its `VariantMaster`. The master must exist — a row earlier in the same batch is enough.
salesPrice decimal · nullable Default sales price in the tenant default currency.
status enum Item status exposed via the Public API. Mirrors `Domain.Items.ItemStatus`. Draft PendingApproval Active PhasingOut Discontinued Archived
unitCode string · nullable Code of the base unit of measure, for example `ST` or `KG`.
variantAxes string[] · nullable On a `VariantMaster`: the names of the variant attributes it varies along, e.g. `["Material", "Finish"]`. The attributes must exist; an axis already on the item is left alone.
variantValues object · nullable On a variant: its value per axis, attribute name → value, e.g. `{"Material": "Solid oak", "Finish": "Oak oiled"}`. One value for every axis the master carries. A value missing under an existing attribute is created.
width decimal · nullable Width in centimetres.

BatchUpsertItemsPackageRow

BatchUpsertItemsPackageRow
Fält Typ Beskrivning
barcode string · nullable The parcel's own barcode (EAN).
grossWeight decimal · nullable Gross weight in kg, including packaging.
height decimal · nullable Height in cm.
length decimal · nullable Length in cm.
name string · nullable What the parcel holds, e.g. `Frame`.
width decimal · nullable Width in cm.

BatchUpsertItemsRowError

BatchUpsertItemsRowError
Fält Typ
code string · nullable
detail string · nullable

BatchUpsertItemsRowResult

BatchUpsertItemsRowResult
Fält Typ Beskrivning
error BatchUpsertItemsRowError
index integer
itemNumber string · nullable
outcome string · nullable `created`, `updated` or `failed`.

ItemAttribute

PublicItemAttribute

A specification attribute value on an item.

Fält Typ Beskrivning
code string · nullable Stable attribute code, e.g. `MATERIAL`.
dataType enum Data type of a product attribute value. Mirrors `Domain.Items.AttributeDataType`. Determines how `attributes[].value` is formatted in responses and parsed in requests. Text WholeNumber DecimalNumber Boolean Date Url Html Color
groupCode string · nullable Code of the attribute group it is shown under, e.g. `DIMENSIONS`. Null when ungrouped.
groupName string · nullable Display name of the attribute group. Null when ungrouped.
isVisibleOnWeb boolean Whether the value is shown on the web — the item's own setting when it has one, otherwise the attribute's default. This is the flag the storefront filters on.
name string · nullable Display name of the attribute, e.g. `Material`.
sortOrder integer The attribute's position in listings. Attributes are returned in this order.
unit string · nullable Unit of the value, e.g. `mm`, `W`. Null if not applicable.
value string · nullable The attribute value formatted as a string (numbers use invariant format, dates ISO 8601, booleans `true`/`false`).

ItemCategoryAssignment

PublicItemCategoryAssignment

A category the item is assigned to.

Fält Typ Beskrivning
code string · nullable Stable category code, e.g. `TOOLS-HAND`.
isPrimary boolean Whether the category belongs to the primary category type (the main product hierarchy).
name string · nullable Display name of the category.

ItemCrossReference

PublicItemCrossReference

An alternative identifier for the item.

Fält Typ Beskrivning
isPrimary boolean Whether this is the preferred reference of its type.
referenceNumber string · nullable The reference number/value.
source string · nullable Source of the reference, e.g. a manufacturer or system name. Null if not set.
type enum Type of an alternative item identifier. Mirrors `Domain.Items.CrossReferenceType`. Manufacturer Oem IndustryStandard Superseded Competitor Barcode Custom

ItemPackage

PublicItemPackage

A parcel (kolli) one base unit of the item ships in.

Fält Typ Beskrivning
barcode string · nullable The parcel's own barcode (EAN), scanned at receiving and picking. Null if not set.
grossWeight decimal · nullable Gross weight in kg including packaging. Serialised as a decimal string. Null if not set.
height decimal · nullable Height in cm. Serialised as a decimal string. Null if not set.
length decimal · nullable Length in cm. Serialised as a decimal string. Null if not set.
name string · nullable What the parcel holds, e.g. `Frame`. Null if not set.
sequence integer Parcel number on the item, 1..n — what reads as "parcel 1/2" on the delivery note.
width decimal · nullable Width in cm. Serialised as a decimal string. Null if not set.

ItemTexts

PublicItemTexts

An item's texts: the item's own, or a translation of them.

Fält Typ Beskrivning
description string · nullable
metaDescription string · nullable Description for search engines.
metaTitle string · nullable Title for search engines.
name string · nullable
shortDescription string · nullable

ItemTranslation

PublicItemTranslation

An item's texts in one of the tenant's active languages.

Fält Typ Beskrivning
languageCode string · nullable ISO 639-1 code in lower case, e.g. `en`. The code to use in PUT .../translations/{languageCode}.
languageName string · nullable
missing string[] · nullable Fields the item has a text for but this language lacks: `name`, `description`, `shortDescription`, `metaTitle`, `metaDescription`. Empty when the language is complete. The language the item's own texts are written in shows every field as missing, since it needs no translation.
texts ItemTexts An item's texts: the item's own, or a translation of them.

ItemUnit

PublicItemUnit

An orderable unit of measure for an item.

Fält Typ Beskrivning
barcode string · nullable EAN / GTIN barcode for this specific unit/pack. Null if not set.
conversionFactor decimal How many base units this unit represents (1 KART = 12 st ⇒ 12). Serialised as a decimal string.
grossWeight decimal · nullable Gross weight in kg of one whole unit including packaging. Serialised as a decimal string. Null if not set.
height decimal · nullable Outer height in cm of one whole unit. Serialised as a decimal string. Null if not set.
isPurchaseUnit boolean Whether the unit may be used on purchase order lines.
isSalesUnit boolean Whether the unit may be used on sales order lines.
length decimal · nullable Outer length in cm of one whole unit. Serialised as a decimal string. Null if not set.
unitCode string · nullable Unit code — usable as `unit` on order lines, e.g. `st`, `KART`.
width decimal · nullable Outer width in cm of one whole unit. Serialised as a decimal string. Null if not set.

ItemVariantAttribute

PublicItemVariantAttribute

A variant attribute value, e.g. Colour=Red.

Fält Typ Beskrivning
name string · nullable Attribute name, e.g. `Colour`, `Size`.
value string · nullable The variant's value, e.g. `Red`, `M`.

ItemVariantAxis

PublicItemVariantAxis

An axis a variant master varies on, with the values available along it.

Fält Typ Beskrivning
name string · nullable Axis name, e.g. `Colour`, `Size`.
values string[] · nullable The values defined for this axis, e.g. `Red`, `Blue`.

PutItemFeatureOption

PutItemFeatureOptionRequest
Fält Typ Beskrivning
code Krävs string Option code, unique within the feature — what conditions reference.
isDefault boolean Preselected option. At most one per feature.
itemNumber string · nullable The item the option stands for — e.g. the seat or the fabric. It is pulled into the bill of materials when the option is chosen.
name Krävs string Name shown in the configurator.
sortOrder integer · nullable Position in the configurator. Defaults to the order of the list.

QuantityBreak

PublicQuantityBreak

Volume price break — the unit price that applies from a minimum quantity.

Fält Typ Beskrivning
discountPercent decimal · nullable Discount in percent compared to the base price. Serialised as a decimal string. Null if not applicable.
minQuantity decimal Minimum quantity for this price. Serialised as a decimal string.
unitPrice decimal Unit price at this quantity. Serialised as a decimal string.

WarehouseAvailability

PublicWarehouseAvailability

Stock availability for an item in a single warehouse.

Fält Typ Beskrivning
allocatedQuantity decimal Quantity reserved for orders in this warehouse. Serialised as a decimal string.
availableQuantity decimal Quantity available for new orders (on hand − allocated). Serialised as a decimal string.
quantityOnHand decimal Physical quantity on hand in this warehouse. Serialised as a decimal string.
replenishmentType enum How an item is replenished. Mirrors `Domain.Items.ReplenishmentType`. Can be overridden per warehouse. Purchase Manufacture Transfer Assembly Subcontract
requiresBatch boolean Whether movements in this warehouse must carry batch/lot numbers (`trackingType` is `Batch` or `BatchOut`).
requiresSerial boolean Whether movements in this warehouse must carry serial numbers (`trackingType` is `Serial` or `SerialOut`). A receipt or shipment without them is rejected.
trackingType enum How an item is tracked in a warehouse. Mirrors `Domain.Items.TrackingType`. Tracking is configured <b>per warehouse</b>, so this value is only meaningful in the context of one warehouse — the same item can be serial-tracked in one warehouse and untracked in another. None Serial SerialOut Batch BatchOut
warehouseCode string · nullable Warehouse code — usable as `warehouseCode` in order creation.
warehouseName string · nullable Display name of the warehouse.