confirmed status by default.order_add-style event referencing an orderId created earlier (e.g. via POST /orders). Optionally, the full customer/order data can be supplied inline instead:contact (optional): a full contact object, same shape as PUT /contacts. If present, it is upserted first (matched by clientContactId → email → phoneNumber1, same as PUT /contacts) and the resulting contact is linked to the order.order (optional): a full order object, same shape as the order field in POST /orders (including items/fields). If present, it is upserted (matched by orderId/clientOrderId, same as PUT /orders/bulk) instead of only referencing a pre-existing orderId. total is required only when a new order is being created; it is not required when updating a match. Customer identification (contact, or order.contactId/clientContactId/email, or the top-level clientContactId/email) must be resolvable, otherwise the request fails with 422.contactId/contactStatus (created|updated) are present only when contact was given; orderStatus only when order was given. orderId is always present when known (either resolved from order upsert or passed through from the legacy top-level orderId).curl --location '/cart/checkout' \
--header 'Authorization: Bearer JWT' \
--header 'Content-Type: application/json' \
--data '{
"clientContactId": "1245451254",
"orderId": "1245451254",
"permId": "263d7733-b8f5-4f62-9330-525702be7be7"
}'{
"contactId": "8f0daf26-c9bb-40fa-b436-ffe3b89528eb",
"contactStatus": "created",
"orderId": "550e8400-e29b-41d4-a716-446655440000",
"orderStatus": "created",
"status": "confirmed"
}