{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://api-evangelist.github.io/schemas/commercetools/order.json", "title": "commercetools Order", "description": "An order created from a cart upon successful checkout in a commercetools Composable Commerce project. Orders capture the immutable state of line items, pricing, addresses, and payment information at the time of purchase.", "type": "object", "required": ["id", "version", "orderState", "lineItems", "customLineItems", "totalPrice"], "properties": { "id": { "type": "string", "description": "System-generated unique identifier for the order." }, "version": { "type": "integer", "minimum": 1, "description": "Current version of the order resource for optimistic concurrency control." }, "key": { "type": "string", "minLength": 2, "maxLength": 256, "pattern": "^[a-zA-Z0-9_-]+$", "description": "User-defined unique key for the order." }, "orderNumber": { "type": "string", "description": "Human-readable order number, unique within the project." }, "purchaseOrderNumber": { "type": "string", "description": "A purchase order number for business-to-business order references." }, "customerId": { "type": "string", "description": "ID of the customer who placed the order." }, "customerEmail": { "type": "string", "format": "email", "description": "Email address of the customer at time of order creation." }, "customerGroup": { "$ref": "#/$defs/Reference", "description": "Customer group of the customer at time of order creation." }, "anonymousId": { "type": "string", "description": "Anonymous session ID for guest checkout orders." }, "businessUnit": { "$ref": "#/$defs/Reference", "description": "Business unit this order belongs to in B2B contexts." }, "store": { "$ref": "#/$defs/Reference", "description": "Store this order was placed in." }, "lineItems": { "type": "array", "items": { "$ref": "#/$defs/LineItem" }, "description": "Product line items captured at the time of order creation." }, "customLineItems": { "type": "array", "items": { "$ref": "#/$defs/CustomLineItem" }, "description": "Custom line items with user-defined pricing captured at order creation." }, "totalPrice": { "$ref": "#/$defs/Money", "description": "Total price of all line items and custom line items." }, "taxedPrice": { "$ref": "#/$defs/TaxedPrice", "description": "Total price including tax breakdown, available when tax calculation is complete." }, "taxMode": { "type": "string", "enum": ["Platform", "External", "ExternalAmount", "Disabled"], "description": "Tax calculation mode used for this order." }, "taxRoundingMode": { "type": "string", "enum": ["HalfEven", "HalfUp", "HalfDown"], "description": "Rounding mode used for tax calculations." }, "taxCalculationMode": { "type": "string", "enum": ["LineItemLevel", "UnitPriceLevel"], "description": "Whether tax is calculated at line item or unit price level." }, "inventoryMode": { "type": "string", "enum": ["None", "TrackOnly", "ReserveOnOrder"], "description": "Inventory tracking mode applied to this order." }, "orderState": { "type": "string", "enum": ["Open", "Confirmed", "Complete", "Cancelled"], "description": "High-level lifecycle state of the order." }, "state": { "$ref": "#/$defs/Reference", "description": "Reference to a custom state machine state for the order." }, "shipmentState": { "type": "string", "enum": ["Shipped", "Ready", "Pending", "Delayed", "Partial", "Backorder"], "description": "Current fulfillment state of the order." }, "paymentState": { "type": "string", "enum": ["Paid", "Pending", "Failed", "CreditOwed", "BalanceDue"], "description": "Current payment state of the order." }, "billingAddress": { "$ref": "#/$defs/Address", "description": "Billing address captured at order creation." }, "shippingAddress": { "$ref": "#/$defs/Address", "description": "Primary shipping address captured at order creation." }, "shippingInfo": { "type": "object", "description": "Shipping method and rate applied to the order." }, "paymentInfo": { "type": "object", "description": "References to payment resources associated with the order." }, "discountCodes": { "type": "array", "items": { "type": "object" }, "description": "Discount codes applied to the order." }, "lineItemCount": { "type": "integer", "description": "Total number of line items in the order." }, "syncInfo": { "type": "array", "items": { "type": "object" }, "description": "Synchronization information for external system integrations." }, "returnInfo": { "type": "array", "items": { "$ref": "#/$defs/ReturnInfo" }, "description": "Return information including returned items and refund state." }, "deliveries": { "type": "array", "items": { "$ref": "#/$defs/Delivery" }, "description": "Delivery records tracking physical fulfillment of order items." }, "createdAt": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the order was created." }, "lastModifiedAt": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the order was last modified." }, "completedAt": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the order reached the Complete state." }, "custom": { "type": "object", "description": "Custom fields and type reference for extended order attributes." } }, "$defs": { "Reference": { "type": "object", "description": "A reference to another commercetools resource by type and ID.", "required": ["typeId", "id"], "properties": { "typeId": { "type": "string", "description": "The type identifier of the referenced resource (e.g., 'product', 'customer')." }, "id": { "type": "string", "description": "The system-generated unique identifier of the referenced resource." } } }, "Money": { "type": "object", "description": "A monetary value with currency code and amount in the smallest currency unit.", "required": ["currencyCode", "centAmount"], "properties": { "currencyCode": { "type": "string", "pattern": "^[A-Z]{3}$", "description": "ISO 4217 three-letter currency code." }, "centAmount": { "type": "integer", "description": "Amount in the smallest indivisible unit of the currency (e.g., cents for USD)." }, "fractionDigits": { "type": "integer", "minimum": 0, "maximum": 20, "description": "Number of fraction digits for the currency." } } }, "TaxedPrice": { "type": "object", "description": "A price with full tax breakdown including total gross, net, and per-rate tax portions.", "required": ["totalNet", "totalGross"], "properties": { "totalNet": { "$ref": "#/$defs/Money", "description": "Total price excluding all taxes." }, "totalGross": { "$ref": "#/$defs/Money", "description": "Total price including all taxes." }, "taxPortions": { "type": "array", "items": { "type": "object" }, "description": "Breakdown of tax portions by rate and name." } } }, "Address": { "type": "object", "description": "A postal address with country and optional structured fields.", "required": ["country"], "properties": { "id": { "type": "string", "description": "Unique identifier for the address within the resource." }, "key": { "type": "string", "description": "User-defined identifier for the address." }, "country": { "type": "string", "minLength": 2, "maxLength": 2, "description": "ISO 3166-1 alpha-2 country code." }, "firstName": { "type": "string", "description": "First name of the address recipient." }, "lastName": { "type": "string", "description": "Last name of the address recipient." }, "company": { "type": "string", "description": "Company name for business addresses." }, "streetName": { "type": "string", "description": "Street name component of the address." }, "streetNumber": { "type": "string", "description": "Street number component of the address." }, "additionalStreetInfo": { "type": "string", "description": "Apartment, suite, floor, or other secondary address information." }, "city": { "type": "string", "description": "City of the address." }, "postalCode": { "type": "string", "description": "Postal or ZIP code." }, "region": { "type": "string", "description": "State, province, or region." }, "email": { "type": "string", "format": "email", "description": "Email address associated with this postal address." }, "phone": { "type": "string", "description": "Phone number associated with this postal address." } } }, "LineItem": { "type": "object", "description": "A product line item in an order capturing the product, variant, quantity, and pricing at checkout time.", "required": ["id", "productId", "name", "variant", "price", "totalPrice", "quantity", "lineItemMode", "priceMode"], "properties": { "id": { "type": "string", "description": "Unique identifier for the line item within the order." }, "productId": { "type": "string", "description": "ID of the product this line item references." }, "productKey": { "type": "string", "description": "Key of the product at time of order creation." }, "name": { "type": "object", "description": "Localized name of the product at time of order creation." }, "quantity": { "type": "integer", "minimum": 1, "description": "Quantity of this product variant ordered." }, "price": { "type": "object", "description": "The unit price applied to this line item." }, "totalPrice": { "$ref": "#/$defs/Money", "description": "Total price for this line item (unit price multiplied by quantity)." }, "lineItemMode": { "type": "string", "enum": ["Standard", "GiftLineItem"], "description": "Whether this is a standard or complimentary gift line item." }, "priceMode": { "type": "string", "enum": ["Platform", "ExternalTotal", "ExternalPrice"], "description": "How the price for this line item was determined." }, "discountedPricePerQuantity": { "type": "array", "items": { "type": "object" }, "description": "Discounted price information per unit quantity." }, "taxRate": { "type": "object", "description": "Tax rate applied to this line item." } } }, "CustomLineItem": { "type": "object", "description": "A custom-priced line item not linked to a product catalog entry.", "required": ["id", "name", "money", "totalPrice", "quantity", "slug"], "properties": { "id": { "type": "string", "description": "Unique identifier for the custom line item." }, "name": { "type": "object", "description": "Localized name of the custom line item." }, "money": { "$ref": "#/$defs/Money", "description": "Unit price of the custom line item." }, "totalPrice": { "$ref": "#/$defs/Money", "description": "Total price (money multiplied by quantity)." }, "slug": { "type": "string", "description": "User-defined identifier for the custom line item type." }, "quantity": { "type": "integer", "minimum": 1, "description": "Quantity of this custom line item." } } }, "Delivery": { "type": "object", "description": "A delivery record tracking physical fulfillment of order line items.", "required": ["id", "items"], "properties": { "id": { "type": "string", "description": "Unique identifier for the delivery." }, "key": { "type": "string", "description": "User-defined key for the delivery." }, "createdAt": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the delivery was created." }, "items": { "type": "array", "items": { "type": "object" }, "description": "Line items and quantities included in this delivery." }, "parcels": { "type": "array", "items": { "$ref": "#/$defs/Parcel" }, "description": "Physical parcels within this delivery with tracking information." }, "address": { "$ref": "#/$defs/Address", "description": "Delivery address for this delivery if different from the order shipping address." } } }, "Parcel": { "type": "object", "description": "A physical parcel within a delivery with tracking and measurement details.", "required": ["id"], "properties": { "id": { "type": "string", "description": "Unique identifier for the parcel." }, "createdAt": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the parcel was created." }, "measurements": { "type": "object", "description": "Physical dimensions and weight of the parcel." }, "trackingData": { "type": "object", "description": "Carrier tracking information including tracking ID, carrier name, and URL." }, "items": { "type": "array", "items": { "type": "object" }, "description": "Line items and quantities packed in this parcel." } } }, "ReturnInfo": { "type": "object", "description": "Return information for items being returned from an order.", "required": ["items"], "properties": { "items": { "type": "array", "items": { "type": "object" }, "description": "Items being returned with quantities and return state." }, "returnTrackingId": { "type": "string", "description": "Tracking ID for the return shipment." }, "returnDate": { "type": "string", "format": "date-time", "description": "Date the return was initiated." } } } } }