Skip to content

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.

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:write scope; ordering it needs order:write. These are separate scopes on the same token flow.


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.
  • quantity is 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 MaterialNumber lines in the same checkout.

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": {}
}

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.


  • 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 isAvailable is false, do not order the configuration, and read rejectionReason to see what the customer has to change. On NotCompatible, 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 MaterialNumber line, and a material number will not work in a KomplettPcConfigurationId line.