Basket
List Baskets
Lists the baskets available to the current buyer: the currently selected basket first (marked as 'active'), followed by the parked baskets, ordered by their last modification. Each entry carries the id to be used for the select endpoint, the title, the position count and - if sums may be shown - the totals. Returns at most 'limit' baskets (50 by default, 500 at most); there is no other pagination.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| limit | The maximum number of baskets to return. Defaults to 50, capped at 500. | ||
Response Body
| Field | Type | Description |
|---|---|---|
baskets
required |
List<ApiBasketOverviewResponse> |
The baskets available to the current buyer, with the currently selected basket first. |
baskets[].id
required |
String |
The database id of the basket. |
baskets[].title
required |
String |
The displayable title of the basket. |
baskets[].active
required |
boolean |
Whether this is the currently selected basket of the buyer. Baskets which are not active are considered parked. |
baskets[].positionCount
required |
long |
The number of regular positions in the basket. |
baskets[].lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
baskets[].projectName
|
String |
The name of the project assigned to the basket, if any. |
baskets[].buyerName
|
String |
The name of the buyer who created the basket. |
baskets[].netPrice
|
ApiPriceResponse |
The total net price of the basket, present only if sums may be shown for the current price mode. |
baskets[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
baskets[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
baskets[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
baskets[].grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
baskets[].grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
baskets[].grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
baskets[].grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
baskets[].hasSupervisor
required |
boolean |
Whether this basket was forwarded to a supervisor as an order request. |
baskets[].supervisorIsCurrentUser
required |
boolean |
Whether the current user is the supervisor of this basket. |
Select Basket
Selects the given basket as the active basket of the buyer and returns its state. Use the literal 'new' as id to create and select a fresh, empty basket, which effectively parks the current one. The basket becomes the current basket exactly like in the classic web frontend, so all subsequent basket and checkout API calls target it. Responds with 400 if no id is given, with 404 if the basket does not exist or is not accessible, and with 403 if the shop configuration does not permit switching baskets.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
basketId
required |
String |
The id of the basket to select as the active basket. Use the literal 'new' to create and select a fresh, empty basket, which effectively parks the current one.
Example:
new |
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the basket. |
title
required |
String |
The displayable title of the basket. |
active
required |
boolean |
Whether this is the currently selected basket of the buyer. |
recomputing
required |
boolean |
Whether the basket is currently being recomputed. Prices and totals may change once the recomputation has finished. |
lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
projectName
|
String |
The name of the project assigned to the basket, if any. |
comment
|
String |
The comment attached to the basket, if there is one. |
orderType
|
String |
The id of the order type selected for this basket, if any - the same id the checkout API reports as the selected order method.
Example:
order |
orderTypeLabel
|
String |
The localized name of the order type, for display only.
Example:
Order |
price
|
ApiPriceResponse |
The effective total price of the basket, present only if sums may be shown for the current price mode. |
price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
netPrice
|
ApiPriceResponse |
The total net price of the basket including its cost positions, present only if sums may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionsNetPrice
|
ApiPriceResponse |
The net price of the regular positions only, i.e. without the cost positions - the subtotal the web basket shows. Present under the same conditions as 'netPrice'. |
positionsNetPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positionsNetPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positionsNetPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionCount
required |
long |
The number of regular positions in the basket. |
shippingInfo
|
String |
The displayable info text about the preselected shipping method, if one is configured. |
positionCommentsAllowed
required |
boolean |
Whether comments may be attached to the positions of the basket. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The cost positions computed by the system (e.g. shipping costs or a minimum quantity surcharge). They are part of 'netPrice' but not of 'positions' - render them to show a summary which adds up. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages emitted for the basket itself. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
Delete Basket
Deletes the given basket and returns the remaining baskets, in the very same shape as the list endpoint - a client rendering the basket selection can re-render straight from the response. The currently selected basket cannot be deleted (400 with 'current_basket'): select another one first, as the web basket selection does. Responds with 400 if no id is given, with 404 if the basket does not exist or is not accessible, and with 403 if the shop configuration does not permit switching baskets.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| limit | The maximum number of baskets to return afterwards. Defaults to 50, capped at 500. | ||
Request Body
| Field | Type | Description |
|---|---|---|
basketId
required |
String |
The id of the basket to delete. Must not be the currently selected basket - select another one first if the user wants to get rid of the active basket. |
Response Body
| Field | Type | Description |
|---|---|---|
baskets
required |
List<ApiBasketOverviewResponse> |
The baskets available to the current buyer, with the currently selected basket first. |
baskets[].id
required |
String |
The database id of the basket. |
baskets[].title
required |
String |
The displayable title of the basket. |
baskets[].active
required |
boolean |
Whether this is the currently selected basket of the buyer. Baskets which are not active are considered parked. |
baskets[].positionCount
required |
long |
The number of regular positions in the basket. |
baskets[].lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
baskets[].projectName
|
String |
The name of the project assigned to the basket, if any. |
baskets[].buyerName
|
String |
The name of the buyer who created the basket. |
baskets[].netPrice
|
ApiPriceResponse |
The total net price of the basket, present only if sums may be shown for the current price mode. |
baskets[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
baskets[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
baskets[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
baskets[].grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
baskets[].grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
baskets[].grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
baskets[].grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
baskets[].hasSupervisor
required |
boolean |
Whether this basket was forwarded to a supervisor as an order request. |
baskets[].supervisorIsCurrentUser
required |
boolean |
Whether the current user is the supervisor of this basket. |
Rename Basket
Renames the given basket (the currently selected one without a 'basketId') and returns its updated state. Unlike the other endpoints, a deviating 'basketId' does not select that basket - renaming a parked basket from the basket selection leaves the selection untouched, but requires the same permissions as selecting it (403 otherwise). An empty title resets the basket to its generated default title. Responds with 400 if no title is given, if it exceeds 512 characters, or if the selected order method enforces the title ('title_not_changeable').
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
basketId
|
String |
The id of the basket to rename. Defaults to the currently selected basket. Unlike the other endpoints, a deviating id does not select that basket - renaming a parked basket leaves the selection untouched, but requires the same permissions as selecting it. |
title
required |
String |
The new title of the basket, at most 512 characters. An empty title resets the basket to its generated default title, which the response then reports. |
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the basket. |
title
required |
String |
The displayable title of the basket. |
active
required |
boolean |
Whether this is the currently selected basket of the buyer. |
recomputing
required |
boolean |
Whether the basket is currently being recomputed. Prices and totals may change once the recomputation has finished. |
lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
projectName
|
String |
The name of the project assigned to the basket, if any. |
comment
|
String |
The comment attached to the basket, if there is one. |
orderType
|
String |
The id of the order type selected for this basket, if any - the same id the checkout API reports as the selected order method.
Example:
order |
orderTypeLabel
|
String |
The localized name of the order type, for display only.
Example:
Order |
price
|
ApiPriceResponse |
The effective total price of the basket, present only if sums may be shown for the current price mode. |
price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
netPrice
|
ApiPriceResponse |
The total net price of the basket including its cost positions, present only if sums may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionsNetPrice
|
ApiPriceResponse |
The net price of the regular positions only, i.e. without the cost positions - the subtotal the web basket shows. Present under the same conditions as 'netPrice'. |
positionsNetPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positionsNetPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positionsNetPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionCount
required |
long |
The number of regular positions in the basket. |
shippingInfo
|
String |
The displayable info text about the preselected shipping method, if one is configured. |
positionCommentsAllowed
required |
boolean |
Whether comments may be attached to the positions of the basket. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The cost positions computed by the system (e.g. shipping costs or a minimum quantity surcharge). They are part of 'netPrice' but not of 'positions' - render them to show a summary which adds up. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages emitted for the basket itself. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
Basket State
Returns the full state of the basket: title, totals, positions (with prices, comments and messages) and basket level messages. Does not await a running recomputation - it reports one via 'recomputing' instead, so poll again once it has finished to receive final prices. Responds with 404 if the buyer has no basket yet.
Parameters
| Name | Description | Example | |
|---|---|---|---|
| basketId | The id of the basket to read. Defaults to the currently selected basket. A different basket is selected as the active basket first. | ||
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the basket. |
title
required |
String |
The displayable title of the basket. |
active
required |
boolean |
Whether this is the currently selected basket of the buyer. |
recomputing
required |
boolean |
Whether the basket is currently being recomputed. Prices and totals may change once the recomputation has finished. |
lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
projectName
|
String |
The name of the project assigned to the basket, if any. |
comment
|
String |
The comment attached to the basket, if there is one. |
orderType
|
String |
The id of the order type selected for this basket, if any - the same id the checkout API reports as the selected order method.
Example:
order |
orderTypeLabel
|
String |
The localized name of the order type, for display only.
Example:
Order |
price
|
ApiPriceResponse |
The effective total price of the basket, present only if sums may be shown for the current price mode. |
price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
netPrice
|
ApiPriceResponse |
The total net price of the basket including its cost positions, present only if sums may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionsNetPrice
|
ApiPriceResponse |
The net price of the regular positions only, i.e. without the cost positions - the subtotal the web basket shows. Present under the same conditions as 'netPrice'. |
positionsNetPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positionsNetPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positionsNetPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionCount
required |
long |
The number of regular positions in the basket. |
shippingInfo
|
String |
The displayable info text about the preselected shipping method, if one is configured. |
positionCommentsAllowed
required |
boolean |
Whether comments may be attached to the positions of the basket. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The cost positions computed by the system (e.g. shipping costs or a minimum quantity surcharge). They are part of 'netPrice' but not of 'positions' - render them to show a summary which adds up. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages emitted for the basket itself. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
Basket Summary
Returns the compact summary of the basket for the basket icon in the header: the effective total price, the position count and the shortened title. Deliberately fast - it does not await a running recomputation but reports one via 'recomputing', so poll again once it has finished. Responds with 404 if the buyer has no basket yet.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| basketId | The id of the basket to read. Defaults to the currently selected basket. A different basket is selected as the active basket first. | ||
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the basket. |
title
required |
String |
The displayable title of the basket, shortened for the header. |
price
|
ApiPriceResponse |
The effective total price of the basket, present only if sums may be shown for the current price mode. |
price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionCount
required |
long |
The number of regular positions in the basket. |
recomputing
required |
boolean |
Whether the basket is currently being recomputed. Prices and totals may change once the recomputation has finished. |
Add Positions
Adds one or more items to the basket, optionally with a comment, a quantity in an alternative sales unit, additions (sub positions like cutting services) and ignored mandatory accessory groups. Items whose number cannot be resolved are skipped and reported via 'missingItemNumbers', items the shop rejects (e.g. one which may not be ordered) are skipped with their reason reported in 'messages' - the response stays 200 in both cases. Creates a basket if the buyer has none yet, exactly like the web shop does. Awaits the triggered recomputation and returns the updated basket state, so no separate refresh call is needed.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
basketId
|
String |
The id of the basket to add the items to. Defaults to the currently selected basket. A different basket is selected as the active basket before adding the items. |
source
|
String |
The source to record for the new positions, for statistics purposes. Defaults to 'frontend-api'.
Example:
frontend-api |
positions
required |
List<ApiBasketAddPositionRequest> |
The items to add to the basket. |
positions[].itemNumber
required |
String |
The item number of the item to add. |
positions[].quantity
|
BigDecimal |
The quantity to add, stated in the alternative sales unit if 'alternativeUnitId' is given, in the base unit of the item otherwise. Defaults to the recommended order quantity of the item, in the very same unit.
Example:
10 |
positions[].alternativeUnitId
|
Long |
The id of the alternative sales unit the quantity refers to. If given, the quantity is converted into the base unit of the item. |
positions[].comment
|
String |
The comment to attach to the new position. Only honored if position comments are allowed in the shop. |
positions[].additions
|
List<ApiBasketAdditionRequest> |
Additions (sub positions like cutting services) to attach to the new position. |
positions[].additions[].type
required |
String |
The type of the addition, matching the name of a registered addition handler. |
positions[].additions[].json
|
ObjectNode |
The type specific configuration of the addition, as understood by its handler. |
positions[].additions[].quantity
required |
BigDecimal |
The quantity of the addition.
Example:
1 |
positions[].ignoredMandatoryGroups
|
List<String> |
The unique names of the mandatory accessory groups of the item which the user chose to ignore. Groups not listed here are validated and report a position message if their accessories are missing from the basket. |
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the basket. |
title
required |
String |
The displayable title of the basket. |
active
required |
boolean |
Whether this is the currently selected basket of the buyer. |
recomputing
required |
boolean |
Whether the basket is currently being recomputed. Prices and totals may change once the recomputation has finished. |
lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
projectName
|
String |
The name of the project assigned to the basket, if any. |
comment
|
String |
The comment attached to the basket, if there is one. |
orderType
|
String |
The id of the order type selected for this basket, if any - the same id the checkout API reports as the selected order method.
Example:
order |
orderTypeLabel
|
String |
The localized name of the order type, for display only.
Example:
Order |
price
|
ApiPriceResponse |
The effective total price of the basket, present only if sums may be shown for the current price mode. |
price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
netPrice
|
ApiPriceResponse |
The total net price of the basket including its cost positions, present only if sums may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionsNetPrice
|
ApiPriceResponse |
The net price of the regular positions only, i.e. without the cost positions - the subtotal the web basket shows. Present under the same conditions as 'netPrice'. |
positionsNetPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positionsNetPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positionsNetPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionCount
required |
long |
The number of regular positions in the basket. |
shippingInfo
|
String |
The displayable info text about the preselected shipping method, if one is configured. |
positionCommentsAllowed
required |
boolean |
Whether comments may be attached to the positions of the basket. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The cost positions computed by the system (e.g. shipping costs or a minimum quantity surcharge). They are part of 'netPrice' but not of 'positions' - render them to show a summary which adds up. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages emitted for the basket itself. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
addedPositionIds
required |
List<String> |
The database ids of the positions created by this request. |
missingItemNumbers
required |
List<String> |
The item numbers which could not be resolved and were therefore skipped. Items which were resolved but rejected by the shop are not listed here - their reason is reported in 'messages'. |
Update Positions
Changes the quantities and/or comments of one or more basket positions. Omitted fields are left unchanged, an empty comment removes the comment. Quantities refer to the base unit of the item - the same unit the 'quantity' of the state response reports. All changes are validated first and applied together within one basket lock - a request with an unknown position id or an invalid change is rejected as a whole. Unlike the web basket, a quantity of 0 does not delete the position but is rejected with 'invalid_quantity' - use the remove endpoint instead. Awaits the triggered recomputation and returns the updated basket state.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
basketId
|
String |
The id of the basket owning the positions. Defaults to the currently selected basket. A different basket is selected as the active basket before applying the changes. |
positions
required |
List<ApiBasketUpdatePositionRequest> |
The changes to apply to the positions of the basket. |
positions[].id
required |
String |
The database id of the position to change. |
positions[].quantity
|
BigDecimal |
The new quantity of the position, in the base unit of the item - the same unit the 'quantity' of the state response reports. Omit to leave the quantity unchanged.
Example:
5 |
positions[].comment
|
String |
The new comment of the position. An empty string removes the comment, omitting the field leaves the comment unchanged. |
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the basket. |
title
required |
String |
The displayable title of the basket. |
active
required |
boolean |
Whether this is the currently selected basket of the buyer. |
recomputing
required |
boolean |
Whether the basket is currently being recomputed. Prices and totals may change once the recomputation has finished. |
lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
projectName
|
String |
The name of the project assigned to the basket, if any. |
comment
|
String |
The comment attached to the basket, if there is one. |
orderType
|
String |
The id of the order type selected for this basket, if any - the same id the checkout API reports as the selected order method.
Example:
order |
orderTypeLabel
|
String |
The localized name of the order type, for display only.
Example:
Order |
price
|
ApiPriceResponse |
The effective total price of the basket, present only if sums may be shown for the current price mode. |
price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
netPrice
|
ApiPriceResponse |
The total net price of the basket including its cost positions, present only if sums may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionsNetPrice
|
ApiPriceResponse |
The net price of the regular positions only, i.e. without the cost positions - the subtotal the web basket shows. Present under the same conditions as 'netPrice'. |
positionsNetPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positionsNetPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positionsNetPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionCount
required |
long |
The number of regular positions in the basket. |
shippingInfo
|
String |
The displayable info text about the preselected shipping method, if one is configured. |
positionCommentsAllowed
required |
boolean |
Whether comments may be attached to the positions of the basket. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The cost positions computed by the system (e.g. shipping costs or a minimum quantity surcharge). They are part of 'netPrice' but not of 'positions' - render them to show a summary which adds up. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages emitted for the basket itself. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
Remove Positions
Removes one or more positions from the basket, including their sub and subordinate positions. Responds with 404 if one of the position ids does not exist in the basket - nothing is removed in that case. Awaits the triggered recomputation and returns the updated basket state.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
basketId
|
String |
The id of the basket owning the positions. Defaults to the currently selected basket. A different basket is selected as the active basket before removing the positions. |
positionIds
required |
List<String> |
The database ids of the positions to remove. |
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the basket. |
title
required |
String |
The displayable title of the basket. |
active
required |
boolean |
Whether this is the currently selected basket of the buyer. |
recomputing
required |
boolean |
Whether the basket is currently being recomputed. Prices and totals may change once the recomputation has finished. |
lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
projectName
|
String |
The name of the project assigned to the basket, if any. |
comment
|
String |
The comment attached to the basket, if there is one. |
orderType
|
String |
The id of the order type selected for this basket, if any - the same id the checkout API reports as the selected order method.
Example:
order |
orderTypeLabel
|
String |
The localized name of the order type, for display only.
Example:
Order |
price
|
ApiPriceResponse |
The effective total price of the basket, present only if sums may be shown for the current price mode. |
price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
netPrice
|
ApiPriceResponse |
The total net price of the basket including its cost positions, present only if sums may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionsNetPrice
|
ApiPriceResponse |
The net price of the regular positions only, i.e. without the cost positions - the subtotal the web basket shows. Present under the same conditions as 'netPrice'. |
positionsNetPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positionsNetPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positionsNetPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionCount
required |
long |
The number of regular positions in the basket. |
shippingInfo
|
String |
The displayable info text about the preselected shipping method, if one is configured. |
positionCommentsAllowed
required |
boolean |
Whether comments may be attached to the positions of the basket. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The cost positions computed by the system (e.g. shipping costs or a minimum quantity surcharge). They are part of 'netPrice' but not of 'positions' - render them to show a summary which adds up. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages emitted for the basket itself. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
Acknowledge Messages
Marks basket messages as acknowledged by their 'id' (see 'messages' in the state response) and returns the updated basket state. Ids without a matching message are silently ignored. The acknowledgement is shared with the checkout: an acknowledgeable warning acknowledged here no longer blocks 'canCommit' of the checkout API.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
basketId
|
String |
The id of the basket owning the messages. Defaults to the currently selected basket. A different basket is selected as the active basket first. |
messageIds
|
List<String> |
The ids of the messages (see 'messages' in the state response) to mark as acknowledged. Ids which do not belong to the basket are silently ignored. |
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the basket. |
title
required |
String |
The displayable title of the basket. |
active
required |
boolean |
Whether this is the currently selected basket of the buyer. |
recomputing
required |
boolean |
Whether the basket is currently being recomputed. Prices and totals may change once the recomputation has finished. |
lastRefresh
|
String |
The timestamp of the last modification of the basket, in ISO-8601 format with seconds precision and without an offset - it is stated in the time zone of the shop.
Example:
2026-08-04T15:53:11 |
projectName
|
String |
The name of the project assigned to the basket, if any. |
comment
|
String |
The comment attached to the basket, if there is one. |
orderType
|
String |
The id of the order type selected for this basket, if any - the same id the checkout API reports as the selected order method.
Example:
order |
orderTypeLabel
|
String |
The localized name of the order type, for display only.
Example:
Order |
price
|
ApiPriceResponse |
The effective total price of the basket, present only if sums may be shown for the current price mode. |
price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
netPrice
|
ApiPriceResponse |
The total net price of the basket including its cost positions, present only if sums may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionsNetPrice
|
ApiPriceResponse |
The net price of the regular positions only, i.e. without the cost positions - the subtotal the web basket shows. Present under the same conditions as 'netPrice'. |
positionsNetPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positionsNetPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positionsNetPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The total gross price of the basket, present only if sums may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positionCount
required |
long |
The number of regular positions in the basket. |
shippingInfo
|
String |
The displayable info text about the preselected shipping method, if one is configured. |
positionCommentsAllowed
required |
boolean |
Whether comments may be attached to the positions of the basket. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The cost positions computed by the system (e.g. shipping costs or a minimum quantity surcharge). They are part of 'netPrice' but not of 'positions' - render them to show a summary which adds up. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages emitted for the basket itself. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
Checkout
Checkout State
Returns the current state of the checkout for the logged in buyer: the basket summary, invoice/shipping address and contact, the selected and available order/shipping/payment methods, custom fields, messages and whether the basket is in a committable state ('canCommit'). Requires a basket to already exist for the buyer - responds with 404 otherwise. This endpoint does not run the field validation, so 'canCommit' alone is no promise that completing will succeed - call the validate endpoint before offering to place the order.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Response Body
| Field | Type | Description |
|---|---|---|
netPrice
|
ApiPriceResponse |
The net sum of the basket, present only if prices may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The gross sum of the basket, present only if prices may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
invoiceAddress
required |
ApiCheckoutAddressResponse |
The invoice address. |
invoiceAddress.name1
|
String |
The first name/company line. |
invoiceAddress.name2
|
String |
The second name/company line. |
invoiceAddress.name3
|
String |
The third name/company line. |
invoiceAddress.street
|
String |
The street and house number. |
invoiceAddress.zip
|
String |
The ZIP code. |
invoiceAddress.city
|
String |
The city. |
invoiceAddress.countryCode
|
String |
The ISO country code.
Example:
DE |
invoiceAddress.countryName
|
String |
The translated country name. |
invoiceAddress.correlationId
|
String |
Links this address to an entry of the buyer's address book, if it currently is a known address. Absent for a manually entered address - which also happens once the fields of a previously linked address are edited. Send it back unchanged (along with the unchanged fields) to keep the link. |
shippingAddress
required |
ApiCheckoutAddressResponse |
The shipping address. May be empty if shipping to the invoice address. |
shippingAddress.name1
|
String |
The first name/company line. |
shippingAddress.name2
|
String |
The second name/company line. |
shippingAddress.name3
|
String |
The third name/company line. |
shippingAddress.street
|
String |
The street and house number. |
shippingAddress.zip
|
String |
The ZIP code. |
shippingAddress.city
|
String |
The city. |
shippingAddress.countryCode
|
String |
The ISO country code.
Example:
DE |
shippingAddress.countryName
|
String |
The translated country name. |
shippingAddress.correlationId
|
String |
Links this address to an entry of the buyer's address book, if it currently is a known address. Absent for a manually entered address - which also happens once the fields of a previously linked address are edited. Send it back unchanged (along with the unchanged fields) to keep the link. |
shippingContact
required |
ApiCheckoutContactResponse |
The shipping contact. |
shippingContact.contactPerson
|
String |
The name of the contact person at the shipping address. |
shippingContact.phone
|
String |
The phone number of the contact person. |
shippingContact.email
|
String |
The email address of the contact person. |
buyerInfo
required |
ApiCheckoutBuyerInfoResponse |
The buyer information. |
buyerInfo.salutation
|
String |
The salutation code, as defined in the 'salutations' code list. |
buyerInfo.title
|
String |
The title of the buyer. |
buyerInfo.firstname
|
String |
The first name of the buyer. |
buyerInfo.lastname
|
String |
The last name of the buyer. |
buyerInfo.email
|
String |
The email address of the buyer. |
buyerInfo.phone
|
String |
The phone number of the buyer. |
buyerInfo.fax
|
String |
The fax number of the buyer. |
projectId
|
String |
The id of the selected project, if any. |
projectName
|
String |
The name of the selected project, if any. |
commissionId
|
String |
The commission / cost reference of the order, if any. |
couponCode
|
String |
The applied coupon code, if any. |
comment
|
String |
An optional comment concerning the order. |
title
|
String |
A title or commercial reference (commission) for the basket, if the shop uses this field. |
desiredDeliveryDate
|
String |
The desired delivery date, as an ISO-8601 date ('yyyy-MM-dd'), if set. For shops with the delivery tour feature this is the desired date of the tour - for all others, the delivery date of the basket. |
pickupSiteCode
|
String |
The code of the selected pickup site, if the shipping method uses pickup. |
pickupSiteName
|
String |
The translated name of the selected pickup site, if the shipping method uses pickup. |
orderMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available order types. |
orderMethod.selectedId
|
String |
The id of the currently selected method, if any. |
orderMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
orderMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
orderMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
orderMethod.values[].name
required |
String |
The translated name of the method. |
orderMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
orderMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
shippingMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available shipping methods. Each option states whether it requires a shipping address or a pickup site. |
shippingMethod.selectedId
|
String |
The id of the currently selected method, if any. |
shippingMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
shippingMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
shippingMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
shippingMethod.values[].name
required |
String |
The translated name of the method. |
shippingMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
shippingMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
pickupSites
|
List<ApiCheckoutPickupSiteResponse> |
The selectable pickup sites. Only present if at least one available shipping method requires a pickup site. |
pickupSites[].id
required |
long |
The database id of the pickup site, to be used as 'pickupSiteId' in the update request. |
pickupSites[].code
required |
String |
The code of the pickup site, as reported in 'pickupSiteCode' of the state response. |
pickupSites[].name
required |
String |
The translated name of the pickup site. |
tour
|
ApiCheckoutTourResponse |
The delivery tour selection. Only present if the shop has the tour feature enabled and the tour selection applies to the current basket. |
tour.editable
required |
boolean |
Whether the tour data can currently be changed by the user. |
tour.selectedId
|
String |
The id of the currently selected tour, if any. |
tour.selectedLabel
|
String |
The user readable name of the currently selected tour, if any. |
tour.hint
|
String |
A hint concerning the last tour change (e.g. an automatically updated date), to be shown to the user. |
tour.values
required |
List<ApiCheckoutTourOptionResponse> |
The selectable tours - render a tour picker if and only if this is non-empty. Empty if the shop does not offer a tour selection, mirroring the web checkout (e.g. the selection is disabled, or there is exactly one tour and the shop does not offer a single tour for selection). A tour may still be assigned in that case, reported via 'selectedId'/'selectedLabel'. |
tour.values[].id
required |
String |
The id of the tour, to be used as 'tourId' in the update request. |
tour.values[].label
required |
String |
The user readable name of the tour. |
tour.values[].deliveryDate
|
String |
The delivery date of the tour, as an ISO-8601 date ('yyyy-MM-dd'), if known. |
tour.values[].hint
|
String |
An optional hint concerning the tour, to be shown to the user. |
shippingCountries
required |
List<ApiCheckoutCountryResponse> |
The selectable shipping countries - the valid values for 'countryCode' in the address blocks of the update request. |
shippingCountries[].code
required |
String |
The code of the country, to be used as 'countryCode' in address blocks of the update request.
Example:
DE |
shippingCountries[].name
required |
String |
The translated name of the country. |
fields
required |
ApiCheckoutFieldsResponse |
Describes which checkout fields the shop shows, which are editable and which are required - drive the checkout form entirely from this block. |
fields.invoiceAddress
required |
ApiCheckoutFieldConfigResponse |
The invoice address section. |
fields.invoiceAddress.show
required |
boolean |
Whether the field should be shown at all. |
fields.invoiceAddress.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.invoiceAddress.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.shippingAddress
required |
ApiCheckoutShippingAddressConfigResponse |
The shipping address section. |
fields.shippingAddress.show
required |
boolean |
Whether the field should be shown at all. |
fields.shippingAddress.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.shippingAddress.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.shippingAddress.canSuggest
required |
boolean |
Whether the buyer's address book should be offered for selecting the shipping address (see the addresses suggestion endpoint). |
fields.shippingAddress.canSave
required |
boolean |
Whether an edited shipping address can be saved to the buyer's address book via 'saveShippingAddress' of the update request. |
fields.shippingAddress.showName
required |
boolean |
Whether the name line of the shipping address should be shown. |
fields.shippingAddress.showSecondName
required |
boolean |
Whether the second name line of the shipping address should be shown. |
fields.shippingAddress.showThirdName
required |
boolean |
Whether the third name line of the shipping address should be shown. |
fields.shippingContact
required |
ApiCheckoutShippingContactConfigResponse |
The shipping contact fields. |
fields.shippingContact.showContactPerson
required |
boolean |
Whether the contact person field should be shown. |
fields.shippingContact.showPhone
required |
boolean |
Whether the contact phone field should be shown. |
fields.shippingContact.showEmail
required |
boolean |
Whether the contact email field should be shown. |
fields.buyerDetails
required |
ApiCheckoutBuyerConfigResponse |
The buyer details section. |
fields.buyerDetails.show
required |
boolean |
Whether the buyer details should be shown at all. |
fields.buyerDetails.editable
required |
boolean |
Whether the buyer details can be edited by the user. |
fields.buyerDetails.showPhone
required |
boolean |
Whether the buyer phone field should be shown. |
fields.buyerDetails.phoneRequired
required |
boolean |
Whether the buyer phone must be filled. |
fields.buyerDetails.showFax
required |
boolean |
Whether the buyer fax field should be shown. |
fields.buyerDetails.faxRequired
required |
boolean |
Whether the buyer fax must be filled. |
fields.buyerDetails.emailRequired
required |
boolean |
Whether the buyer email must be filled. |
fields.title
required |
ApiCheckoutFieldConfigResponse |
The checkout title / commercial reference field. |
fields.title.show
required |
boolean |
Whether the field should be shown at all. |
fields.title.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.title.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.desiredDeliveryDate
required |
ApiCheckoutFieldConfigResponse |
The desired delivery date field. |
fields.desiredDeliveryDate.show
required |
boolean |
Whether the field should be shown at all. |
fields.desiredDeliveryDate.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.desiredDeliveryDate.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.project
required |
ApiCheckoutFieldConfigResponse |
The project selection. |
fields.project.show
required |
boolean |
Whether the field should be shown at all. |
fields.project.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.project.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.commission
required |
ApiCheckoutFieldConfigResponse |
The commission selection. |
fields.commission.show
required |
boolean |
Whether the field should be shown at all. |
fields.commission.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.commission.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.coupon
required |
ApiCheckoutFieldConfigResponse |
The coupon code field. |
fields.coupon.show
required |
boolean |
Whether the field should be shown at all. |
fields.coupon.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.coupon.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.comment
required |
ApiCheckoutFieldConfigResponse |
The order comment field. |
fields.comment.show
required |
boolean |
Whether the field should be shown at all. |
fields.comment.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.comment.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.pickupSite
required |
ApiCheckoutFieldConfigResponse |
The pickup site selection (see 'pickupSites' for the selectable sites). |
fields.pickupSite.show
required |
boolean |
Whether the field should be shown at all. |
fields.pickupSite.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.pickupSite.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
paymentMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available payment methods. |
paymentMethod.selectedId
|
String |
The id of the currently selected method, if any. |
paymentMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
paymentMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
paymentMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
paymentMethod.values[].name
required |
String |
The translated name of the method. |
paymentMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
paymentMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The computed cost positions of the basket (e.g. shipping costs). Together with the regular positions, these add up to the reported basket sums. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages concerning the basket as a whole, e.g. validation problems or warnings which need to be acknowledged. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
canCommit
required |
boolean |
Whether the basket is in a committable state - false if the checkout is disabled or not permitted, the basket is erroneous or currently locked, or an unacknowledged warning exists. This is a necessary but not a sufficient condition: it does not run the field validation (e.g. a missing required title), which only the validate and complete endpoints perform. Call validate before offering to place the order. |
customFields
required |
Map<String, ApiCheckoutCustomFieldResponse> |
The current custom field values, keyed by field name. Combines shop-configurable 'CustomizableField' values and compiled, customer-specific fields. |
customFields[].label
required |
String |
The translated label of the field. |
customFields[].type
required |
String |
The type of the field, e.g. 'STRING', 'BOOLEAN', 'SELECT'. |
customFields[].value
|
String |
The current value of the field, if any. |
customFields[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this field, e.g. validation problems. May be empty. |
customFields[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
customFields[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
customFields[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
customFields[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
customFields[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
customFields[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
customFieldDefinitions
required |
List<ApiCheckoutCustomFieldDefinitionResponse> |
Describes the shop-configurable custom fields applicable to the basket, so that an app can render fields generically, including ones added later. Does not include the compiled, customer-specific fields contributed by an ApiCheckoutFieldCustomizer, as those are not shop-configurable and are expected to be known to the app in advance. |
customFieldDefinitions[].id
required |
String |
The database id of the field definition. |
customFieldDefinitions[].name
required |
String |
The technical name of the field - the key to use in 'customFields'. |
customFieldDefinitions[].title
required |
String |
The translated title of the field. |
customFieldDefinitions[].type
required |
String |
The type of the field, e.g. 'STRING', 'BOOLEAN', 'SELECT'. |
customFieldDefinitions[].required
required |
boolean |
Whether the field must be filled in order to complete the checkout. |
customFieldDefinitions[].selectValues
|
List<String> |
The selectable values, only present for types like 'SELECT' or 'RADIO'. |
customFieldDefinitions[].hide
required |
boolean |
Whether the field should be kept hidden instead of shown as input. |
Update Checkout
Applies a partial update to the checkout: invoice/shipping address and contact, order/shipping/payment method, pickup site, desired delivery date, buyer information, project, commission, coupon code, comment and custom fields. Only fields actually present in the request are applied - everything else is left untouched. Returns the same state shape as the GET endpoint ("read your writes"). This does not perform the full checkout validation (see the validate endpoint) - it only enforces the basic consistency of the given fields.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
invoiceAddress
|
ApiCheckoutAddressRequest |
The invoice address. If present, replaces the whole invoice address. |
invoiceAddress.name1
|
String |
The first name/company line. At most 255 characters. |
invoiceAddress.name2
|
String |
The second name/company line. At most 255 characters. |
invoiceAddress.name3
|
String |
The third name/company line. At most 255 characters. |
invoiceAddress.street
|
String |
The street and house number. At most 255 characters. |
invoiceAddress.zip
|
String |
The ZIP code. At most 16 characters. |
invoiceAddress.city
|
String |
The city. At most 255 characters. |
invoiceAddress.countryCode
|
String |
The country code, as listed in 'shippingCountries' of the state response - an unknown code is rejected with a 400 error. For the shipping address, this is only honored if the shop permits changing the shipping country - otherwise the invoice address's country is used.
Example:
DE |
invoiceAddress.correlationId
|
String |
Links this address to an entry of the buyer's address book. Only ever send a value obtained from the API (the addresses suggestion endpoint or a previous state response), together with that entry's unchanged fields. Omit it (or send an empty string) for a manually entered address - it is then auto-linked if it matches a known entry and otherwise validated against the ERP. A link whose fields no longer match the referenced entry is dropped automatically, so always read the effective value back from the response. At most 255 characters. |
shippingAddress
|
ApiCheckoutAddressRequest |
The shipping address. If present, replaces the whole shipping address. |
shippingAddress.name1
|
String |
The first name/company line. At most 255 characters. |
shippingAddress.name2
|
String |
The second name/company line. At most 255 characters. |
shippingAddress.name3
|
String |
The third name/company line. At most 255 characters. |
shippingAddress.street
|
String |
The street and house number. At most 255 characters. |
shippingAddress.zip
|
String |
The ZIP code. At most 16 characters. |
shippingAddress.city
|
String |
The city. At most 255 characters. |
shippingAddress.countryCode
|
String |
The country code, as listed in 'shippingCountries' of the state response - an unknown code is rejected with a 400 error. For the shipping address, this is only honored if the shop permits changing the shipping country - otherwise the invoice address's country is used.
Example:
DE |
shippingAddress.correlationId
|
String |
Links this address to an entry of the buyer's address book. Only ever send a value obtained from the API (the addresses suggestion endpoint or a previous state response), together with that entry's unchanged fields. Omit it (or send an empty string) for a manually entered address - it is then auto-linked if it matches a known entry and otherwise validated against the ERP. A link whose fields no longer match the referenced entry is dropped automatically, so always read the effective value back from the response. At most 255 characters. |
shippingContact
|
ApiCheckoutContactRequest |
The shipping contact. If present, replaces the whole shipping contact. |
shippingContact.contactPerson
|
String |
The name of the contact person at the shipping address. At most 255 characters. |
shippingContact.phone
|
String |
The phone number of the contact person. At most 150 characters. |
shippingContact.email
|
String |
The email address of the contact person. At most 150 characters. |
shippingMethodId
|
String |
The id of the shipping method to select, as listed in the state response. An unknown or unavailable id is rejected with a 400 error. |
paymentMethodId
|
String |
The id of the payment method to select, as listed in the state response. An unknown or unavailable id is rejected with a 400 error. |
orderMethodId
|
String |
The id of the order type to select, as listed in the state response. An unknown or unavailable id is rejected with a 400 error. |
pickupSiteId
|
Long |
The id of the pickup site to select, as listed in 'pickupSites' of the state response - an unknown id is rejected with a 400 error. Send 0 or a negative number to clear the pickup site. |
desiredDeliveryDate
|
String |
The desired delivery date, as an ISO-8601 date ('yyyy-MM-dd'). Send an empty string to clear it. For shops with the delivery tour feature, this sets the desired date of the tour - for all others, the delivery date of the basket (then only applied if the selected shipping method requires an address). Note that the shop may adjust the date to the next valid tour. |
tourId
|
String |
The id of the delivery tour to select, as listed in the 'tour' block of the state response. Only accepted if the shop has the tour feature enabled - an unknown or no longer valid id is rejected with a 400 error. Send an empty string to clear the selected tour. |
buyerInfo
|
ApiCheckoutBuyerInfoRequest |
The buyer information. If present, only the given fields of the buyer information are applied. |
buyerInfo.salutation
|
String |
The salutation code, as defined in the 'salutations' code list. At most 20 characters. |
buyerInfo.title
|
String |
The title of the buyer. At most 50 characters. |
buyerInfo.firstname
|
String |
The first name of the buyer. At most 150 characters. |
buyerInfo.lastname
|
String |
The last name of the buyer. At most 150 characters. |
buyerInfo.email
|
String |
The email address of the buyer. At most 255 characters. |
buyerInfo.phone
|
String |
The phone number of the buyer. At most 255 characters. |
buyerInfo.fax
|
String |
The fax number of the buyer. At most 255 characters. |
projectId
|
String |
The id of the project to select, as returned by the project suggestion endpoint - an unknown id is rejected with a 400 error. Send an empty string to clear the project. |
commissionId
|
String |
The commission / cost reference of the order. At most 64 characters. Send an empty string to clear it. |
couponCode
|
String |
The coupon code to apply. At most 255 characters. Send an empty string to remove an applied coupon. |
comment
|
String |
An optional comment concerning the order. Not limited in length by default, but shops may configure a maximum length, enforced by the validate and complete endpoints. |
title
|
String |
A title or commercial reference (commission) for the basket, if the shop uses this field. At most 512 characters. |
saveShippingAddress
|
Boolean |
If true, the (edited) shipping address is saved to the buyer's address book - only honored if the state response reports 'fields.shippingAddress.canSave' and the selected shipping method requires an address. |
customFields
|
Map<String, String> |
Custom field values, keyed by field name. Covers both shop-configurable 'CustomizableField' values (see 'customFieldDefinitions' in the state response) and compiled, customer-specific fields contributed by an ApiCheckoutFieldCustomizer. If present at all, every customizable field not contained in this map is left untouched (it is not cleared). |
Response Body
| Field | Type | Description |
|---|---|---|
netPrice
|
ApiPriceResponse |
The net sum of the basket, present only if prices may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The gross sum of the basket, present only if prices may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
invoiceAddress
required |
ApiCheckoutAddressResponse |
The invoice address. |
invoiceAddress.name1
|
String |
The first name/company line. |
invoiceAddress.name2
|
String |
The second name/company line. |
invoiceAddress.name3
|
String |
The third name/company line. |
invoiceAddress.street
|
String |
The street and house number. |
invoiceAddress.zip
|
String |
The ZIP code. |
invoiceAddress.city
|
String |
The city. |
invoiceAddress.countryCode
|
String |
The ISO country code.
Example:
DE |
invoiceAddress.countryName
|
String |
The translated country name. |
invoiceAddress.correlationId
|
String |
Links this address to an entry of the buyer's address book, if it currently is a known address. Absent for a manually entered address - which also happens once the fields of a previously linked address are edited. Send it back unchanged (along with the unchanged fields) to keep the link. |
shippingAddress
required |
ApiCheckoutAddressResponse |
The shipping address. May be empty if shipping to the invoice address. |
shippingAddress.name1
|
String |
The first name/company line. |
shippingAddress.name2
|
String |
The second name/company line. |
shippingAddress.name3
|
String |
The third name/company line. |
shippingAddress.street
|
String |
The street and house number. |
shippingAddress.zip
|
String |
The ZIP code. |
shippingAddress.city
|
String |
The city. |
shippingAddress.countryCode
|
String |
The ISO country code.
Example:
DE |
shippingAddress.countryName
|
String |
The translated country name. |
shippingAddress.correlationId
|
String |
Links this address to an entry of the buyer's address book, if it currently is a known address. Absent for a manually entered address - which also happens once the fields of a previously linked address are edited. Send it back unchanged (along with the unchanged fields) to keep the link. |
shippingContact
required |
ApiCheckoutContactResponse |
The shipping contact. |
shippingContact.contactPerson
|
String |
The name of the contact person at the shipping address. |
shippingContact.phone
|
String |
The phone number of the contact person. |
shippingContact.email
|
String |
The email address of the contact person. |
buyerInfo
required |
ApiCheckoutBuyerInfoResponse |
The buyer information. |
buyerInfo.salutation
|
String |
The salutation code, as defined in the 'salutations' code list. |
buyerInfo.title
|
String |
The title of the buyer. |
buyerInfo.firstname
|
String |
The first name of the buyer. |
buyerInfo.lastname
|
String |
The last name of the buyer. |
buyerInfo.email
|
String |
The email address of the buyer. |
buyerInfo.phone
|
String |
The phone number of the buyer. |
buyerInfo.fax
|
String |
The fax number of the buyer. |
projectId
|
String |
The id of the selected project, if any. |
projectName
|
String |
The name of the selected project, if any. |
commissionId
|
String |
The commission / cost reference of the order, if any. |
couponCode
|
String |
The applied coupon code, if any. |
comment
|
String |
An optional comment concerning the order. |
title
|
String |
A title or commercial reference (commission) for the basket, if the shop uses this field. |
desiredDeliveryDate
|
String |
The desired delivery date, as an ISO-8601 date ('yyyy-MM-dd'), if set. For shops with the delivery tour feature this is the desired date of the tour - for all others, the delivery date of the basket. |
pickupSiteCode
|
String |
The code of the selected pickup site, if the shipping method uses pickup. |
pickupSiteName
|
String |
The translated name of the selected pickup site, if the shipping method uses pickup. |
orderMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available order types. |
orderMethod.selectedId
|
String |
The id of the currently selected method, if any. |
orderMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
orderMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
orderMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
orderMethod.values[].name
required |
String |
The translated name of the method. |
orderMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
orderMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
shippingMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available shipping methods. Each option states whether it requires a shipping address or a pickup site. |
shippingMethod.selectedId
|
String |
The id of the currently selected method, if any. |
shippingMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
shippingMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
shippingMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
shippingMethod.values[].name
required |
String |
The translated name of the method. |
shippingMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
shippingMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
pickupSites
|
List<ApiCheckoutPickupSiteResponse> |
The selectable pickup sites. Only present if at least one available shipping method requires a pickup site. |
pickupSites[].id
required |
long |
The database id of the pickup site, to be used as 'pickupSiteId' in the update request. |
pickupSites[].code
required |
String |
The code of the pickup site, as reported in 'pickupSiteCode' of the state response. |
pickupSites[].name
required |
String |
The translated name of the pickup site. |
tour
|
ApiCheckoutTourResponse |
The delivery tour selection. Only present if the shop has the tour feature enabled and the tour selection applies to the current basket. |
tour.editable
required |
boolean |
Whether the tour data can currently be changed by the user. |
tour.selectedId
|
String |
The id of the currently selected tour, if any. |
tour.selectedLabel
|
String |
The user readable name of the currently selected tour, if any. |
tour.hint
|
String |
A hint concerning the last tour change (e.g. an automatically updated date), to be shown to the user. |
tour.values
required |
List<ApiCheckoutTourOptionResponse> |
The selectable tours - render a tour picker if and only if this is non-empty. Empty if the shop does not offer a tour selection, mirroring the web checkout (e.g. the selection is disabled, or there is exactly one tour and the shop does not offer a single tour for selection). A tour may still be assigned in that case, reported via 'selectedId'/'selectedLabel'. |
tour.values[].id
required |
String |
The id of the tour, to be used as 'tourId' in the update request. |
tour.values[].label
required |
String |
The user readable name of the tour. |
tour.values[].deliveryDate
|
String |
The delivery date of the tour, as an ISO-8601 date ('yyyy-MM-dd'), if known. |
tour.values[].hint
|
String |
An optional hint concerning the tour, to be shown to the user. |
shippingCountries
required |
List<ApiCheckoutCountryResponse> |
The selectable shipping countries - the valid values for 'countryCode' in the address blocks of the update request. |
shippingCountries[].code
required |
String |
The code of the country, to be used as 'countryCode' in address blocks of the update request.
Example:
DE |
shippingCountries[].name
required |
String |
The translated name of the country. |
fields
required |
ApiCheckoutFieldsResponse |
Describes which checkout fields the shop shows, which are editable and which are required - drive the checkout form entirely from this block. |
fields.invoiceAddress
required |
ApiCheckoutFieldConfigResponse |
The invoice address section. |
fields.invoiceAddress.show
required |
boolean |
Whether the field should be shown at all. |
fields.invoiceAddress.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.invoiceAddress.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.shippingAddress
required |
ApiCheckoutShippingAddressConfigResponse |
The shipping address section. |
fields.shippingAddress.show
required |
boolean |
Whether the field should be shown at all. |
fields.shippingAddress.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.shippingAddress.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.shippingAddress.canSuggest
required |
boolean |
Whether the buyer's address book should be offered for selecting the shipping address (see the addresses suggestion endpoint). |
fields.shippingAddress.canSave
required |
boolean |
Whether an edited shipping address can be saved to the buyer's address book via 'saveShippingAddress' of the update request. |
fields.shippingAddress.showName
required |
boolean |
Whether the name line of the shipping address should be shown. |
fields.shippingAddress.showSecondName
required |
boolean |
Whether the second name line of the shipping address should be shown. |
fields.shippingAddress.showThirdName
required |
boolean |
Whether the third name line of the shipping address should be shown. |
fields.shippingContact
required |
ApiCheckoutShippingContactConfigResponse |
The shipping contact fields. |
fields.shippingContact.showContactPerson
required |
boolean |
Whether the contact person field should be shown. |
fields.shippingContact.showPhone
required |
boolean |
Whether the contact phone field should be shown. |
fields.shippingContact.showEmail
required |
boolean |
Whether the contact email field should be shown. |
fields.buyerDetails
required |
ApiCheckoutBuyerConfigResponse |
The buyer details section. |
fields.buyerDetails.show
required |
boolean |
Whether the buyer details should be shown at all. |
fields.buyerDetails.editable
required |
boolean |
Whether the buyer details can be edited by the user. |
fields.buyerDetails.showPhone
required |
boolean |
Whether the buyer phone field should be shown. |
fields.buyerDetails.phoneRequired
required |
boolean |
Whether the buyer phone must be filled. |
fields.buyerDetails.showFax
required |
boolean |
Whether the buyer fax field should be shown. |
fields.buyerDetails.faxRequired
required |
boolean |
Whether the buyer fax must be filled. |
fields.buyerDetails.emailRequired
required |
boolean |
Whether the buyer email must be filled. |
fields.title
required |
ApiCheckoutFieldConfigResponse |
The checkout title / commercial reference field. |
fields.title.show
required |
boolean |
Whether the field should be shown at all. |
fields.title.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.title.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.desiredDeliveryDate
required |
ApiCheckoutFieldConfigResponse |
The desired delivery date field. |
fields.desiredDeliveryDate.show
required |
boolean |
Whether the field should be shown at all. |
fields.desiredDeliveryDate.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.desiredDeliveryDate.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.project
required |
ApiCheckoutFieldConfigResponse |
The project selection. |
fields.project.show
required |
boolean |
Whether the field should be shown at all. |
fields.project.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.project.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.commission
required |
ApiCheckoutFieldConfigResponse |
The commission selection. |
fields.commission.show
required |
boolean |
Whether the field should be shown at all. |
fields.commission.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.commission.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.coupon
required |
ApiCheckoutFieldConfigResponse |
The coupon code field. |
fields.coupon.show
required |
boolean |
Whether the field should be shown at all. |
fields.coupon.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.coupon.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.comment
required |
ApiCheckoutFieldConfigResponse |
The order comment field. |
fields.comment.show
required |
boolean |
Whether the field should be shown at all. |
fields.comment.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.comment.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.pickupSite
required |
ApiCheckoutFieldConfigResponse |
The pickup site selection (see 'pickupSites' for the selectable sites). |
fields.pickupSite.show
required |
boolean |
Whether the field should be shown at all. |
fields.pickupSite.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.pickupSite.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
paymentMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available payment methods. |
paymentMethod.selectedId
|
String |
The id of the currently selected method, if any. |
paymentMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
paymentMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
paymentMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
paymentMethod.values[].name
required |
String |
The translated name of the method. |
paymentMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
paymentMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The computed cost positions of the basket (e.g. shipping costs). Together with the regular positions, these add up to the reported basket sums. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages concerning the basket as a whole, e.g. validation problems or warnings which need to be acknowledged. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
canCommit
required |
boolean |
Whether the basket is in a committable state - false if the checkout is disabled or not permitted, the basket is erroneous or currently locked, or an unacknowledged warning exists. This is a necessary but not a sufficient condition: it does not run the field validation (e.g. a missing required title), which only the validate and complete endpoints perform. Call validate before offering to place the order. |
customFields
required |
Map<String, ApiCheckoutCustomFieldResponse> |
The current custom field values, keyed by field name. Combines shop-configurable 'CustomizableField' values and compiled, customer-specific fields. |
customFields[].label
required |
String |
The translated label of the field. |
customFields[].type
required |
String |
The type of the field, e.g. 'STRING', 'BOOLEAN', 'SELECT'. |
customFields[].value
|
String |
The current value of the field, if any. |
customFields[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this field, e.g. validation problems. May be empty. |
customFields[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
customFields[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
customFields[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
customFields[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
customFields[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
customFields[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
customFieldDefinitions
required |
List<ApiCheckoutCustomFieldDefinitionResponse> |
Describes the shop-configurable custom fields applicable to the basket, so that an app can render fields generically, including ones added later. Does not include the compiled, customer-specific fields contributed by an ApiCheckoutFieldCustomizer, as those are not shop-configurable and are expected to be known to the app in advance. |
customFieldDefinitions[].id
required |
String |
The database id of the field definition. |
customFieldDefinitions[].name
required |
String |
The technical name of the field - the key to use in 'customFields'. |
customFieldDefinitions[].title
required |
String |
The translated title of the field. |
customFieldDefinitions[].type
required |
String |
The type of the field, e.g. 'STRING', 'BOOLEAN', 'SELECT'. |
customFieldDefinitions[].required
required |
boolean |
Whether the field must be filled in order to complete the checkout. |
customFieldDefinitions[].selectValues
|
List<String> |
The selectable values, only present for types like 'SELECT' or 'RADIO'. |
customFieldDefinitions[].hide
required |
boolean |
Whether the field should be kept hidden instead of shown as input. |
Validate Checkout
Validates the checkout without committing it: enforces all checkout constraints, awaits a pending recomputation of the basket and then runs the full field validation. Hard problems (e.g. a missing required field) are reported as a structured HTTP error - soft problems are reported via 'messages' and 'canCommit' in the returned state, mirroring the GET endpoint. Optionally acknowledges messages (e.g. a severe stock warning) before evaluating whether the checkout can be completed.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
acknowledgedMessageIds
|
List<String> |
The ids of the messages (see 'messages' in the state response) to mark as acknowledged before evaluating whether the checkout can be completed. |
Response Body
| Field | Type | Description |
|---|---|---|
netPrice
|
ApiPriceResponse |
The net sum of the basket, present only if prices may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The gross sum of the basket, present only if prices may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
invoiceAddress
required |
ApiCheckoutAddressResponse |
The invoice address. |
invoiceAddress.name1
|
String |
The first name/company line. |
invoiceAddress.name2
|
String |
The second name/company line. |
invoiceAddress.name3
|
String |
The third name/company line. |
invoiceAddress.street
|
String |
The street and house number. |
invoiceAddress.zip
|
String |
The ZIP code. |
invoiceAddress.city
|
String |
The city. |
invoiceAddress.countryCode
|
String |
The ISO country code.
Example:
DE |
invoiceAddress.countryName
|
String |
The translated country name. |
invoiceAddress.correlationId
|
String |
Links this address to an entry of the buyer's address book, if it currently is a known address. Absent for a manually entered address - which also happens once the fields of a previously linked address are edited. Send it back unchanged (along with the unchanged fields) to keep the link. |
shippingAddress
required |
ApiCheckoutAddressResponse |
The shipping address. May be empty if shipping to the invoice address. |
shippingAddress.name1
|
String |
The first name/company line. |
shippingAddress.name2
|
String |
The second name/company line. |
shippingAddress.name3
|
String |
The third name/company line. |
shippingAddress.street
|
String |
The street and house number. |
shippingAddress.zip
|
String |
The ZIP code. |
shippingAddress.city
|
String |
The city. |
shippingAddress.countryCode
|
String |
The ISO country code.
Example:
DE |
shippingAddress.countryName
|
String |
The translated country name. |
shippingAddress.correlationId
|
String |
Links this address to an entry of the buyer's address book, if it currently is a known address. Absent for a manually entered address - which also happens once the fields of a previously linked address are edited. Send it back unchanged (along with the unchanged fields) to keep the link. |
shippingContact
required |
ApiCheckoutContactResponse |
The shipping contact. |
shippingContact.contactPerson
|
String |
The name of the contact person at the shipping address. |
shippingContact.phone
|
String |
The phone number of the contact person. |
shippingContact.email
|
String |
The email address of the contact person. |
buyerInfo
required |
ApiCheckoutBuyerInfoResponse |
The buyer information. |
buyerInfo.salutation
|
String |
The salutation code, as defined in the 'salutations' code list. |
buyerInfo.title
|
String |
The title of the buyer. |
buyerInfo.firstname
|
String |
The first name of the buyer. |
buyerInfo.lastname
|
String |
The last name of the buyer. |
buyerInfo.email
|
String |
The email address of the buyer. |
buyerInfo.phone
|
String |
The phone number of the buyer. |
buyerInfo.fax
|
String |
The fax number of the buyer. |
projectId
|
String |
The id of the selected project, if any. |
projectName
|
String |
The name of the selected project, if any. |
commissionId
|
String |
The commission / cost reference of the order, if any. |
couponCode
|
String |
The applied coupon code, if any. |
comment
|
String |
An optional comment concerning the order. |
title
|
String |
A title or commercial reference (commission) for the basket, if the shop uses this field. |
desiredDeliveryDate
|
String |
The desired delivery date, as an ISO-8601 date ('yyyy-MM-dd'), if set. For shops with the delivery tour feature this is the desired date of the tour - for all others, the delivery date of the basket. |
pickupSiteCode
|
String |
The code of the selected pickup site, if the shipping method uses pickup. |
pickupSiteName
|
String |
The translated name of the selected pickup site, if the shipping method uses pickup. |
orderMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available order types. |
orderMethod.selectedId
|
String |
The id of the currently selected method, if any. |
orderMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
orderMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
orderMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
orderMethod.values[].name
required |
String |
The translated name of the method. |
orderMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
orderMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
shippingMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available shipping methods. Each option states whether it requires a shipping address or a pickup site. |
shippingMethod.selectedId
|
String |
The id of the currently selected method, if any. |
shippingMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
shippingMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
shippingMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
shippingMethod.values[].name
required |
String |
The translated name of the method. |
shippingMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
shippingMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
pickupSites
|
List<ApiCheckoutPickupSiteResponse> |
The selectable pickup sites. Only present if at least one available shipping method requires a pickup site. |
pickupSites[].id
required |
long |
The database id of the pickup site, to be used as 'pickupSiteId' in the update request. |
pickupSites[].code
required |
String |
The code of the pickup site, as reported in 'pickupSiteCode' of the state response. |
pickupSites[].name
required |
String |
The translated name of the pickup site. |
tour
|
ApiCheckoutTourResponse |
The delivery tour selection. Only present if the shop has the tour feature enabled and the tour selection applies to the current basket. |
tour.editable
required |
boolean |
Whether the tour data can currently be changed by the user. |
tour.selectedId
|
String |
The id of the currently selected tour, if any. |
tour.selectedLabel
|
String |
The user readable name of the currently selected tour, if any. |
tour.hint
|
String |
A hint concerning the last tour change (e.g. an automatically updated date), to be shown to the user. |
tour.values
required |
List<ApiCheckoutTourOptionResponse> |
The selectable tours - render a tour picker if and only if this is non-empty. Empty if the shop does not offer a tour selection, mirroring the web checkout (e.g. the selection is disabled, or there is exactly one tour and the shop does not offer a single tour for selection). A tour may still be assigned in that case, reported via 'selectedId'/'selectedLabel'. |
tour.values[].id
required |
String |
The id of the tour, to be used as 'tourId' in the update request. |
tour.values[].label
required |
String |
The user readable name of the tour. |
tour.values[].deliveryDate
|
String |
The delivery date of the tour, as an ISO-8601 date ('yyyy-MM-dd'), if known. |
tour.values[].hint
|
String |
An optional hint concerning the tour, to be shown to the user. |
shippingCountries
required |
List<ApiCheckoutCountryResponse> |
The selectable shipping countries - the valid values for 'countryCode' in the address blocks of the update request. |
shippingCountries[].code
required |
String |
The code of the country, to be used as 'countryCode' in address blocks of the update request.
Example:
DE |
shippingCountries[].name
required |
String |
The translated name of the country. |
fields
required |
ApiCheckoutFieldsResponse |
Describes which checkout fields the shop shows, which are editable and which are required - drive the checkout form entirely from this block. |
fields.invoiceAddress
required |
ApiCheckoutFieldConfigResponse |
The invoice address section. |
fields.invoiceAddress.show
required |
boolean |
Whether the field should be shown at all. |
fields.invoiceAddress.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.invoiceAddress.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.shippingAddress
required |
ApiCheckoutShippingAddressConfigResponse |
The shipping address section. |
fields.shippingAddress.show
required |
boolean |
Whether the field should be shown at all. |
fields.shippingAddress.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.shippingAddress.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.shippingAddress.canSuggest
required |
boolean |
Whether the buyer's address book should be offered for selecting the shipping address (see the addresses suggestion endpoint). |
fields.shippingAddress.canSave
required |
boolean |
Whether an edited shipping address can be saved to the buyer's address book via 'saveShippingAddress' of the update request. |
fields.shippingAddress.showName
required |
boolean |
Whether the name line of the shipping address should be shown. |
fields.shippingAddress.showSecondName
required |
boolean |
Whether the second name line of the shipping address should be shown. |
fields.shippingAddress.showThirdName
required |
boolean |
Whether the third name line of the shipping address should be shown. |
fields.shippingContact
required |
ApiCheckoutShippingContactConfigResponse |
The shipping contact fields. |
fields.shippingContact.showContactPerson
required |
boolean |
Whether the contact person field should be shown. |
fields.shippingContact.showPhone
required |
boolean |
Whether the contact phone field should be shown. |
fields.shippingContact.showEmail
required |
boolean |
Whether the contact email field should be shown. |
fields.buyerDetails
required |
ApiCheckoutBuyerConfigResponse |
The buyer details section. |
fields.buyerDetails.show
required |
boolean |
Whether the buyer details should be shown at all. |
fields.buyerDetails.editable
required |
boolean |
Whether the buyer details can be edited by the user. |
fields.buyerDetails.showPhone
required |
boolean |
Whether the buyer phone field should be shown. |
fields.buyerDetails.phoneRequired
required |
boolean |
Whether the buyer phone must be filled. |
fields.buyerDetails.showFax
required |
boolean |
Whether the buyer fax field should be shown. |
fields.buyerDetails.faxRequired
required |
boolean |
Whether the buyer fax must be filled. |
fields.buyerDetails.emailRequired
required |
boolean |
Whether the buyer email must be filled. |
fields.title
required |
ApiCheckoutFieldConfigResponse |
The checkout title / commercial reference field. |
fields.title.show
required |
boolean |
Whether the field should be shown at all. |
fields.title.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.title.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.desiredDeliveryDate
required |
ApiCheckoutFieldConfigResponse |
The desired delivery date field. |
fields.desiredDeliveryDate.show
required |
boolean |
Whether the field should be shown at all. |
fields.desiredDeliveryDate.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.desiredDeliveryDate.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.project
required |
ApiCheckoutFieldConfigResponse |
The project selection. |
fields.project.show
required |
boolean |
Whether the field should be shown at all. |
fields.project.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.project.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.commission
required |
ApiCheckoutFieldConfigResponse |
The commission selection. |
fields.commission.show
required |
boolean |
Whether the field should be shown at all. |
fields.commission.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.commission.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.coupon
required |
ApiCheckoutFieldConfigResponse |
The coupon code field. |
fields.coupon.show
required |
boolean |
Whether the field should be shown at all. |
fields.coupon.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.coupon.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.comment
required |
ApiCheckoutFieldConfigResponse |
The order comment field. |
fields.comment.show
required |
boolean |
Whether the field should be shown at all. |
fields.comment.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.comment.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
fields.pickupSite
required |
ApiCheckoutFieldConfigResponse |
The pickup site selection (see 'pickupSites' for the selectable sites). |
fields.pickupSite.show
required |
boolean |
Whether the field should be shown at all. |
fields.pickupSite.editable
required |
boolean |
Whether the field can be edited by the user. |
fields.pickupSite.required
required |
boolean |
Whether the field must be filled before the checkout can be completed. |
paymentMethod
required |
ApiCheckoutMethodSelectionResponse |
The selected and available payment methods. |
paymentMethod.selectedId
|
String |
The id of the currently selected method, if any. |
paymentMethod.selectedName
|
String |
The translated name of the currently selected method, if any. |
paymentMethod.values
required |
List<ApiCheckoutMethodOptionResponse> |
All methods currently available for selection. |
paymentMethod.values[].id
required |
String |
The id of the method, to be used in the update request. |
paymentMethod.values[].name
required |
String |
The translated name of the method. |
paymentMethod.values[].requiresAddress
|
Boolean |
Whether this method requires a shipping address. Only present for shipping methods - use it to decide whether to show the address form when this method is selected. |
paymentMethod.values[].requiresPickupSite
|
Boolean |
Whether this method requires a pickup site. Only present for shipping methods - use it to decide whether to show the pickup site selection (see 'pickupSites') when this method is selected. |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the basket. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The computed cost positions of the basket (e.g. shipping costs). Together with the regular positions, these add up to the reported basket sums. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages concerning the basket as a whole, e.g. validation problems or warnings which need to be acknowledged. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
canCommit
required |
boolean |
Whether the basket is in a committable state - false if the checkout is disabled or not permitted, the basket is erroneous or currently locked, or an unacknowledged warning exists. This is a necessary but not a sufficient condition: it does not run the field validation (e.g. a missing required title), which only the validate and complete endpoints perform. Call validate before offering to place the order. |
customFields
required |
Map<String, ApiCheckoutCustomFieldResponse> |
The current custom field values, keyed by field name. Combines shop-configurable 'CustomizableField' values and compiled, customer-specific fields. |
customFields[].label
required |
String |
The translated label of the field. |
customFields[].type
required |
String |
The type of the field, e.g. 'STRING', 'BOOLEAN', 'SELECT'. |
customFields[].value
|
String |
The current value of the field, if any. |
customFields[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this field, e.g. validation problems. May be empty. |
customFields[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
customFields[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
customFields[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
customFields[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
customFields[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
customFields[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
customFieldDefinitions
required |
List<ApiCheckoutCustomFieldDefinitionResponse> |
Describes the shop-configurable custom fields applicable to the basket, so that an app can render fields generically, including ones added later. Does not include the compiled, customer-specific fields contributed by an ApiCheckoutFieldCustomizer, as those are not shop-configurable and are expected to be known to the app in advance. |
customFieldDefinitions[].id
required |
String |
The database id of the field definition. |
customFieldDefinitions[].name
required |
String |
The technical name of the field - the key to use in 'customFields'. |
customFieldDefinitions[].title
required |
String |
The translated title of the field. |
customFieldDefinitions[].type
required |
String |
The type of the field, e.g. 'STRING', 'BOOLEAN', 'SELECT'. |
customFieldDefinitions[].required
required |
boolean |
Whether the field must be filled in order to complete the checkout. |
customFieldDefinitions[].selectValues
|
List<String> |
The selectable values, only present for types like 'SELECT' or 'RADIO'. |
customFieldDefinitions[].hide
required |
boolean |
Whether the field should be kept hidden instead of shown as input. |
Complete Checkout
Completes (commits) the checkout and returns the order confirmation. v1 only supports the 'plain' payment method (no external payment provider) - if the selected payment method requires one (e.g. PayPal or Payone), this responds with HTTP 501 instead of completing the order; see the KBA documentation for the tracked follow-up ticket. Optionally acknowledges messages (e.g. a severe stock warning) before completing.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Request Body
| Field | Type | Description |
|---|---|---|
acknowledgedMessageIds
|
List<String> |
The ids of the messages (see 'messages' in the state response) to mark as acknowledged before completing the checkout. |
Response Body
| Field | Type | Description |
|---|---|---|
orderNumber
required |
String |
The order number assigned by the system. |
state
required |
String |
The state of the order. 'ORDERED' for a completed order - 'WAITING_FOR_PAYMENT' may occur on the GET endpoint if a payment was started but never completed.
Example:
ORDERED |
netPrice
|
ApiPriceResponse |
The net sum of the order, present only if prices may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The gross sum of the order, present only if prices may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the order. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The computed cost positions of the order (e.g. shipping costs). Together with the regular positions, these add up to the reported order sums. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages concerning the completed order, e.g. a generated coupon or the hint that the basket was split into several orders. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
Checkout Completion
Returns the confirmation (order number, totals, positions) of the current or last completed checkout of this session. Responds with 404 if no checkout was completed yet.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| includeQuantities | Whether to report the order quantity metadata (minimum order quantity and order step) of every position. Defaults to false, as it costs an item lookup per position. | ||
Response Body
| Field | Type | Description |
|---|---|---|
orderNumber
required |
String |
The order number assigned by the system. |
state
required |
String |
The state of the order. 'ORDERED' for a completed order - 'WAITING_FOR_PAYMENT' may occur on the GET endpoint if a payment was started but never completed.
Example:
ORDERED |
netPrice
|
ApiPriceResponse |
The net sum of the order, present only if prices may be shown for the current price mode. |
netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
grossPrice
|
ApiPriceResponse |
The gross sum of the order, present only if prices may be shown for the current price mode. |
grossPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
grossPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
grossPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions
required |
List<ApiBasketPositionResponse> |
The regular positions of the order. |
positions[].id
required |
String |
The database id of the position. |
positions[].itemNumber
required |
String |
The item number of the position, as shown to the current user. Meant for display only - use 'uniqueItemNumber' to address the item in other endpoints. |
positions[].uniqueItemNumber
|
String |
The unique item number of the item behind this position. This is the number the item and search endpoints expect, and the one to send when adding the item again. |
positions[].shortText
|
String |
The short description of the item, so that the position can be rendered without fetching the item details separately. |
positions[].previewImageUrl
|
String |
The URL of the preview image of the item, if the item has one. |
positions[].quantity
|
ApiQuantityResponse |
The ordered quantity. |
positions[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].quantityUnit
|
String |
The order unit 'quantity' is stated in - the base unit of the item.
Example:
piece |
positions[].displayQuantity
|
ApiQuantityResponse |
The quantity in the alternative sales unit the item was ordered in, present only for positions which use one. Render this together with 'displayQuantityUnit' instead of 'quantity'/'quantityUnit', as the web basket does. |
positions[].displayQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].displayQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].displayQuantityUnit
|
String |
The name of the alternative sales unit the item was ordered in, present only for positions which use one.
Example:
box |
positions[].quantityChangeable
required |
boolean |
Whether the quantity of this position can be changed. |
positions[].priceQuantity
|
ApiQuantityResponse |
The number of units 'netPricePerUnit' refers to. A unit price of 19,99 with a price quantity of 100 means 19,99 per 100 units. Does not apply to 'netPrice', which is always the total of the whole position. |
positions[].priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].minOrderQuantity
|
ApiQuantityResponse |
The minimum quantity which can be ordered of this item, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].orderStep
|
ApiQuantityResponse |
The quantity steps in which this item can be ordered, in the unit reported via 'quantityUnit' - like every quantity of the position, its 'formatted' value carries no unit. Only reported if 'includeQuantities' was requested. |
positions[].orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
positions[].orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
positions[].netPrice
|
ApiPriceResponse |
The total net price of the whole position (quantity times unit price), present only if prices may be shown for the current price mode and position. Render this as the line total - it must not be multiplied by the quantity again. |
positions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].netPricePerUnit
|
ApiPriceResponse |
The net price of a single price quantity of the item (see 'priceQuantity'), present under the same conditions as 'netPrice'. |
positions[].netPricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
positions[].netPricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
positions[].netPricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
positions[].comment
|
String |
The comment attached to this position, if there is one. |
positions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this position, e.g. availability hints. Unlike basket messages these cannot be acknowledged - the position itself has to be corrected (e.g. via the update or remove endpoint) or the message vanishes once its cause is gone. May be empty. |
positions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
positions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
positions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
positions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
positions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
positions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
costPositions
required |
List<ApiBasketCostPositionResponse> |
The computed cost positions of the order (e.g. shipping costs). Together with the regular positions, these add up to the reported order sums. May be empty. |
costPositions[].itemNumber
|
String |
The item number of the cost position, as shown to the current user. |
costPositions[].shortText
required |
String |
The label of the cost position, e.g. 'Shipping costs'. |
costPositions[].netPrice
|
ApiPriceResponse |
The net price of the cost position, present only if prices may be shown for the current price mode. |
costPositions[].netPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
costPositions[].netPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
costPositions[].netPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
costPositions[].messages
required |
List<ApiMessageResponse> |
Messages emitted for this cost position, e.g. an invalid coupon. May be empty. A PROBLEM here blocks the checkout just like a problem on a regular position - and can be its only explanation. Like the messages of a position these cannot be acknowledged. |
costPositions[].messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
costPositions[].messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
costPositions[].messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
costPositions[].messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
costPositions[].messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
costPositions[].messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
messages
required |
List<ApiMessageResponse> |
Messages concerning the completed order, e.g. a generated coupon or the hint that the basket was split into several orders. May be empty. |
messages[].id
|
String |
The id of the message. Present for basket-level messages, absent for position-level messages. Use it to acknowledge the message via the acknowledge endpoint of the basket API or 'acknowledgedMessageIds' of the checkout API. |
messages[].type
required |
String |
The severity of the message.
Example:
WARNING |
messages[].message
required |
String |
The human readable message text. Contains HTML markup if 'raw' is true, plain text otherwise. |
messages[].raw
required |
boolean |
Whether 'message' contains HTML markup (true) or plain text (false). |
messages[].acknowledgeable
required |
boolean |
Whether this message needs to be acknowledged (via its 'id') before the checkout can be completed. |
messages[].acknowledged
required |
boolean |
Whether this message has already been acknowledged. |
Suggest Addresses
Suggests addresses of the buyer's address book matching the given query, to be offered when the user selects a shipping address. Send the 'correlationId' of the picked address along with its fields in the update request.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| query | An optional query to filter the addresses with. Omit it to list the first addresses. | ||
Response Body
| Field | Type | Description |
|---|---|---|
addresses
required |
List<ApiCheckoutAddressResponse> |
The matching addresses, including their 'correlationId' to be sent back when the user picks one. May be empty. |
addresses[].name1
|
String |
The first name/company line. |
addresses[].name2
|
String |
The second name/company line. |
addresses[].name3
|
String |
The third name/company line. |
addresses[].street
|
String |
The street and house number. |
addresses[].zip
|
String |
The ZIP code. |
addresses[].city
|
String |
The city. |
addresses[].countryCode
|
String |
The ISO country code.
Example:
DE |
addresses[].countryName
|
String |
The translated country name. |
addresses[].correlationId
|
String |
Links this address to an entry of the buyer's address book, if it currently is a known address. Absent for a manually entered address - which also happens once the fields of a previously linked address are edited. Send it back unchanged (along with the unchanged fields) to keep the link. |
Suggest Projects
Suggests projects available to the buyer matching the given query, to be offered when the user selects a project. Send the 'id' of the picked project as 'projectId' in the update request.
Parameter
| Name | Description | Example | |
|---|---|---|---|
| query | An optional query to filter the projects with. Omit it to list the first projects. | ||
Response Body
| Field | Type | Description |
|---|---|---|
projects
required |
List<ApiCheckoutProjectResponse> |
The matching projects. May be empty. |
projects[].id
required |
String |
The id of the project, to be used as 'projectId' in the update request. |
projects[].name
required |
String |
The name of the project. |
Favorites
List Favorite Lists
Lists the favorite lists visible to the current buyer: their own private lists as well as the shared lists of their customer, sorted by position and name. Each entry carries the category used to group lists - entries without a category should be grouped under a label of the client's own choosing - along with the 'editable' flag and the number of favorites the list contains.
Response Body
| Field | Type | Description |
|---|---|---|
lists
required |
List<ApiFavoriteListOverviewResponse> |
The favorite lists available to the current buyer, sorted by position and name. Use the category of each list to group them. |
lists[].id
required |
String |
The database id of the favorite list. |
lists[].name
required |
String |
The displayable name of the favorite list. |
lists[].category
|
String |
The category used to group favorite lists. Absent if the list has no category assigned. Clients should group uncategorized lists under a label of their own choosing. |
lists[].position
required |
int |
The sort position of the list within its category. Lists are already sorted by position and name. |
lists[].privateList
required |
boolean |
Whether the list is private to the current buyer or shared with all buyers of the customer. |
lists[].editable
required |
boolean |
Whether the current buyer may modify the list and its favorites. |
lists[].editableByColleagues
required |
boolean |
Whether other buyers of the customer may modify this shared list. Always false for private lists. Report this value back when updating a list, otherwise the setting is overwritten. |
lists[].favoriteCount
required |
long |
The number of favorites in the list. |
Create Favorite List
Creates a new favorite list for the current buyer. Lists are private by default - a non-private list is visible to all buyers of the customer and may optionally be made editable for them as well. Responds with 400 if the name is missing or already used by another list of the same category.
Request Body
| Field | Type | Description |
|---|---|---|
name
required |
String |
The displayable name of the new favorite list. Must be unique per category.
Example:
Construction site A |
category
|
String |
The category used to group favorite lists.
Example:
Projects |
privateList
|
Boolean |
Whether the list is private to the current buyer or shared with all buyers of the customer. Defaults to true. |
editableByColleagues
|
Boolean |
Whether other buyers of the customer may modify the shared list. Defaults to false. |
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the favorite list. |
name
required |
String |
The displayable name of the favorite list. |
category
|
String |
The category used to group favorite lists. Absent if the list has no category assigned. Clients should group uncategorized lists under a label of their own choosing. |
position
required |
int |
The sort position of the list within its category. Lists are already sorted by position and name. |
privateList
required |
boolean |
Whether the list is private to the current buyer or shared with all buyers of the customer. |
editable
required |
boolean |
Whether the current buyer may modify the list and its favorites. |
editableByColleagues
required |
boolean |
Whether other buyers of the customer may modify this shared list. Always false for private lists. Report this value back when updating a list, otherwise the setting is overwritten. |
favoriteCount
required |
long |
The number of favorites in the list. |
Update Favorite List
Updates the name, category or visibility settings of a favorite list. Omitted fields are left unchanged, an empty category clears the category. The visibility settings ('privateList' and 'editableByColleagues') of a list belonging to another buyer can only be changed by that buyer, as they decide who may see the list at all. Responds with 404 if the list does not exist or is not accessible, with 403 if it is not editable by the current buyer ('not_editable') or if a visibility change was attempted on a colleague's list ('not_list_owner'), and with 400 if the new name is empty or already used by another list of the same category.
Request Body
| Field | Type | Description |
|---|---|---|
listId
required |
String |
The database id of the favorite list to update. |
name
|
String |
The new displayable name of the favorite list. Must be unique per category. Omit to keep the current name.
Example:
Construction site B |
category
|
String |
The new category of the favorite list. Pass an empty string to clear the category. Omit to keep the current category.
Example:
Projects |
privateList
|
Boolean |
Whether the list is private to the current buyer or shared with all buyers of the customer. Omit to keep the current setting. |
editableByColleagues
|
Boolean |
Whether other buyers of the customer may modify the shared list. Omit to keep the current setting. |
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the favorite list. |
name
required |
String |
The displayable name of the favorite list. |
category
|
String |
The category used to group favorite lists. Absent if the list has no category assigned. Clients should group uncategorized lists under a label of their own choosing. |
position
required |
int |
The sort position of the list within its category. Lists are already sorted by position and name. |
privateList
required |
boolean |
Whether the list is private to the current buyer or shared with all buyers of the customer. |
editable
required |
boolean |
Whether the current buyer may modify the list and its favorites. |
editableByColleagues
required |
boolean |
Whether other buyers of the customer may modify this shared list. Always false for private lists. Report this value back when updating a list, otherwise the setting is overwritten. |
favoriteCount
required |
long |
The number of favorites in the list. |
Remove Favorite Lists
Removes one or more favorite lists along with the favorites they contain. All lists are validated first and removed together - a request with an unknown list id (404) or a list which is not editable (403) is rejected as a whole and nothing is removed.
Request Body
| Field | Type | Description |
|---|---|---|
listIds
required |
List<String> |
The database ids of the favorite lists to remove. All lists are validated before any list is removed. |
Response Body
| Field | Type | Description |
|---|---|---|
removedCount
required |
int |
The number of favorite lists which have been removed. |
Favorite List Details
Returns a single favorite list along with the requested page of its favorites, sorted by position. Each favorite carries its stored quantity and the item data in the same format as delivered by the search API - favorites whose item is no longer available in the shop keep their item number but come without an item block. Responds with 404 if the list does not exist or is not accessible.
Parameters
| Name | Description | Example | |
|---|---|---|---|
|
listId
Required
|
The id of the favorite list to read. | ||
| includePrices | Whether to report the price and availability of every item. Defaults to false, as prices may require an ERP round-trip. | ||
| page | The one-based page of favorites to return. Defaults to 1. | ||
| pageSize | The maximum number of favorites per page. Defaults to 25, capped at 100. | ||
Response Body
| Field | Type | Description |
|---|---|---|
id
required |
String |
The database id of the favorite list. |
name
required |
String |
The displayable name of the favorite list. |
category
|
String |
The category used to group favorite lists. Absent if the list has no category assigned. Clients should group uncategorized lists under a label of their own choosing. |
position
required |
int |
The sort position of the list within its category. Lists are already sorted by position and name. |
privateList
required |
boolean |
Whether the list is private to the current buyer or shared with all buyers of the customer. |
editable
required |
boolean |
Whether the current buyer may modify the list and its favorites. |
editableByColleagues
required |
boolean |
Whether other buyers of the customer may modify this shared list. Always false for private lists. Report this value back when updating a list, otherwise the setting is overwritten. |
favoriteCount
required |
long |
The number of favorites in the list. |
page
required |
int |
The one-based number of the returned page. |
pageSize
required |
int |
The maximum number of favorites per page. |
favorites
required |
List<ApiFavoriteResponse> |
The requested page of favorites, sorted by position. Use favoriteCount to determine the total number of favorites in the list. |
favorites[].id
required |
String |
The database id of the favorite. |
favorites[].position
required |
int |
The sort position of the favorite within the list. Favorites are already sorted by position. |
favorites[].quantity
|
ApiQuantityResponse |
The quantity stored for the favorite. Absent if no quantity has been set. |
favorites[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
favorites[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
favorites[].itemNumber
required |
String |
The item number of the favorite as visible to the current buyer. Remains available even if the item itself is no longer part of the shop. |
favorites[].item
|
ApiSearchItemResponse |
The item data of the favorite, in the same format as delivered by the search API. Absent if the item is no longer available to the buyer - because it was removed, hidden or is no longer part of an accessible catalog. Clients should render such favorites as unavailable using the itemNumber. |
favorites[].item.uniqueItemNumber
required |
String |
The globally unique item number.
Example:
1234567890 |
favorites[].item.visibleItemNumber
required |
String |
The item number as shown to the user.
Example:
1234567 |
favorites[].item.shortDescription
required |
String |
The short, human-readable description of the item.
Example:
Cordless Drill 18V |
favorites[].item.brandName
|
String |
The name of the brand, if any.
Example:
Acme |
favorites[].item.previewImageUrl
|
String |
The URL of the preview image, if any. |
favorites[].item.badges
|
List<ApiBadgeResponse> |
The badges of the item. |
favorites[].item.badges[].label
required |
String |
The displayable label of the badge.
Example:
New |
favorites[].item.badges[].color
|
String |
The text color of the badge as CSS color value, if any.
Example:
#ffffff |
favorites[].item.badges[].backgroundColor
|
String |
The background color of the badge as CSS color value, if any.
Example:
#0d6efd |
favorites[].item.energyClasses
|
List<ApiEnergyClassResponse> |
The energy efficiency classes of the item. |
favorites[].item.energyClasses[].energyClass
required |
String |
The energy efficiency class.
Example:
A+ |
favorites[].item.energyClasses[].energyClassRange
required |
String |
The energy efficiency scale the class belongs to. Must be displayed along with the class.
Example:
A+++ - D |
favorites[].item.energyClasses[].leftArrowImageUrl
|
String |
The URL of the left-pointing arrow image for the class. |
favorites[].item.energyClasses[].rightArrowImageUrl
|
String |
The URL of the right-pointing arrow image for the class. |
favorites[].item.energyClasses[].labelUrl
|
String |
The URL of the full energy label document, if any. |
favorites[].item.energyProductDatasheetUrl
|
String |
The URL of the energy product datasheet, if any. |
favorites[].item.priceAndAvailability
|
ApiPriceAndAvailabilityResponse |
The price and availability of the item. Only present if 'includePrices' was requested and the shop permits loading prices within the search. |
favorites[].item.priceAndAvailability.hasPrice
required |
boolean |
Whether a price could be determined for the current user. |
favorites[].item.priceAndAvailability.price
|
ApiPriceResponse |
The effective price, present if 'hasPrice' is true. The price always refers to 'priceQuantity' units of the item. |
favorites[].item.priceAndAvailability.price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
favorites[].item.priceAndAvailability.price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
favorites[].item.priceAndAvailability.price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
favorites[].item.priceAndAvailability.priceQuantity
|
ApiQuantityResponse |
The quantity the price refers to, present if 'hasPrice' is true. A price of 19,99 with a price quantity of 100 means 19,99 per 100 units. |
favorites[].item.priceAndAvailability.priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
favorites[].item.priceAndAvailability.priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
favorites[].item.priceAndAvailability.availability
|
ApiAvailabilityResponse |
The availability as determined by the standard mechanism, honoring the settings of the current basket: the pickup availability at the selected pickup site if the basket uses pickup shipping, the delivery availability otherwise. The type UNKNOWN can also indicate that the computation did not complete within the time window (timeout or overload) - a retry can then yield a result. |
favorites[].item.priceAndAvailability.availability.type
required |
String |
The stock type, e.g. 'IN_STOCK', 'LOW_STOCK', 'OUT_OF_STOCK' or 'UNKNOWN'.
Example:
IN_STOCK |
favorites[].item.priceAndAvailability.availability.text
required |
String |
A displayable text providing further details on the availability.
Example:
Available |
favorites[].item.priceAndAvailability.availability.additionalText
|
String |
An additional displayable text providing further details on the availability, if present.
Example:
Delivery within 2-3 days |
favorites[].item.globalVariantGroup
|
String |
The global variant group of the item, present if and only if the search actually grouped several matching variants into this entry. Pass this as 'variant' filter to the search endpoint (with the INDIVIDUAL variant mode) to fetch and narrow down all variants of the group. |
favorites[].item.variantCount
|
Integer |
The number of matching variants which were grouped into this entry, present if and only if 'globalVariantGroup' is present (and then always greater than one).
Example:
4 |
Add Favorite
Adds an item to a favorite list, addressed by its unique item number or by an unambiguous visible item number. If no list id is given, the item is added to the private default list of the buyer, which is created on demand - a shared list is never used for this. The quantity defaults to the recommended order quantity of the item. Adding is idempotent per item - if the list already contains the item, the existing favorite is returned unchanged and flagged via 'alreadyExisted'. Responds with 404 if the list or the item does not exist, with 403 if the list is not editable, and with 400 if the quantity is not positive or exceeds the storable range.
Request Body
| Field | Type | Description |
|---|---|---|
listId
|
String |
The database id of the favorite list to add the item to. If omitted, the item is added to the private default list of the current buyer which is created on demand. |
itemNumber
required |
String |
The unique item number of the item to add, as reported by the search and item APIs. The visible item number is accepted as well, as long as it is unambiguous within the shop.
Example:
A-10015 |
quantity
|
BigDecimal |
The quantity to store for the favorite, using a dot as decimal separator. Defaults to the recommended order quantity of the item. Rounded to three decimal places.
Example:
2.5 |
Response Body
| Field | Type | Description |
|---|---|---|
listId
required |
String |
The database id of the favorite list the item was added to. |
listName
required |
String |
The displayable name of the favorite list the item was added to. |
alreadyExisted
required |
boolean |
Whether the item was already contained in the list. Adding is idempotent - the existing favorite is returned unchanged in this case. |
favorite
required |
ApiFavoriteResponse |
The created or already existing favorite. |
favorite.id
required |
String |
The database id of the favorite. |
favorite.position
required |
int |
The sort position of the favorite within the list. Favorites are already sorted by position. |
favorite.quantity
|
ApiQuantityResponse |
The quantity stored for the favorite. Absent if no quantity has been set. |
favorite.quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
favorite.quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
favorite.itemNumber
required |
String |
The item number of the favorite as visible to the current buyer. Remains available even if the item itself is no longer part of the shop. |
favorite.item
|
ApiSearchItemResponse |
The item data of the favorite, in the same format as delivered by the search API. Absent if the item is no longer available to the buyer - because it was removed, hidden or is no longer part of an accessible catalog. Clients should render such favorites as unavailable using the itemNumber. |
favorite.item.uniqueItemNumber
required |
String |
The globally unique item number.
Example:
1234567890 |
favorite.item.visibleItemNumber
required |
String |
The item number as shown to the user.
Example:
1234567 |
favorite.item.shortDescription
required |
String |
The short, human-readable description of the item.
Example:
Cordless Drill 18V |
favorite.item.brandName
|
String |
The name of the brand, if any.
Example:
Acme |
favorite.item.previewImageUrl
|
String |
The URL of the preview image, if any. |
favorite.item.badges
|
List<ApiBadgeResponse> |
The badges of the item. |
favorite.item.badges[].label
required |
String |
The displayable label of the badge.
Example:
New |
favorite.item.badges[].color
|
String |
The text color of the badge as CSS color value, if any.
Example:
#ffffff |
favorite.item.badges[].backgroundColor
|
String |
The background color of the badge as CSS color value, if any.
Example:
#0d6efd |
favorite.item.energyClasses
|
List<ApiEnergyClassResponse> |
The energy efficiency classes of the item. |
favorite.item.energyClasses[].energyClass
required |
String |
The energy efficiency class.
Example:
A+ |
favorite.item.energyClasses[].energyClassRange
required |
String |
The energy efficiency scale the class belongs to. Must be displayed along with the class.
Example:
A+++ - D |
favorite.item.energyClasses[].leftArrowImageUrl
|
String |
The URL of the left-pointing arrow image for the class. |
favorite.item.energyClasses[].rightArrowImageUrl
|
String |
The URL of the right-pointing arrow image for the class. |
favorite.item.energyClasses[].labelUrl
|
String |
The URL of the full energy label document, if any. |
favorite.item.energyProductDatasheetUrl
|
String |
The URL of the energy product datasheet, if any. |
favorite.item.priceAndAvailability
|
ApiPriceAndAvailabilityResponse |
The price and availability of the item. Only present if 'includePrices' was requested and the shop permits loading prices within the search. |
favorite.item.priceAndAvailability.hasPrice
required |
boolean |
Whether a price could be determined for the current user. |
favorite.item.priceAndAvailability.price
|
ApiPriceResponse |
The effective price, present if 'hasPrice' is true. The price always refers to 'priceQuantity' units of the item. |
favorite.item.priceAndAvailability.price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
favorite.item.priceAndAvailability.price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
favorite.item.priceAndAvailability.price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
favorite.item.priceAndAvailability.priceQuantity
|
ApiQuantityResponse |
The quantity the price refers to, present if 'hasPrice' is true. A price of 19,99 with a price quantity of 100 means 19,99 per 100 units. |
favorite.item.priceAndAvailability.priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
favorite.item.priceAndAvailability.priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
favorite.item.priceAndAvailability.availability
|
ApiAvailabilityResponse |
The availability as determined by the standard mechanism, honoring the settings of the current basket: the pickup availability at the selected pickup site if the basket uses pickup shipping, the delivery availability otherwise. The type UNKNOWN can also indicate that the computation did not complete within the time window (timeout or overload) - a retry can then yield a result. |
favorite.item.priceAndAvailability.availability.type
required |
String |
The stock type, e.g. 'IN_STOCK', 'LOW_STOCK', 'OUT_OF_STOCK' or 'UNKNOWN'.
Example:
IN_STOCK |
favorite.item.priceAndAvailability.availability.text
required |
String |
A displayable text providing further details on the availability.
Example:
Available |
favorite.item.priceAndAvailability.availability.additionalText
|
String |
An additional displayable text providing further details on the availability, if present.
Example:
Delivery within 2-3 days |
favorite.item.globalVariantGroup
|
String |
The global variant group of the item, present if and only if the search actually grouped several matching variants into this entry. Pass this as 'variant' filter to the search endpoint (with the INDIVIDUAL variant mode) to fetch and narrow down all variants of the group. |
favorite.item.variantCount
|
Integer |
The number of matching variants which were grouped into this entry, present if and only if 'globalVariantGroup' is present (and then always greater than one).
Example:
4 |
Update Favorites
Changes the stored quantities of one or more favorites of a favorite list. All changes are validated first and applied together - a request with an unknown favorite id (404) or a non-positive quantity (400) is rejected as a whole. Duplicate favorite ids are collapsed to the last entry. The updated quantities are immediately visible to subsequent reads.
Request Body
| Field | Type | Description |
|---|---|---|
listId
required |
String |
The database id of the favorite list owning the favorites. |
favorites
required |
List<ApiFavoriteUpdateEntryRequest> |
The quantity updates to apply. All updates are validated before any update is applied. |
favorites[].favoriteId
required |
String |
The database id of the favorite to update. |
favorites[].quantity
required |
BigDecimal |
The new quantity of the favorite, using a dot as decimal separator. Must be greater than zero and is rounded to three decimal places.
Example:
2.5 |
Response Body
| Field | Type | Description |
|---|---|---|
favorites
required |
List<ApiFavoriteResponse> |
The updated favorites, without their item data. Re-fetch the list to obtain updated item data if required. |
favorites[].id
required |
String |
The database id of the favorite. |
favorites[].position
required |
int |
The sort position of the favorite within the list. Favorites are already sorted by position. |
favorites[].quantity
|
ApiQuantityResponse |
The quantity stored for the favorite. Absent if no quantity has been set. |
favorites[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
favorites[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
favorites[].itemNumber
required |
String |
The item number of the favorite as visible to the current buyer. Remains available even if the item itself is no longer part of the shop. |
favorites[].item
|
ApiSearchItemResponse |
The item data of the favorite, in the same format as delivered by the search API. Absent if the item is no longer available to the buyer - because it was removed, hidden or is no longer part of an accessible catalog. Clients should render such favorites as unavailable using the itemNumber. |
favorites[].item.uniqueItemNumber
required |
String |
The globally unique item number.
Example:
1234567890 |
favorites[].item.visibleItemNumber
required |
String |
The item number as shown to the user.
Example:
1234567 |
favorites[].item.shortDescription
required |
String |
The short, human-readable description of the item.
Example:
Cordless Drill 18V |
favorites[].item.brandName
|
String |
The name of the brand, if any.
Example:
Acme |
favorites[].item.previewImageUrl
|
String |
The URL of the preview image, if any. |
favorites[].item.badges
|
List<ApiBadgeResponse> |
The badges of the item. |
favorites[].item.badges[].label
required |
String |
The displayable label of the badge.
Example:
New |
favorites[].item.badges[].color
|
String |
The text color of the badge as CSS color value, if any.
Example:
#ffffff |
favorites[].item.badges[].backgroundColor
|
String |
The background color of the badge as CSS color value, if any.
Example:
#0d6efd |
favorites[].item.energyClasses
|
List<ApiEnergyClassResponse> |
The energy efficiency classes of the item. |
favorites[].item.energyClasses[].energyClass
required |
String |
The energy efficiency class.
Example:
A+ |
favorites[].item.energyClasses[].energyClassRange
required |
String |
The energy efficiency scale the class belongs to. Must be displayed along with the class.
Example:
A+++ - D |
favorites[].item.energyClasses[].leftArrowImageUrl
|
String |
The URL of the left-pointing arrow image for the class. |
favorites[].item.energyClasses[].rightArrowImageUrl
|
String |
The URL of the right-pointing arrow image for the class. |
favorites[].item.energyClasses[].labelUrl
|
String |
The URL of the full energy label document, if any. |
favorites[].item.energyProductDatasheetUrl
|
String |
The URL of the energy product datasheet, if any. |
favorites[].item.priceAndAvailability
|
ApiPriceAndAvailabilityResponse |
The price and availability of the item. Only present if 'includePrices' was requested and the shop permits loading prices within the search. |
favorites[].item.priceAndAvailability.hasPrice
required |
boolean |
Whether a price could be determined for the current user. |
favorites[].item.priceAndAvailability.price
|
ApiPriceResponse |
The effective price, present if 'hasPrice' is true. The price always refers to 'priceQuantity' units of the item. |
favorites[].item.priceAndAvailability.price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
favorites[].item.priceAndAvailability.price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
favorites[].item.priceAndAvailability.price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
favorites[].item.priceAndAvailability.priceQuantity
|
ApiQuantityResponse |
The quantity the price refers to, present if 'hasPrice' is true. A price of 19,99 with a price quantity of 100 means 19,99 per 100 units. |
favorites[].item.priceAndAvailability.priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
favorites[].item.priceAndAvailability.priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
favorites[].item.priceAndAvailability.availability
|
ApiAvailabilityResponse |
The availability as determined by the standard mechanism, honoring the settings of the current basket: the pickup availability at the selected pickup site if the basket uses pickup shipping, the delivery availability otherwise. The type UNKNOWN can also indicate that the computation did not complete within the time window (timeout or overload) - a retry can then yield a result. |
favorites[].item.priceAndAvailability.availability.type
required |
String |
The stock type, e.g. 'IN_STOCK', 'LOW_STOCK', 'OUT_OF_STOCK' or 'UNKNOWN'.
Example:
IN_STOCK |
favorites[].item.priceAndAvailability.availability.text
required |
String |
A displayable text providing further details on the availability.
Example:
Available |
favorites[].item.priceAndAvailability.availability.additionalText
|
String |
An additional displayable text providing further details on the availability, if present.
Example:
Delivery within 2-3 days |
favorites[].item.globalVariantGroup
|
String |
The global variant group of the item, present if and only if the search actually grouped several matching variants into this entry. Pass this as 'variant' filter to the search endpoint (with the INDIVIDUAL variant mode) to fetch and narrow down all variants of the group. |
favorites[].item.variantCount
|
Integer |
The number of matching variants which were grouped into this entry, present if and only if 'globalVariantGroup' is present (and then always greater than one).
Example:
4 |
Remove Favorites
Removes one or more favorites from a favorite list. All favorites are validated first and removed together - a request with an unknown favorite id is rejected as a whole with 404 and nothing is removed.
Request Body
| Field | Type | Description |
|---|---|---|
listId
required |
String |
The database id of the favorite list owning the favorites. |
favoriteIds
required |
List<String> |
The database ids of the favorites to remove. All favorites are validated before any favorite is removed. |
Response Body
| Field | Type | Description |
|---|---|---|
removedCount
required |
int |
The number of favorites which have been removed. |
Items
Item Details
Returns the index-backed detail data of a single item - everything needed to render an item detail page without waiting for an ERP round-trip. Prices and availability are provided by the price endpoint, or - at the cost of waiting for the price computation - via the 'includePrices' flag.
Parameters
| Name | Description | Example | |
|---|---|---|---|
|
uniqueItemNumber
Required
|
The globally unique item number of the item to fetch. | ||
| includeBadges | Whether to include badges, energy efficiency classes and the energy product datasheet. Defaults to true. | ||
| includeFeatures | Whether to include the product features. Defaults to true. | ||
| includePrices | Whether to include the price and availability. This makes the otherwise ERP-free call wait for the price computation and is ignored if the shop disables price loading. Defaults to false. | ||
| includeQuantities | Whether to include the order quantity metadata and index-backed packaging units. Defaults to true. | ||
| includeTexts | Whether to include the long description and additional frontend texts. Defaults to true. | ||
| recordVisit | Whether to record the request as item visit for the recently viewed list. Disable this for prefetching. Defaults to true. | ||
Response Body
| Field | Type | Description |
|---|---|---|
uniqueItemNumber
required |
String |
The globally unique item number.
Example:
1234567890 |
visibleItemNumber
required |
String |
The item number as shown to the user.
Example:
1234567 |
shortDescription
required |
String |
The short, human-readable description of the item.
Example:
Cordless Drill 18V |
brandName
|
String |
The name of the brand, if any.
Example:
Acme |
brandImageUrl
|
String |
The URL of the brand logo, if any. |
previewImageUrl
|
String |
The URL of the preview image, if any. |
globalVariantGroup
|
String |
The global variant group of the item, present if and only if the item belongs to a group of several variants. Pass this as 'variant' filter to the navigator search API to fetch and narrow down all variants. |
texts
|
ApiItemTextsResponse |
The descriptive texts of the item. Only present if 'includeTexts' is set. |
texts.longDescription
|
String |
The long description of the item as XHTML, if any. |
texts.additionalTexts
|
List<ApiItemAdditionalTextResponse> |
Additional texts to display on the item detail page. |
texts.additionalTexts[].label
required |
String |
The label of the additional text. |
texts.additionalTexts[].text
required |
String |
The additional text itself. |
features
|
List<ApiItemFeatureResponse> |
The product features of the item. Only present if 'includeFeatures' is set. |
features[].code
required |
String |
The stable code of the feature. |
features[].name
required |
String |
The translated name of the feature.
Example:
Voltage |
features[].values
required |
List<String> |
The displayable values of the feature.
Example:
["18 V"] |
badges
|
List<ApiBadgeResponse> |
The badges of the item. Only present if 'includeBadges' is set. |
badges[].label
required |
String |
The displayable label of the badge.
Example:
New |
badges[].color
|
String |
The text color of the badge as CSS color value, if any.
Example:
#ffffff |
badges[].backgroundColor
|
String |
The background color of the badge as CSS color value, if any.
Example:
#0d6efd |
energyClasses
|
List<ApiEnergyClassResponse> |
The energy efficiency classes of the item. Only present if 'includeBadges' is set. |
energyClasses[].energyClass
required |
String |
The energy efficiency class.
Example:
A+ |
energyClasses[].energyClassRange
required |
String |
The energy efficiency scale the class belongs to. Must be displayed along with the class.
Example:
A+++ - D |
energyClasses[].leftArrowImageUrl
|
String |
The URL of the left-pointing arrow image for the class. |
energyClasses[].rightArrowImageUrl
|
String |
The URL of the right-pointing arrow image for the class. |
energyClasses[].labelUrl
|
String |
The URL of the full energy label document, if any. |
energyProductDatasheetUrl
|
String |
The URL of the energy product datasheet, if any. Only present if 'includeBadges' is set. |
quantities
|
ApiItemQuantitiesResponse |
The order quantity metadata of the item. Only present if 'includeQuantities' is set. |
quantities.quantityUnit
required |
String |
The displayable order unit of the item.
Example:
piece |
quantities.minOrderQuantity
required |
ApiQuantityResponse |
The minimal order quantity. |
quantities.minOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
quantities.minOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
quantities.orderStep
required |
ApiQuantityResponse |
The step in which the order quantity can be increased. |
quantities.orderStep.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
quantities.orderStep.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
quantities.priceQuantity
required |
ApiQuantityResponse |
The quantity the price refers to. |
quantities.priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
quantities.priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
quantities.recommendedOrderQuantity
|
ApiQuantityResponse |
The recommended order quantity, if any. |
quantities.recommendedOrderQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
quantities.recommendedOrderQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
quantities.packagingUnits
|
List<ApiItemPackagingUnitResponse> |
The packaging units of the item as known from the index - only the quantity is available synchronously. The price response carries the same units enriched with their name and price per unit (match the entries by their quantity). |
quantities.packagingUnits[].name
|
String |
The name of the packaging unit, as provided by the ERP - hence only present in the price response.
Example:
Box |
quantities.packagingUnits[].quantity
required |
ApiQuantityResponse |
The quantity contained in the packaging unit. |
quantities.packagingUnits[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
quantities.packagingUnits[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
quantities.packagingUnits[].pricePerUnit
|
ApiPriceResponse |
The price per packaging unit, if known. |
quantities.packagingUnits[].pricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
quantities.packagingUnits[].pricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
quantities.packagingUnits[].pricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
priceAndAvailability
|
ApiPriceAndAvailabilityResponse |
The price and availability of the item. Only present if 'includePrices' is set and the shop permits loading prices within the item detail endpoint. Requesting this makes the otherwise ERP-free call wait for the price computation. |
priceAndAvailability.hasPrice
required |
boolean |
Whether a price could be determined for the current user. |
priceAndAvailability.price
|
ApiPriceResponse |
The effective price, present if 'hasPrice' is true. The price always refers to 'priceQuantity' units of the item. |
priceAndAvailability.price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
priceAndAvailability.price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
priceAndAvailability.price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
priceAndAvailability.priceQuantity
|
ApiQuantityResponse |
The quantity the price refers to, present if 'hasPrice' is true. A price of 19,99 with a price quantity of 100 means 19,99 per 100 units. |
priceAndAvailability.priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
priceAndAvailability.priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
priceAndAvailability.availability
|
ApiAvailabilityResponse |
The availability as determined by the standard mechanism, honoring the settings of the current basket: the pickup availability at the selected pickup site if the basket uses pickup shipping, the delivery availability otherwise. The type UNKNOWN can also indicate that the computation did not complete within the time window (timeout or overload) - a retry can then yield a result. |
priceAndAvailability.availability.type
required |
String |
The stock type, e.g. 'IN_STOCK', 'LOW_STOCK', 'OUT_OF_STOCK' or 'UNKNOWN'.
Example:
IN_STOCK |
priceAndAvailability.availability.text
required |
String |
A displayable text providing further details on the availability.
Example:
Available |
priceAndAvailability.availability.additionalText
|
String |
An additional displayable text providing further details on the availability, if present.
Example:
Delivery within 2-3 days |
Item Prices and Availabilities
Returns the ERP-backed prices and the applicable availabilities of one or more items. Each item carries either the standard availability (honoring the current basket settings) or - if pickup sites were requested - the pickup availabilities at these sites. May involve an ERP round-trip.
Request Body
| Field | Type | Description |
|---|---|---|
items
required |
List<ApiItemPriceRequestItem> |
The items to fetch the price data for. At least one item is required, and the number of items per request is limited (50 by default, configurable per shop) - chunk larger lists accordingly. Unknown or inaccessible item numbers are skipped - the response then simply carries no entry for them. |
items[].uniqueItemNumber
required |
String |
The globally unique item number of the item to fetch the price data for.
Example:
1234567890 |
items[].quantity
|
BigDecimal |
The quantity used for the extended availability of this item. Defaults to the minimal order quantity. Prices are always computed for the default quantity - quantity-dependent prices are covered by the graduated prices.
Example:
10 |
onlyAvailability
|
boolean |
Whether to skip all price fields and only compute the availabilities. |
includePriceScales
|
boolean |
Whether to include the graduated prices. |
includePriceAdditions
|
boolean |
Whether to include the price additions (surcharges). |
pickupSiteCodes
|
List<String> |
The sites to determine the pickup availability for. If given, each item carries the pickup availability at exactly these sites instead of the standard availability. If empty, the standard availability mechanism is used, which honors the settings of the current basket (pickup availability at the selected pickup site, or the delivery availability).
Example:
["MAIN"] |
Response Body
| Field | Type | Description |
|---|---|---|
priceMode
required |
String |
The price mode of the current user, e.g. 'NET' or 'GROSS'. |
effectivePriceLabel
|
String |
The displayable label to use for the effective prices, e.g. 'Your price'. Absent if 'onlyAvailability' was requested. |
effectivePriceSuffix
|
String |
The displayable suffix to show next to the effective prices, e.g. 'plus VAT'. Absent if 'onlyAvailability' was requested. |
recommendedPriceLabel
|
String |
The displayable label to use for the recommended prices, e.g. 'list price'. Absent if 'onlyAvailability' was requested. |
secondaryPriceSuffix
|
String |
The displayable suffix to show next to the secondary prices, e.g. 'incl. VAT'. Absent if 'onlyAvailability' was requested. |
items
required |
List<ApiItemPriceItemResponse> |
The price and availability data per requested item, in the order of the request. |
items[].uniqueItemNumber
required |
String |
The globally unique item number the price data belongs to.
Example:
1234567890 |
items[].priceAndAvailability
required |
ApiPriceAndAvailabilityResponse |
The price and availability of the item - the same shared block as returned by the search and item detail endpoints. Its 'availability' is only present in the standard case: if 'pickupSiteCodes' were given, the pickup availabilities in 'pickupStocks' replace it. |
items[].priceAndAvailability.hasPrice
required |
boolean |
Whether a price could be determined for the current user. |
items[].priceAndAvailability.price
|
ApiPriceResponse |
The effective price, present if 'hasPrice' is true. The price always refers to 'priceQuantity' units of the item. |
items[].priceAndAvailability.price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].priceAndAvailability.price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].priceAndAvailability.price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].priceAndAvailability.priceQuantity
|
ApiQuantityResponse |
The quantity the price refers to, present if 'hasPrice' is true. A price of 19,99 with a price quantity of 100 means 19,99 per 100 units. |
items[].priceAndAvailability.priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
items[].priceAndAvailability.priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
items[].priceAndAvailability.availability
|
ApiAvailabilityResponse |
The availability as determined by the standard mechanism, honoring the settings of the current basket: the pickup availability at the selected pickup site if the basket uses pickup shipping, the delivery availability otherwise. The type UNKNOWN can also indicate that the computation did not complete within the time window (timeout or overload) - a retry can then yield a result. |
items[].priceAndAvailability.availability.type
required |
String |
The stock type, e.g. 'IN_STOCK', 'LOW_STOCK', 'OUT_OF_STOCK' or 'UNKNOWN'.
Example:
IN_STOCK |
items[].priceAndAvailability.availability.text
required |
String |
A displayable text providing further details on the availability.
Example:
Available |
items[].priceAndAvailability.availability.additionalText
|
String |
An additional displayable text providing further details on the availability, if present.
Example:
Delivery within 2-3 days |
items[].offer
required |
boolean |
Whether the effective price is a special offer. |
items[].canAddToBasket
required |
boolean |
Whether the item can currently be added to the basket. |
items[].messages
required |
List<ApiItemMessageResponse> |
Messages emitted while computing the prices, e.g. ERP hints. May be empty. |
items[].messages[].html
required |
String |
The message as HTML. |
items[].messages[].type
required |
String |
The severity of the message, e.g. 'INFO', 'WARNING' or 'PROBLEM'.
Example:
INFO |
items[].recommendedPrice
|
ApiPriceResponse |
The recommended (list) price, if it should be displayed. |
items[].recommendedPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].recommendedPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].recommendedPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].secondaryPrice
|
ApiPriceResponse |
The secondary price (e.g. the gross price for net shops), if it should be displayed. |
items[].secondaryPrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].secondaryPrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].secondaryPrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].basePrice
|
ApiPriceResponse |
The base price (price per base unit), if any. |
items[].basePrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].basePrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].basePrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].priceScales
|
List<ApiItemPriceScaleResponse> |
The graduated prices of the item. Only present if 'includePriceScales' is set. |
items[].priceScales[].pricePredicate
required |
String |
The condition type of the scale: 'LOWER_LIMIT' (applies from the given quantity on) or 'MODULO' (applies if the quantity is a multiple of the given value).
Example:
LOWER_LIMIT |
items[].priceScales[].conditionValue
required |
ApiQuantityResponse |
The quantity the condition refers to. |
items[].priceScales[].conditionValue.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
items[].priceScales[].conditionValue.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
items[].priceScales[].price
|
ApiPriceResponse |
The list price of the scale. |
items[].priceScales[].price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].priceScales[].price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].priceScales[].price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].priceScales[].effectivePrice
|
ApiPriceResponse |
The effective price of the scale for the current user. |
items[].priceScales[].effectivePrice.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].priceScales[].effectivePrice.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].priceScales[].effectivePrice.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].bestPriceScale
|
ApiItemBestPriceScaleResponse |
The best graduated price, if it should be displayed. |
items[].bestPriceScale.prefix
|
String |
The displayable prefix, e.g. 'from'.
Example:
from |
items[].bestPriceScale.price
required |
ApiPriceResponse |
The best effective scale price. |
items[].bestPriceScale.price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].bestPriceScale.price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].bestPriceScale.price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].bestPriceScale.suffix
|
String |
The displayable suffix describing the condition, e.g. '>= 100 piece'. |
items[].priceAdditions
|
List<ApiItemPriceAdditionResponse> |
The price additions (surcharges) of the item. Only present if 'includePriceAdditions' is set. |
items[].priceAdditions[].description
required |
String |
The displayable description of the addition.
Example:
Copper surcharge |
items[].priceAdditions[].value
required |
ApiPriceResponse |
The value of the addition. |
items[].priceAdditions[].value.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].priceAdditions[].value.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].priceAdditions[].value.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].priceAdditions[].showPriceQuantity
required |
boolean |
Whether the addition refers to the price quantity of the item. |
items[].packagingUnits
|
List<ApiItemPackagingUnitResponse> |
The packaging units of the item, as provided by the ERP along with the prices. Only present when prices were computed. |
items[].packagingUnits[].name
|
String |
The name of the packaging unit, as provided by the ERP - hence only present in the price response.
Example:
Box |
items[].packagingUnits[].quantity
required |
ApiQuantityResponse |
The quantity contained in the packaging unit. |
items[].packagingUnits[].quantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
items[].packagingUnits[].quantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
items[].packagingUnits[].pricePerUnit
|
ApiPriceResponse |
The price per packaging unit, if known. |
items[].packagingUnits[].pricePerUnit.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].packagingUnits[].pricePerUnit.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].packagingUnits[].pricePerUnit.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].extendedAvailability
|
ApiAvailabilityResponse |
The extended (manufacturer) availability, complementing the standard availability. The server requests it automatically whenever the ERP availability is inconclusive. Never present when 'pickupSiteCodes' were given. |
items[].extendedAvailability.type
required |
String |
The stock type, e.g. 'IN_STOCK', 'LOW_STOCK', 'OUT_OF_STOCK' or 'UNKNOWN'.
Example:
IN_STOCK |
items[].extendedAvailability.text
required |
String |
A displayable text providing further details on the availability.
Example:
Available |
items[].extendedAvailability.additionalText
|
String |
An additional displayable text providing further details on the availability, if present.
Example:
Delivery within 2-3 days |
items[].pickupStocks
|
List<ApiItemPickupStockResponse> |
The pickup availabilities at the requested sites. Only present if 'pickupSiteCodes' were given, and then carries exactly those sites (replacing the standard availability). |
items[].pickupStocks[].siteCode
required |
String |
The code of the pickup site. |
items[].pickupStocks[].availability
required |
ApiAvailabilityResponse |
The availability at the pickup site. |
items[].pickupStocks[].availability.type
required |
String |
The stock type, e.g. 'IN_STOCK', 'LOW_STOCK', 'OUT_OF_STOCK' or 'UNKNOWN'.
Example:
IN_STOCK |
items[].pickupStocks[].availability.text
required |
String |
A displayable text providing further details on the availability.
Example:
Available |
items[].pickupStocks[].availability.additionalText
|
String |
An additional displayable text providing further details on the availability, if present.
Example:
Delivery within 2-3 days |
items[].pickupStocks[].external
required |
boolean |
Whether the stock information originates from an external source. |
Recently Viewed Items
Returns the recently viewed items of the current session, most recent first. Requires the session cookie to be sent along - see the documentation for details.
Response Body
| Field | Type | Description |
|---|---|---|
items
required |
List<ApiItemSummaryResponse> |
The recently viewed items, most recent first. Empty if the feature is disabled or no visits were recorded yet. |
items[].uniqueItemNumber
required |
String |
The globally unique item number.
Example:
1234567890 |
items[].visibleItemNumber
required |
String |
The item number as shown to the user.
Example:
1234567 |
items[].shortDescription
required |
String |
The short, human-readable description of the item.
Example:
Cordless Drill 18V |
items[].brandName
|
String |
The name of the brand, if any.
Example:
Acme |
items[].previewImageUrl
|
String |
The URL of the preview image, if any. |
search
Search products
Searches products with a typed query, filters, sorting, paging and a grouped or individual variant mode. The response contains the items, typed choice facets, pagination info and the total number of hits. As a sort mode may be unavailable for the current shop, user or result, the response also reports the effectively applied and the currently available sort modes.
Request Body
| Field | Type | Description |
|---|---|---|
query
|
String |
The free-text search query.
Example:
cordless drill |
filters
|
List<ApiSearchFilterValue> |
The active filters to apply, e.g. brand, price range or feature filters. |
filters[].name
required |
String |
The name of the filter, e.g. 'brand', 'price-min' or 'feature[code]'. |
filters[].value
required |
String |
The value to set for the filter. |
sort
|
ApiSearchSortMode |
The sort mode to apply. Defaults to 'RELEVANCE'. Note that not every mode is available for every request - an unavailable mode silently falls back, so check 'appliedSort' and 'availableSorts' of the response.
Example:
RELEVANCE |
page
|
Integer |
The requested page, starting at 1.
Example:
1 |
pageSize
|
Integer |
The number of items to return per page.
Example:
20 |
variantMode
|
ApiSearchVariantMode |
Determines whether variants of the same item are grouped into a single result entry.
Example:
GROUPED |
includePrices
|
boolean |
Whether to load prices and availabilities for the items of the result page. Loading them may require an ERP round-trip and can increase the response time noticeably. Only honored if the shop permits price loading within the search. |
Response Body
| Field | Type | Description |
|---|---|---|
totalHits
required |
int |
The total number of items matching the search. |
items
|
List<ApiSearchItemResponse> |
The items on the requested page. |
items[].uniqueItemNumber
required |
String |
The globally unique item number.
Example:
1234567890 |
items[].visibleItemNumber
required |
String |
The item number as shown to the user.
Example:
1234567 |
items[].shortDescription
required |
String |
The short, human-readable description of the item.
Example:
Cordless Drill 18V |
items[].brandName
|
String |
The name of the brand, if any.
Example:
Acme |
items[].previewImageUrl
|
String |
The URL of the preview image, if any. |
items[].badges
|
List<ApiBadgeResponse> |
The badges of the item. |
items[].badges[].label
required |
String |
The displayable label of the badge.
Example:
New |
items[].badges[].color
|
String |
The text color of the badge as CSS color value, if any.
Example:
#ffffff |
items[].badges[].backgroundColor
|
String |
The background color of the badge as CSS color value, if any.
Example:
#0d6efd |
items[].energyClasses
|
List<ApiEnergyClassResponse> |
The energy efficiency classes of the item. |
items[].energyClasses[].energyClass
required |
String |
The energy efficiency class.
Example:
A+ |
items[].energyClasses[].energyClassRange
required |
String |
The energy efficiency scale the class belongs to. Must be displayed along with the class.
Example:
A+++ - D |
items[].energyClasses[].leftArrowImageUrl
|
String |
The URL of the left-pointing arrow image for the class. |
items[].energyClasses[].rightArrowImageUrl
|
String |
The URL of the right-pointing arrow image for the class. |
items[].energyClasses[].labelUrl
|
String |
The URL of the full energy label document, if any. |
items[].energyProductDatasheetUrl
|
String |
The URL of the energy product datasheet, if any. |
items[].priceAndAvailability
|
ApiPriceAndAvailabilityResponse |
The price and availability of the item. Only present if 'includePrices' was requested and the shop permits loading prices within the search. |
items[].priceAndAvailability.hasPrice
required |
boolean |
Whether a price could be determined for the current user. |
items[].priceAndAvailability.price
|
ApiPriceResponse |
The effective price, present if 'hasPrice' is true. The price always refers to 'priceQuantity' units of the item. |
items[].priceAndAvailability.price.amount
required |
BigDecimal |
The machine-readable price amount, using a dot as decimal separator.
Example:
19.99 |
items[].priceAndAvailability.price.currencyCode
required |
String |
The ISO 4217 currency code of the price.
Example:
EUR |
items[].priceAndAvailability.price.formatted
required |
String |
The price, formatted according to the current shop and locale settings.
Example:
19,99 € |
items[].priceAndAvailability.priceQuantity
|
ApiQuantityResponse |
The quantity the price refers to, present if 'hasPrice' is true. A price of 19,99 with a price quantity of 100 means 19,99 per 100 units. |
items[].priceAndAvailability.priceQuantity.value
required |
BigDecimal |
The machine-readable quantity, using a dot as decimal separator.
Example:
2.5 |
items[].priceAndAvailability.priceQuantity.formatted
required |
String |
The quantity, formatted according to the current shop and locale settings.
Example:
2,5 |
items[].priceAndAvailability.availability
|
ApiAvailabilityResponse |
The availability as determined by the standard mechanism, honoring the settings of the current basket: the pickup availability at the selected pickup site if the basket uses pickup shipping, the delivery availability otherwise. The type UNKNOWN can also indicate that the computation did not complete within the time window (timeout or overload) - a retry can then yield a result. |
items[].priceAndAvailability.availability.type
required |
String |
The stock type, e.g. 'IN_STOCK', 'LOW_STOCK', 'OUT_OF_STOCK' or 'UNKNOWN'.
Example:
IN_STOCK |
items[].priceAndAvailability.availability.text
required |
String |
A displayable text providing further details on the availability.
Example:
Available |
items[].priceAndAvailability.availability.additionalText
|
String |
An additional displayable text providing further details on the availability, if present.
Example:
Delivery within 2-3 days |
items[].globalVariantGroup
|
String |
The global variant group of the item, present if and only if the search actually grouped several matching variants into this entry. Pass this as 'variant' filter to the search endpoint (with the INDIVIDUAL variant mode) to fetch and narrow down all variants of the group. |
items[].variantCount
|
Integer |
The number of matching variants which were grouped into this entry, present if and only if 'globalVariantGroup' is present (and then always greater than one).
Example:
4 |
facets
|
List<ApiSearchFacetResponse> |
The available facets to further narrow down the search. |
facets[].code
required |
String |
The stable code used to activate a value of this facet, e.g. via 'ApiSearchFilterValue.name'. |
facets[].label
required |
String |
The label to display for this facet. |
facets[].type
required |
ApiSearchFacetType |
The kind of this facet. |
facets[].values
|
List<ApiSearchFacetValueResponse> |
The selectable values of this facet. |
facets[].values[].key
required |
String |
The stable key used to activate this value via 'ApiSearchFilterValue.value'. |
facets[].values[].label
required |
String |
The label to display for this value. |
facets[].values[].count
required |
int |
The number of items matching this value. |
facets[].values[].active
required |
boolean |
Whether this value is currently active/selected. |
pagination
required |
ApiSearchPaginationResponse |
The paging state of this result. |
pagination.page
required |
int |
The effective page which was returned, starting at 1.
Example:
1 |
pagination.pageSize
required |
int |
The effective number of items per page.
Example:
20 |
pagination.hasMore
required |
boolean |
Whether another page can be requested. |
appliedSort
required |
ApiSearchSortMode |
The sort mode which was effectively applied to this result. This may differ from the requested one, as an unavailable mode falls back instead of failing the request. |
availableSorts
required |
List<ApiSearchSortMode> |
The sort modes which can be requested for this result. Use these to build a sort selection - requesting a mode which is absent here falls back to another mode. |
Get search suggestions
Returns ordered suggestions for products, brands, classes and groups matching the query parameter and optional active search filters. Item suggestions expose the unique item number as their value.
Parameters
| Name | Description | Example | |
|---|---|---|---|
|
query
Required
|
The (partial) search phrase to compute suggestions for. | ||
| brand | Example of an active search filter constraining the suggestions. Any filter name supported by the search endpoint can be supplied as an additional query parameter, e.g. 'brand', 'class', 'group[PRODUCT_GROUP]' or 'feature[code]'. | ||
Response Body
| Field | Type | Description |
|---|---|---|
suggestions
required |
List<ApiSearchSuggestionResponse> |
The suggestions grouped in their natural relevance order. |
suggestions[].type
required |
String |
The suggestion category, for example 'brand', 'class', 'group[productGroup]', 'item' or 'variant'. |
suggestions[].value
|
String |
The value to use when applying the suggestion. Item suggestions contain the unique item number instead of a web URL. |
suggestions[].label
required |
String |
The label to display for this suggestion. |
suggestions[].imageUrl
|
String |
An optional image URL for this suggestion. |
suggestions[].description
|
String |
An optional secondary description. |
suggestions[].disabled
required |
boolean |
Whether this entry is informational and cannot be selected. |
Browse brands, classes or groups
Returns cursor-paged brands, classes or groups. For classes and groups, the hierarchy level is derived from a class or group token selected via filters; without such a token, the requested hierarchy level is used and defaults to the root level. Reuse the opaque nextCursor only with an otherwise unchanged request.
Request Body
| Field | Type | Description |
|---|---|---|
type
required |
ApiSearchBrowseType |
The hierarchy type to browse. |
groupType
|
String |
The group type code used for GROUP navigation, for example PRODUCT_GROUP. Defaults to PRODUCT_GROUP if omitted. Ignored for other types. |
query
|
String |
Optional full text query constraining the browsed values. |
filters
|
List<ApiSearchFilterValue> |
Optional active filter context used to constrain the browsed values. |
filters[].name
required |
String |
The name of the filter, e.g. 'brand', 'price-min' or 'feature[code]'. |
filters[].value
required |
String |
The value to set for the filter. |
hierarchyLevel
|
Integer |
The zero-based hierarchy level to aggregate for CLASS and GROUP navigation. If a class or group token is selected via filters, the level is derived from that token and this value is ignored. Otherwise it selects the start level (default 0 for the first/root page) and must be repeated unchanged together with the cursor while paginating. Ignored for BRAND. |
cursor
|
String |
The opaque cursor returned as nextCursor by the preceding browse request. Omit on the first page; do not send placeholder values. |
Response Body
| Field | Type | Description |
|---|---|---|
entries
required |
List<ApiSearchBrowseEntryResponse> |
The hierarchy entries for this page. |
entries[].id
required |
String |
The stable filter value for this hierarchy entry. |
entries[].name
required |
String |
The display name of this hierarchy entry. |
entries[].imageUrl
|
String |
An optional logo or icon URL. |
entries[].description
|
String |
An optional descriptive text, usually containing the item count. |
nextCursor
|
String |
The opaque cursor for the next page, or null when no further page exists. |
hasMore
required |
boolean |
Whether another cursor page is available. |
hierarchyLevel
required |
int |
The hierarchy level represented by this response. |