generated: '2026-10-12' method: derived generator: derive-data-model.py source: - openapi/commercetools-carts-api-openapi.yml - openapi/commercetools-categories-api-openapi.yml - openapi/commercetools-change-history-api-openapi.yml - openapi/commercetools-customers-api-openapi.yml - openapi/commercetools-importcontainers-api-openapi.yml - openapi/commercetools-importoperations-api-openapi.yml - openapi/commercetools-inventory-api-openapi.yml - openapi/commercetools-orders-api-openapi.yml - openapi/commercetools-payments-api-openapi.yml - openapi/commercetools-product-variants-api-openapi.yml - openapi/commercetools-products-api-openapi.yml - openapi/commercetools-project-api-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 76 entities_in_spec: 76 relationships: 113 entities: - name: Address fields: 12 description: A postal address with country and optional structured fields. - name: Attribute fields: 2 description: A name-value pair representing a product attribute as defined by the product type. - name: Cart fields: 16 description: A shopping cart resource containing line items, discounts, shipping configuration, and pricing. - name: CartDraft fields: 10 description: Request body for creating a new cart. - name: CartPagedQueryResponse fields: 5 description: Paginated response containing a list of carts. - name: CartUpdate fields: 2 description: Request body for updating a cart. - name: Category fields: 13 description: A category resource for organizing products in a hierarchical structure. - name: CategoryDraft fields: 8 description: Request body for creating a new category. - name: CategoryImport fields: 6 description: A single category resource for import. - name: CategoryImportRequest fields: 2 description: A batch of category resources to import. - name: CategoryPagedQueryResponse fields: 5 description: Paginated response containing a list of categories. - name: CategoryUpdate fields: 2 description: Request body for updating a category. - name: Change fields: 4 description: A single field-level change within a change history record. - name: Customer fields: 12 description: A customer account with authentication credentials, addresses, and commerce profile data. - name: CustomerDraft fields: 8 description: Request body for creating a new customer. - name: CustomerImport fields: 7 description: A single customer resource for import. - name: CustomerImportRequest fields: 2 description: A batch of customer resources to import. - name: CustomerPagedQueryResponse fields: 5 description: Paginated response containing a list of customers. - name: CustomerSignInResult fields: 2 description: The result of a customer creation or sign-in operation, including the customer and any merged cart. - name: CustomerUpdate fields: 2 description: Request body for updating a customer. - name: ErrorObject fields: 2 description: An error object describing a validation or processing failure. - name: Image fields: 3 description: A product image with URL, dimensions, and optional label. - name: ImportContainer fields: 5 description: A container that groups related import requests for a specific resource type. - name: ImportContainerDraft fields: 2 description: Request body for creating or replacing an import container. - name: ImportContainerPagedQueryResponse fields: 5 description: Paginated response containing a list of import containers. - name: ImportOperation fields: 9 description: A record tracking the processing status of a single resource within an import request. - name: ImportOperationPagedQueryResponse fields: 5 description: Paginated response containing a list of import operations. - name: ImportOperationStatus fields: 3 description: The initial status of a single resource submission in an import batch. - name: ImportResponse fields: 1 description: The response returned after submitting an import request batch. - name: ImportSummary fields: 2 description: Aggregated counts of import operations grouped by processing state. - name: InventoryEntry fields: 9 description: An inventory entry tracking available quantity for a specific SKU, optionally scoped to a supply channel. - name: InventoryEntryDraft fields: 6 description: Request body for creating a new inventory entry. - name: InventoryImport fields: 5 description: A single inventory entry resource for import. - name: InventoryImportRequest fields: 2 description: A batch of inventory entry resources to import. - name: InventoryPagedQueryResponse fields: 5 description: Paginated response containing a list of inventory entries. - name: LineItem fields: 9 description: A product line item in a cart or order with quantity, pricing, and discount information. - name: LocalizedString fields: 0 description: A map of locale keys to string values used for multilingual content. Keys follow IETF language tag format (e.g., 'en', 'de', 'en-US'). - name: ModifiedBy fields: 6 description: Information about the actor who made the change. - name: Money fields: 3 description: A monetary value with currency code and amount in the smallest currency unit. - name: Order fields: 15 description: An order created from a cart after checkout, containing immutable line items, pricing, and fulfillment data. - name: OrderFromCartDraft fields: 5 description: Request body for creating an order from an existing cart. - name: OrderImport fields: 8 description: A single order resource for import, bypassing normal checkout flow. - name: OrderImportRequest fields: 2 description: A batch of order resources to import. - name: OrderPagedQueryResponse fields: 5 description: Paginated response containing a list of orders. - name: OrderUpdate fields: 2 description: Request body for updating an order. - name: Payment fields: 11 description: A payment resource tracking financial transactions and PSP interactions for an order. - name: PaymentDraft fields: 6 description: Request body for creating a new payment. - name: PaymentMethodInfo fields: 3 description: Information about the payment method and PSP used for a payment. - name: PaymentPagedQueryResponse fields: 5 description: Paginated response containing a list of payments. - name: PaymentStatus fields: 3 description: The current status of a payment including PSP-specific state information. - name: PaymentUpdate fields: 2 description: Request body for updating a payment. - name: Price fields: 7 description: A price entry for a product variant with optional scoping by channel, customer group, country, or validity period. - name: PriceDraft fields: 6 description: Draft for creating a price on a product variant. - name: Product fields: 9 description: A commercetools product resource containing both the current (published) and staged versions of product data including variants, attributes, and metadata. - name: ProductCatalogData fields: 4 description: Container for current (published) and staged product data. - name: ProductData fields: 8 description: A version of product data including names, slugs, descriptions, variants, and category assignments. - name: ProductDraft fields: 10 description: Request body for creating a new product. - name: ProductImport fields: 7 description: A single product resource for import, matched by key for upsert behavior. - name: ProductImportRequest fields: 2 description: A batch of product resources to import into the project. - name: ProductPagedQueryResponse fields: 5 description: Paginated response containing a list of products. - name: ProductUpdate fields: 2 description: Request body for updating a product using versioned update actions. - name: ProductVariant fields: 6 description: A product variant with SKU, attributes, prices, and images. - name: ProductVariantDraft fields: 5 description: Draft for creating a product variant. - name: ProductVariantImport fields: 7 description: A single product variant resource for import. - name: ProductVariantImportRequest fields: 2 description: A batch of product variant resources to import. - name: Project fields: 6 description: The project resource containing global configuration for languages, currencies, countries, and features. - name: Record fields: 10 description: A change history record capturing a set of changes applied to a resource in a single operation, along with actor and timestamp metadata. - name: RecordPagedQueryResponse fields: 5 description: Paginated response containing a list of change history records. - name: Reference fields: 2 description: A reference to another resource by its typeId and id. - name: StandalonePriceImport fields: 8 description: A single standalone price resource for import. - name: StandalonePriceImportRequest fields: 2 description: A batch of standalone price resources to import. - name: Subscription fields: 10 description: A subscription routing change notifications and messages to an external message queue destination. - name: SubscriptionDraft fields: 5 description: Request body for creating a new subscription. - name: SubscriptionPagedQueryResponse fields: 5 description: Paginated response containing a list of subscriptions. - name: SubscriptionUpdate fields: 2 description: Request body for updating a subscription. - name: Transaction fields: 6 description: A single financial transaction within a payment (authorization, charge, refund, etc.). relationships: - from: CartPagedQueryResponse to: Cart type: has_many via: results - from: Cart to: Customer type: belongs_to via: customerId - from: Cart to: LineItem type: has_many via: lineItems - from: Cart to: Money type: has_one via: totalPrice - from: Cart to: Address type: has_one via: billingAddress - from: Cart to: Address type: has_one via: shippingAddress - from: LineItem to: Product type: belongs_to via: productId - from: LineItem to: LocalizedString type: has_one via: name - from: LineItem to: ProductVariant type: has_one via: variant - from: LineItem to: Price type: has_one via: price - from: LineItem to: Money type: has_one via: totalPrice - from: Price to: Money type: has_one via: value - from: Price to: Reference type: has_one via: customerGroup - from: Price to: Reference type: has_one via: channel - from: ProductVariant to: Price type: has_many via: prices - from: ProductVariant to: Attribute type: has_many via: attributes - from: ProductVariant to: Image type: has_many via: images - from: CartDraft to: Customer type: belongs_to via: customerId - from: CartDraft to: Address type: has_one via: billingAddress - from: CartDraft to: Address type: has_one via: shippingAddress - from: CartDraft to: Reference type: has_one via: store - from: CategoryDraft to: LocalizedString type: has_one via: name - from: CategoryDraft to: LocalizedString type: has_one via: slug - from: CategoryDraft to: LocalizedString type: has_one via: description - from: CategoryDraft to: Reference type: has_one via: parent - from: CategoryDraft to: LocalizedString type: has_one via: metaTitle - from: CategoryDraft to: LocalizedString type: has_one via: metaDescription - from: Category to: LocalizedString type: has_one via: name - from: Category to: LocalizedString type: has_one via: slug - from: Category to: LocalizedString type: has_one via: description - from: Category to: Reference type: has_one via: parent - from: Category to: Reference type: has_many via: ancestors - from: Category to: LocalizedString type: has_one via: metaTitle - from: Category to: LocalizedString type: has_one via: metaDescription - from: CategoryPagedQueryResponse to: Category type: has_many via: results - from: CategoryImportRequest to: CategoryImport type: has_many via: resources - from: ImportResponse to: ImportOperationStatus type: has_many via: operationStatus - from: ImportOperationStatus to: ErrorObject type: has_many via: errors - from: RecordPagedQueryResponse to: Record type: has_many via: results - from: ModifiedBy to: Reference type: has_one via: customer - from: Record to: Reference type: has_one via: resource - from: Record to: Change type: has_many via: changes - from: Record to: ModifiedBy type: has_one via: createdBy - from: CustomerPagedQueryResponse to: Customer type: has_many via: results - from: CustomerSignInResult to: Customer type: has_one via: customer - from: CustomerSignInResult to: Cart type: has_one via: cart - from: Customer to: Reference type: has_one via: customerGroup - from: Customer to: Address type: has_many via: addresses - from: Customer to: Reference type: has_many via: stores - from: CustomerDraft to: Reference type: has_one via: customerGroup - from: CustomerDraft to: Address type: has_many via: addresses - from: CustomerImportRequest to: CustomerImport type: has_many via: resources - from: ImportContainerPagedQueryResponse to: ImportContainer type: has_many via: results - from: ImportOperation to: ErrorObject type: has_many via: errors - from: ImportOperationPagedQueryResponse to: ImportOperation type: has_many via: results - from: InventoryPagedQueryResponse to: InventoryEntry type: has_many via: results - from: InventoryEntryDraft to: Reference type: has_one via: supplyChannel - from: InventoryEntry to: Reference type: has_one via: supplyChannel - from: InventoryImportRequest to: InventoryImport type: has_many via: resources - from: OrderFromCartDraft to: Reference type: has_one via: cart - from: Order to: Customer type: belongs_to via: customerId - from: Order to: LineItem type: has_many via: lineItems - from: Order to: Money type: has_one via: totalPrice - from: Order to: Address type: has_one via: billingAddress - from: Order to: Address type: has_one via: shippingAddress - from: OrderPagedQueryResponse to: Order type: has_many via: results - from: OrderImport to: Customer type: belongs_to via: customerId - from: OrderImportRequest to: OrderImport type: has_many via: resources - from: PaymentMethodInfo to: LocalizedString type: has_one via: name - from: Transaction to: Money type: has_one via: amount - from: PaymentPagedQueryResponse to: Payment type: has_many via: results - from: PaymentStatus to: Reference type: has_one via: state - from: Payment to: Reference type: has_one via: customer - from: Payment to: Money type: has_one via: amountPlanned - from: Payment to: PaymentMethodInfo type: has_one via: paymentMethodInfo - from: Payment to: PaymentStatus type: has_one via: paymentStatus - from: Payment to: Transaction type: has_many via: transactions - from: PaymentDraft to: Reference type: has_one via: customer - from: PaymentDraft to: Money type: has_one via: amountPlanned - from: PaymentDraft to: PaymentMethodInfo type: has_one via: paymentMethodInfo - from: ProductVariantImportRequest to: ProductVariantImport type: has_many via: resources - from: ProductData to: LocalizedString type: has_one via: name - from: ProductData to: LocalizedString type: has_one via: description - from: ProductData to: LocalizedString type: has_one via: slug - from: ProductData to: ProductVariant type: has_one via: masterVariant - from: ProductData to: ProductVariant type: has_many via: variants - from: ProductData to: Reference type: has_many via: categories - from: ProductData to: LocalizedString type: has_one via: metaTitle - from: ProductData to: LocalizedString type: has_one via: metaDescription - from: PriceDraft to: Money type: has_one via: value - from: PriceDraft to: Reference type: has_one via: customerGroup - from: PriceDraft to: Reference type: has_one via: channel - from: Product to: Reference type: has_one via: productType - from: Product to: ProductCatalogData type: has_one via: masterData - from: Product to: Reference type: has_one via: taxCategory - from: Product to: Reference type: has_one via: state - from: ProductDraft to: Reference type: has_one via: productType - from: ProductDraft to: LocalizedString type: has_one via: name - from: ProductDraft to: LocalizedString type: has_one via: slug - from: ProductDraft to: LocalizedString type: has_one via: description - from: ProductDraft to: Reference type: has_many via: categories - from: ProductDraft to: ProductVariantDraft type: has_one via: masterVariant - from: ProductDraft to: ProductVariantDraft type: has_many via: variants - from: ProductDraft to: Reference type: has_one via: taxCategory - from: ProductVariantDraft to: PriceDraft type: has_many via: prices - from: ProductVariantDraft to: Attribute type: has_many via: attributes - from: ProductVariantDraft to: Image type: has_many via: images - from: ProductPagedQueryResponse to: Product type: has_many via: results - from: ProductCatalogData to: ProductData type: has_one via: current - from: ProductCatalogData to: ProductData type: has_one via: staged - from: ProductImportRequest to: ProductImport type: has_many via: resources - from: StandalonePriceImportRequest to: StandalonePriceImport type: has_many via: resources - from: SubscriptionPagedQueryResponse to: Subscription type: has_many via: results