Order a configured Komplett PC
A Komplett PC is built to order, so you do not order it by material number. You order the
configuration the buyer assembled, using a single order line whose materialId.type is
KomplettPcConfigurationId.
Where the configuration id comes from
Section titled “Where the configuration id comes from”Build the configuration with the KomplettPC API, then save it:
POST /komplettpc/v1/configurations{ "configurationId": "7cceadc4-ff3c-4ea8-80b2-f08d32a91181"}That configurationId is what you order. See
Save configuration for the full request, and
Check configuration availability to
confirm every component is in stock before you charge anyone.
Saving a configuration needs the
komplettpc:writescope; ordering it needsorder:write. These are separate scopes on the same token flow.
Create the checkout
Section titled “Create the checkout”POST /checkout/v1/create{ "orderLines": [ { "materialId": { "type": "KomplettPcConfigurationId", "value": "7cceadc4-ff3c-4ea8-80b2-f08d32a91181" }, "quantity": 1 } ], "delivery": { "deliveryAddress": { "name": "Contoso AS", "addressLine1": "Storgata 1", "postCode": "0151", "city": "Oslo", "country": "NO", "email": "orders@contoso.example" } }}Response — 201 Created
{ "name": "CheckoutId", "value": "019fd6ca09d577e3843e72b436c7007f"}From here the flow is identical to any other checkout: submit it, optionally choosing a delivery option first. See Place a standard order.
Key points:
- One line, one PC. You send a single order line; Komplett expands it into the full component list. Do not send the components as separate lines.
quantityis the number of identical machines to build.- The resulting order shows the PC as a parent line with its components nested underneath — the same shape as a bundle. See the Orders bundle example.
- You can mix a configured PC line with ordinary
MaterialNumberlines in the same checkout.
type is matched exactly
Section titled “type is matched exactly”materialId.type accepts exactly two values, case-sensitively:
MaterialNumber and KomplettPcConfigurationId.
Anything else — including a plausible near-miss like komplettPcConfigurationId or
ConfigurationId — is rejected:
{ "errors": [ { "fieldName": "OrderLines[0].MaterialId.Type", "message": "Only the 'MaterialNumber' or 'KomplettPcConfigurationId' material type is supported." } ], "code": "ERR_VALIDATION_0001", "traceId": "0HNNJ344GRP52:00000005", "type": "https://<store-url>/swagger#Validation", "title": "Validation Failed", "status": 400, "detail": "Some fields have validation errors", "instance": "/checkout/v1/create", "extensions": {}}An assembled PC changes the delivery menu
Section titled “An assembled PC changes the delivery menu”Freight is calculated from what is actually in the checkout, so a heavy assembled machine offers a different set of delivery options than a small item shipped to the same address.
For one address, a single TV returned three options; the PC configuration above returned nine, including several pickup points and two business-delivery options at different prices.
Do not hard-code a menu shape, a count, or a specific option. Always read
delivery.options for the checkout you are about to submit — see
Choose a delivery option.
Before you order
Section titled “Before you order”- Check availability. A configuration references specific components that can go out of stock between saving and ordering. Call check-availability first; stock is calculated from child SKUs and changes frequently, so do not cache the result.
- Respect the compatibility verdict. That same call re-checks whether the components
still work together, because rules change after a configuration is saved. When
isAvailableisfalse, do not order the configuration, and readrejectionReasonto see what the customer has to change. OnNotCompatible, compatibility/configuration names the rule and the conflicting parts. - The configuration must belong to the same store as the checkout.
- A configuration id is not a material number. It will not work in a
MaterialNumberline, and a material number will not work in aKomplettPcConfigurationIdline.