Download OpenAPI specification:
Issues an access token using either the client_credentials or refresh_token grant type. This endpoint does not require authentication.
| grant_type required | string |
| client_id required | string non-empty |
| client_secret required | string non-empty |
| access_token required | string |
| token_type required | string |
| expires_in required | integer <int32> |
| refresh_token | string or null |
{- "grant_type": "client_credentials",
- "client_id": "my-client-id",
- "client_secret": "my-client-secret"
}{- "access_token": "string",
- "token_type": "Bearer",
- "expires_in": 3600,
- "refresh_token": "string"
}Creates an order for the authenticated customer. Note: If a productNumber cannot be resolved, it is added as a cart error internally. This endpoint still returns 201 without a response body.
required | Array of objects (order_create_line_item) non-empty |
| shippingAddressId | string or null <uuid> Optional shipping address id to override the customer's active shipping address. |
| deliveryWeek | integer >= 1 Optional delivery week number (positive integer). If omitted, the server defaults to the current ISO week. |
| reference | string or null Optional order reference. |
object or null Optional one-time delivery address for dropshipment. When provided the order is shipped to this address instead of the customer's active shipping address. The address is not saved to the customer's address book. |
{- "lineItems": [
- {
- "productNumber": "SW-10001",
- "quantity": 2
}
]
}{- "error": "Invalid request body.",
- "exception": "Expected a non-empty-string at key lineItems.0.productNumber"
}Returns a paginated list of customer orders. Optionally filter by status.
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| page | integer <int32> >= 1 Default: 1 Page number (1-based) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
| status | string (order_status) Enum: "Open" "Done" "Paid" "Paid In Full" "Pending Approval" "Pending Fulfillment" "Partially Fulfilled" "Fulfilled" "Partially Billed" "Billed" "Closed" "Cancelled" "In Progress" "Shipped (partially)" "Paid (partially)" "Shipped" "Pending Billing" "Pending Billing/Partially Fulfilled" Optional order status filter (status key). |
| from | string <date> Example: from=2026-01-01 Start date (inclusive) for filtering orders. |
| to | string <date> Example: to=2026-12-31 End date (inclusive) for filtering orders. |
required | object (_meta) Standard pagination metadata |
required | Array of objects (order) |
{- "_meta": {
- "currentPage": 1,
- "hasMore": true,
- "limit": 50,
- "total": 123
}, - "results": [
- {
- "id": "019b9bf3-ebfc-794e-90a4-40d2e62b7491",
- "orderNumber": "SO-1000123",
- "amountNet": 123.45,
- "orderDate": "2026-02-25",
- "reference": "PO-ACME-7788",
- "status": "open"
}
]
}Returns the authenticated customer's profile.
required | object (customer_profile) |
{- "customer": {
- "id": "018f3c3a-4a5e-73b3-a8d3-b1e2f3a4b5c6",
- "defaultBillingAddressId": "018f3c3a-4a5e-73b3-a8d3-b1e2f3a4b5c7",
- "defaultShippingAddressId": "018f3c3a-4a5e-73b3-a8d3-b1e2f3a4b5c8",
- "customerNumber": "C000123",
- "firstName": "Jane",
- "lastName": "Doe",
- "company": "Acme BV",
- "active": true,
- "createdAt": "2026-02-24T09:39:26+00:00",
- "updatedAt": "2026-02-24T09:39:26+00:00",
- "lastLogin": "2026-02-24T09:39:26+00:00",
- "addresses": [
- {
- "id": "018f3c3a-4a5e-73b3-a8d3-b1e2f3a4b5d0",
- "firstName": "Jane",
- "lastName": "Doe",
- "company": "Acme BV",
- "title": "Ms",
- "street": "Main street 1",
- "additionalAddressLine1": null,
- "additionalAddressLine2": null,
- "city": "Torhout",
- "zipCode": "8820",
- "country": {
- "id": "018f3c3a-4a5e-73b3-a8d3-b1e2f3a4b5e0",
- "name": "Belgium",
- "iso": "BE"
}, - "phoneNumber": "+3250123456",
- "createdAt": "2026-02-24T09:39:26+00:00",
- "updatedAt": "2026-02-24T09:39:26+00:00"
}
]
}
}Returns a paginated list of product numbers that belong to the customer's assortment.
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| page | integer <int32> >= 1 Default: 1 Page number (1-based) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
required | object (_meta) Standard pagination metadata |
| results required | Array of strings |
{- "_meta": {
- "currentPage": 1,
- "hasMore": true,
- "limit": 50,
- "total": 123
}, - "results": [
- "SW-10001",
- "SW-10002"
]
}Returns price information for the given comma-separated productNumbers. Only products in the customer's assortment are considered.
| productNumbers required | string non-empty Example: productNumbers=SW-10001,SW-10002 Comma-separated list of product numbers. Example: "SW-10001,SW-10002" |
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
required | object (_meta) Standard pagination metadata |
required | Array of objects (price_result) |
{- "_meta": {
- "currentPage": 1,
- "hasMore": false,
- "limit": 50,
- "total": 2
}, - "results": [
- {
- "productNumber": "SW-10001",
- "minQuantity": 1,
- "unitPrice": 12.34,
- "consumerPrices": {
- "BE": 14.99,
- "NL": 15.49
}
}, - {
- "productNumber": "SW-10002",
- "minQuantity": 5,
- "unitPrice": 9.5,
- "consumerPrices": {
- "BE": 11.95
}
}
]
}Returns a paginated stock mapping for the given comma-separated productNumbers. Only products in the customer's assortment are considered.
| productNumbers required | string non-empty Example: productNumbers=SW-10001,SW-10002 Comma-separated list of product numbers. Example: "SW-10001,SW-10002" |
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| page | integer <int32> >= 1 Default: 1 Page number (1-based) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
required | object (_meta) Standard pagination metadata |
required | object Map of productNumber to stock info (stock is optionally capped by threshold) |
{- "_meta": {
- "currentPage": 1,
- "hasMore": false,
- "limit": 100,
- "total": 2
}, - "results": {
- "SW-10001": {
- "stock": 12
}, - "SW-10002": {
- "stock": 0
}
}
}Returns a paginated list of product numbers that belong to the customer's assortment.
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| page | integer <int32> >= 1 Default: 1 Page number (1-based) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
required | object (_meta) Standard pagination metadata |
| results required | Array of strings |
{- "_meta": {
- "currentPage": 1,
- "hasMore": true,
- "limit": 50,
- "total": 123
}, - "results": [
- "SW-10001",
- "SW-10002"
]
}Returns a paginated stock mapping for the given comma-separated productNumbers. Only products in the customer's assortment are considered.
| productNumbers required | string non-empty Example: productNumbers=SW-10001,SW-10002 Comma-separated list of product numbers. Example: "SW-10001,SW-10002" |
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| page | integer <int32> >= 1 Default: 1 Page number (1-based) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
required | object (_meta) Standard pagination metadata |
required | object Map of productNumber to stock info (stock is optionally capped by threshold) |
{- "_meta": {
- "currentPage": 1,
- "hasMore": false,
- "limit": 100,
- "total": 2
}, - "results": {
- "SW-10001": {
- "stock": 12
}, - "SW-10002": {
- "stock": 0
}
}
}Returns a paginated list of product configurators in the customer's assortment.
| productIds required | string non-empty Example: productIds=e1aad7c3052a443bb1c0e081fffb9dd5,fc6d36cca5fd46738d76e82509525148 Comma-separated list of product IDs. Example: "e1aad7c3052a443bb1c0e081fffb9dd5,fc6d36cca5fd46738d76e82509525148" |
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| page | integer <int32> >= 1 Default: 1 Page number (1-based) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
required | object (_meta) Standard pagination metadata |
required | Array of objects (product_configurator) |
{- "_meta": {
- "currentPage": 1,
- "hasMore": true,
- "limit": 100,
- "total": 100
}, - "results": [
- {
- "id": "005d0d89aecb569294fbbc64bb392710",
- "name": "Configurator - Blokhut - Tuinhuis Kwaspa | 44 mm | vuren groen geïmpregneerd",
- "steps": [
- {
- "id": "b7d4d1dea3715aa7815be7d72255fcc7",
- "name": "Dakbedekking",
- "description": "Kies de dakbedekking voor uw buitenverblijf.",
- "position": 1,
- "isRequired": false,
- "multipleItemsAllowed": false,
- "minItemsRequired": 1,
- "items": [
- {
- "id": "072ac2b7cf0dbae5b3df3455b90a1549",
- "type": "product",
- "product": {
- "id": "db5b53faa9c353e6bef21ef7909b24bb",
- "name": "Easy-pan rood, Kwaspa",
- "productNumber": "P065892",
- "image": {
- "alt": "Hoofdafbeelding"
}
}, - "variants": [ ],
- "quantity": 1,
- "position": 0,
- "substep": null,
- "extraInformation": null,
- "requiresStepId": null,
- "requiresProductId": null
}
]
}
]
}
]
}Returns a paginated list of products in the customer's assortment. Optionally filter by productNumbers (comma-separated).
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| page | integer <int32> >= 1 Default: 1 Page number (1-based) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
| productNumbers required | string non-empty Example: productNumbers=SW-10001,SW-10002 Comma-separated list of product numbers. Example: "SW-10001,SW-10002" |
required | object (_meta) Standard pagination metadata |
required | Array of objects (product) |
{- "_meta": {
- "currentPage": 1,
- "hasMore": true,
- "limit": 100,
- "total": 1234
}, - "results": [
- {
- "productNumber": "K062467",
- "internalSku": "62467",
- "name": "Harvia Trendy XE Kachel 9kW incl. besturing CF9 en 1 doos stenen"
}
]
}Returns a paginated list of product models in the customer's assortment. Optionally filter by productNumbers (comma-separated).
| productNumbers required | string non-empty Example: productNumbers=SW-10001,SW-10002 Comma-separated list of product numbers. Example: "SW-10001,SW-10002" |
| language | string >= 2 characters Default: "nl" Language code (nl, en, de) |
| page | integer <int32> >= 1 Default: 1 Page number (1-based) |
| limit | integer <int32> <= 100 Default: 100 Page size (maximum 100) |
required | object (_meta) Standard pagination metadata |
| results required | Array of any (product_model) |
{- "_meta": {
- "currentPage": 1,
- "hasMore": true,
- "limit": 100,
- "total": 1792
}, - "results": [
- {
- "id": "033d85764f17539098a9dc4a75b9bb2d",
- "productNumber": "Grpitm_tdi_v01_gardenscreen_dronten",
- "variants": [
- {
- "id": "22fc6e671fe450f6a71e01bf278b2109",
- "productNumber": "P002245",
- "internalSku": "2245"
}, - {
- "id": "25a9cf1140fc55bd82ecfc6679c4a7aa",
- "productNumber": "P002243",
- "internalSku": "2243"
}
]
}
]
}