name: Lightspeed Retail X-Series Data Model generated: '2026-08-27' method: derived source: openapi/lightspeed-x-series-openapi.json note: 'Entity graph computed from $ref links between components.schemas and from *_id reference fields that resolve to a sibling schema name. Only the X-Series contract is modelled here: it is the richest published Lightspeed spec (372 schemas) and the one an integrator is most likely to build against. Relationships are structural facts read out of the spec, not inferred business semantics.' stats: schemas: 372 schemas_returned_by_2xx: 113 relationships: 448 id_convention: style: UUID string primary keys on most resources; foreign keys named _id cursor_field: version — a global monotonically increasing integer used as the pagination cursor and change marker source: https://x-series-api.lightspeedhq.com/docs/pagination domains: - Audit - Brands - Channel Request Log - Consignment Products - Consignments - Customer Addresses - Customer Groups - Customers - Fulfillments - Gift Cards - Inventory - Outlet Product Taxes - Outlets - Packing Slips - Partner Billing - Payment Types - Pick Lists - Price Books - Product Categories - Product Images - Product Types - Products - Promotions - Purchase Orders - Quotes - Registers - Retailers - Sales - Search - Serial Numbers - Service Orders - Store Credits - Suppliers - Tags - Taxes - Users - Webhooks - Workflows relationships: - from: Action to: Filter type: has_many via: exclude - from: Action to: Filter type: has_many via: include - from: Adjustment to: LineItemTaxComponent type: has_many via: tax_components - from: AuditLogEvent to: User type: belongs_to via: user_id - from: BasketResponse to: BasketProductResponse type: has_many via: items - from: BasketResponse to: PromoCodeValidation type: has_many via: promo_code_validations - from: BasketResponse to: BasketTaxResponse type: has_many via: taxes - from: BrandCollection to: Brand type: has_many via: data - from: BrandCollection to: Version type: has_one via: version - from: BrandResponse to: Brand type: has_one via: data - from: ButtonLayout to: ButtonLayoutNode type: has_many via: nodes - from: ButtonLayoutCollection to: ButtonLayout type: has_many via: data - from: ButtonLayoutCollection to: PaginationMetadata type: has_one via: pagination - from: ButtonLayoutCollection to: Version type: has_one via: version - from: ButtonLayoutNode to: ButtonLayoutNodeAttribute type: has_many via: attributes - from: CardDetails to: Card type: has_one via: card - from: Channel to: PaymentType type: belongs_to via: payment_type_id - from: Channel to: Register type: belongs_to via: register_id - from: ChannelCollectionResponse to: Channel type: has_many via: data - from: Composite to: Product type: belongs_to via: product_id - from: Condition to: Filter type: has_many via: exclude - from: Condition to: Filter type: has_many via: include - from: Consignment to: Outlet type: belongs_to via: outlet_id - from: Consignment to: Supplier type: belongs_to via: supplier_id - from: ConsignmentCollection to: Consignment type: has_many via: data - from: ConsignmentCollection to: Version type: has_one via: version - from: ConsignmentProduct to: Product type: belongs_to via: product_id - from: ConsignmentProductCollection to: ConsignmentProduct type: has_many via: data - from: ConsignmentProductRequest to: ConsignmentProduct type: has_one via: data - from: ConsignmentProductResponse to: ConsignmentProductCollection type: has_one via: data - from: ConsignmentRequest to: Consignment type: has_one via: data - from: ConsignmentResponse to: Consignment type: has_one via: data - from: CreateStockAdjustmentItem to: CustomInventoryAdjustmentReason type: belongs_to via: custom_inventory_adjustment_reason_id - from: CreateStockAdjustmentItem to: Outlet type: belongs_to via: outlet_id - from: CreateStockAdjustmentItem to: Product type: belongs_to via: product_id - from: CreateStockAdjustmentItem to: StockAdjustmentReason type: has_one via: reason - from: CreateStockAdjustmentsRequest to: CreateStockAdjustmentItem type: has_many via: stock_adjustments - from: CustomFieldDefinitionCollection to: CustomFieldDefinition type: has_many via: data - from: CustomFieldValueCollection to: CustomFieldValue type: has_many via: data - from: CustomInventoryAdjustmentReasonCollection to: CustomInventoryAdjustmentReason type: has_many via: data - from: CustomInventoryAdjustmentReasonCollection to: Version type: has_one via: version - from: CustomInventoryAdjustmentReasonSingleton to: CustomInventoryAdjustmentReason type: has_one via: data - from: Customer to: CustomerGroup type: belongs_to via: customer_group_id - from: Customer to: Tax type: belongs_to via: tax_id - from: CustomerAddress to: Customer type: belongs_to via: customer_id - from: CustomerAddressCollection to: CustomerAddress type: has_many via: data - from: CustomerAddressCreateResponse to: CustomerAddress type: has_one via: data - from: CustomerAddressResponse to: CustomerAddress type: has_one via: data - from: CustomerBase to: CustomerGroup type: belongs_to via: customer_group_id - from: CustomerBase to: Tax type: belongs_to via: tax_id - from: CustomerCollection to: Customer type: has_many via: data - from: CustomerCollection to: Version type: has_one via: version - from: CustomerGroup to: Retailer type: belongs_to via: retailer_id - from: CustomerGroupCollection to: CustomerGroup type: has_many via: data - from: CustomerGroupCollection to: Version type: has_one via: version - from: CustomerGroupResponse to: CustomerGroup type: has_one via: data - from: CustomerResponse to: Customer type: has_one via: data - from: DetailedService to: ServiceNote type: has_many via: notes - from: DetailedService to: ServiceOrder type: has_one via: service - from: DetailedService to: ServiceItems type: has_one via: serviceItems - from: DiscountCustomerParam to: CustomerGroup type: belongs_to via: customer_group_id - from: DiscountLineItem to: Product type: belongs_to via: product_id - from: DiscountLineItem to: ProductSupplier type: belongs_to via: product_supplier_id - from: DiscountLineItem to: ProductType type: belongs_to via: product_type_id - from: DiscountParam to: DiscountCustomerParam type: has_one via: customer - from: DiscountParam to: Outlet type: belongs_to via: outlet_id - from: DiscountParam to: DiscountSaleParam type: has_one via: sale - from: DiscountResponse to: DiscountResponseParam type: has_one via: data - from: DiscountResponseParam to: PromoCodeValidation type: has_one via: promo_code_validation - from: DiscountResponseParam to: PromotionDescription type: has_many via: promotions - from: DiscountResponseParam to: DiscountSaleParam type: has_one via: sale - from: DiscountSaleParam to: DiscountLineItem type: has_many via: line_items - from: EcomCustomCharge to: EcomCustomChargeTaxComponent type: has_many via: tax_components - from: FulfillLineItemsRequest to: FulfillmentLineItemRequest type: has_many via: line_items - from: FulfillSaleRequest to: Sale type: belongs_to via: sale_id - from: FulfillSaleResponse to: FulfillmentResponse type: has_many via: data - from: Fulfillment to: FulfillmentLineItem type: has_many via: line_items - from: Fulfillment to: Outlet type: belongs_to via: outlet_id - from: Fulfillment to: Sale type: belongs_to via: sale_id - from: Fulfillment to: User type: belongs_to via: user_id - from: FulfillmentHistoryEntry to: Product type: belongs_to via: product_id - from: FulfillmentHistoryEntry to: SaleLineItem type: belongs_to via: sale_line_item_id - from: FulfillmentHistoryResponse to: FulfillmentHistoryEntry type: has_many via: data - from: FulfillmentLineItem to: Product type: belongs_to via: product_id - from: FulfillmentLineItemRequest to: SaleLineItem type: belongs_to via: sale_line_item_id - from: FulfillmentLineItemRequest to: FulfillLineItemSourceBreakdown type: has_one via: source_breakdown - from: FulfillmentSummaryItem to: FulfillmentSummaryLineItem type: has_many via: line_items - from: FulfillmentSummaryItem to: Outlet type: belongs_to via: outlet_id - from: FulfillmentSummaryItem to: Sale type: belongs_to via: sale_id - from: FulfillmentSummaryLineItem to: Product type: belongs_to via: product_id - from: FulfillmentSummaryLineItem to: SaleLineItem type: belongs_to via: sale_line_item_id - from: FulfillmentSummaryResponse to: FulfillmentSummaryItem type: has_many via: data - from: FulfillmentsResponse to: Fulfillment type: has_many via: data - from: GiftCard to: GiftCardTransaction type: has_many via: gift_card_transactions - from: GiftCard to: Sale type: belongs_to via: sale_id - from: GiftCardActivationParams to: User type: belongs_to via: user_id - from: GiftCardCollection to: GiftCard type: has_many via: data - from: GiftCardSingleton to: GiftCard type: has_one via: data - from: GiftCardTransaction to: User type: belongs_to via: user_id - from: GiftCardTransactionParams to: User type: belongs_to via: user_id - from: GiftCardTransactionSingleton to: GiftCardTransaction type: has_one via: data - from: Image to: Product type: belongs_to via: product_id - from: ImageResponse to: Image type: has_one via: data - from: Inventory to: Outlet type: belongs_to via: outlet_id - from: Inventory to: Product type: belongs_to via: product_id - from: InventoryCollection to: Inventory type: has_many via: data - from: InventoryCollection to: Version type: has_one via: version - from: InventoryCountItem to: Product type: belongs_to via: product_id - from: InventoryCountItemResponse to: InventoryCountItem type: has_one via: data - from: InventoryLevel to: Brand type: belongs_to via: brand_id - from: InventoryLevel to: Product type: belongs_to via: product_id - from: InventoryLevel to: ProductType type: belongs_to via: product_type_id - from: InventoryLevel to: Supplier type: belongs_to via: supplier_id - from: InventoryRequest to: Product type: belongs_to via: product_id - from: LineItem to: Product type: belongs_to via: product_id - from: LineItem to: LineItemSurcharge type: has_many via: surcharges - from: LineItem to: LineItemTaxComponent type: has_many via: tax_components - from: LineItem to: Tax type: belongs_to via: tax_id - from: LineItemAdjustment to: AdjustmentAmount type: has_one via: amount - from: LineItemAdjustment to: AdjustmentSource type: has_one via: source - from: LineItemAdjustment to: AdjustmentTarget type: has_one via: target - from: LineItemCustomization to: CustomizationFile type: has_many via: files - from: LineItemPricing to: LineItemAdjustment type: has_many via: adjustments - from: LineItemPromotion to: PromoCode type: belongs_to via: promo_code_id - from: LineItemResponseMetadata to: LineItemTaxComponentResponse type: has_many via: tax_components - from: LineItemResponseSource to: Register type: belongs_to via: register_id - from: LineItemSource to: Register type: belongs_to via: register_id - from: LineItemSurcharge to: LineItemTaxComponentResponse type: has_many via: tax_components - from: LspayNewTransactionRequest to: LspayTransactionMetadata type: has_one via: metadata - from: LspayTender to: Transaction type: belongs_to via: transaction_id - from: LspayTransaction to: PaymentType type: belongs_to via: payment_type_id - from: LspayTransaction to: Register type: belongs_to via: register_id - from: LspayTransaction to: Retailer type: belongs_to via: retailer_id - from: LspayTransaction to: LspayTender type: has_many via: tenders - from: LspayTransactionResponse to: LspayTransaction type: has_one via: transaction - from: Outlet to: Attribute type: has_many via: attributes - from: OutletCollection to: Outlet type: has_many via: data - from: OutletCollection to: Version type: has_one via: version - from: OutletResponse to: Outlet type: has_one via: data - from: OutletTax to: Outlet type: belongs_to via: outlet_id - from: OutletTax to: Product type: belongs_to via: product_id - from: OutletTax to: Tax type: belongs_to via: tax_id - from: OutletTaxCollection to: OutletTax type: has_many via: data - from: OutletTaxCollection to: Version type: has_one via: version - from: PackLineItemRequest to: SaleLineItem type: belongs_to via: sale_line_item_id - from: PackLineItemRequest to: PackLineItemSourceBreakdown type: has_one via: source_breakdown - from: PackLineItemsRequest to: PackLineItemRequest type: has_many via: line_items - from: PackedLineItem to: SaleLineItem type: belongs_to via: sale_line_item_id - from: Pairing to: Register type: belongs_to via: register_id - from: Pairing to: Retailer type: belongs_to via: retailer_id - from: PartialPackingSlipRequest to: PackedLineItem type: has_many via: packed_line_items - from: PartnerSubscription to: PartnerSubscriptionInfo type: has_many via: partner_subscription_info - from: PartnerSubscriptionInfo to: ProductInfoComponent type: has_many via: components - from: PartnerSubscriptionToken to: Retailer type: belongs_to via: retailer_id - from: PartnerSubscriptionTokenRequest to: PartnerSubscriptionTokenComponent type: has_many via: components - from: PartnerUpdateSubscriptionTokenRequest to: PartnerUpdateSubscriptionTokenComponent type: has_many via: components - from: Payment to: Outlet type: belongs_to via: outlet_id - from: Payment to: PaymentType type: belongs_to via: payment_type_id - from: Payment to: Register type: belongs_to via: register_id - from: Payment to: SaleSurcharge type: has_one via: surcharge - from: PaymentExternalAttribute to: Transaction type: belongs_to via: transaction_id - from: PaymentIntegration to: IntegrationSource type: has_one via: source - from: PaymentIntegration to: Transaction type: belongs_to via: transaction_id - from: PaymentIntentRequest to: PaymentIntentMetadata type: has_one via: metadata - from: PaymentIntentRequest to: Outlet type: belongs_to via: outlet_id - from: PaymentResponseSource to: Outlet type: belongs_to via: outlet_id - from: PaymentResponseSource to: Register type: belongs_to via: register_id - from: PaymentSource to: Register type: belongs_to via: register_id - from: PaymentType to: GlobalPaymentType type: has_one via: payment_type - from: PaymentTypeCollection to: PaymentType type: has_many via: data - from: PaymentTypeCollection to: Version type: has_one via: version - from: PickLineItemRequest to: SaleLineItem type: belongs_to via: sale_line_item_id - from: PickLineItemsRequest to: PickLineItemRequest type: has_many via: line_items - from: PickList to: PickListLineItem type: has_many via: line_items - from: PickList to: Outlet type: belongs_to via: outlet_id - from: PickList to: Sale type: belongs_to via: sale_id - from: PickList to: User type: belongs_to via: user_id - from: PickListLineItem to: Product type: belongs_to via: product_id - from: PickListLineItem to: SaleLineItem type: belongs_to via: sale_line_item_id - from: PickListsResponse to: PickList type: has_many via: data - from: PriceBook to: CustomerGroup type: has_many via: customer_groups - from: PriceBook to: Outlet type: has_many via: outlets - from: PriceBookCollection to: PriceBook type: has_many via: data - from: PriceBookCreateResponse to: PriceBookCreateResponseData type: has_one via: data - from: PriceBookCreateResponseData to: CustomerGroup type: has_many via: customer_groups - from: PriceBookCreateResponseData to: Outlet type: has_many via: outlets - from: PriceBookCreateResponseData to: Retailer type: belongs_to via: retailer_id - from: PriceBookProduct to: PriceBook type: belongs_to via: price_book_id - from: PriceBookProduct to: Product type: belongs_to via: product_id - from: PriceBookProduct to: Tax type: belongs_to via: tax_id - from: PriceBookProductCollection to: PriceBookProduct type: has_many via: data - from: PriceBookResponse to: PriceBook type: has_one via: data - from: Product to: ProductAttribute type: has_many via: attributes - from: Product to: BrandSample type: has_one via: brand - from: Product to: Brand type: belongs_to via: brand_id - from: Product to: Tag type: has_many via: categories - from: Product to: ImageSample type: has_many via: images - from: Product to: ProductPackage type: has_one via: packaging - from: Product to: ProductCategory type: has_one via: product_category - from: Product to: ProductCode type: has_many via: product_codes - from: Product to: ProductSupplier type: has_many via: product_suppliers - from: Product to: ProductType type: belongs_to via: product_type_id - from: Product to: ImageSample type: has_many via: skuImages - from: Product to: SupplierSample type: has_one via: supplier - from: Product to: Supplier type: belongs_to via: supplier_id - from: Product to: ProductTypeSample type: has_one via: type - from: Product to: VariantOption type: has_many via: variant_options - from: ProductAddInventoryPayload to: Outlet type: belongs_to via: outlet_id - from: ProductAddOutletTax to: Outlet type: belongs_to via: outlet_id - from: ProductAddOutletTax to: Tax type: belongs_to via: tax_id - from: ProductAddVariantPayload to: ProductAddImage type: has_many via: images - from: ProductAddVariantPayload to: ProductAddInventoryPayload type: has_many via: inventory - from: ProductAddVariantPayload to: ProductAddOutletTax type: has_many via: outlet_taxes - from: ProductAddVariantPayload to: ProductCode type: has_many via: product_codes - from: ProductAddVariantPayload to: ProductSupplier type: has_many via: product_suppliers - from: ProductAddVariantPayload to: VariantAttribute type: has_many via: variant_definitions - from: ProductCategory to: ProductCategoryPath type: has_many via: category_path - from: ProductCollection to: Product type: has_many via: data - from: ProductCollection to: Version type: has_one via: version - from: ProductCreateBody to: Attribute type: has_one via: attributes - from: ProductCreateBody to: Brand type: belongs_to via: brand_id - from: ProductCreateBody to: Composite type: has_many via: composite - from: ProductCreateBody to: ProductAddImage type: has_many via: images - from: ProductCreateBody to: ProductAddInventoryPayload type: has_many via: inventory - from: ProductCreateBody to: ProductAddOutletTax type: has_many via: outlet_taxes - from: ProductCreateBody to: ProductCategory type: belongs_to via: product_category_id - from: ProductCreateBody to: ProductCode type: has_many via: product_codes - from: ProductCreateBody to: ProductSupplier type: has_many via: product_suppliers - from: ProductCreateBody to: ProductType type: belongs_to via: product_type_id - from: ProductCreateBody to: Supplier type: belongs_to via: supplier_id - from: ProductCreateBody to: ProductAddVariantPayload type: has_many via: variants - from: ProductResponse to: Product type: has_one via: data - from: ProductSupplier to: Product type: belongs_to via: product_id - from: ProductSupplier to: Supplier type: belongs_to via: supplier_id - from: ProductType to: ProductCategoryPath type: has_many via: category_path - from: ProductTypeCollection to: ProductType type: has_many via: data - from: ProductTypeCollection to: Version type: has_one via: version - from: ProductTypeResponse to: ProductType type: has_one via: data - from: ProductTypeSample to: ProductCategoryPath type: has_many via: category_path - from: ProductUpdate21Request to: ProductUpdate21Supplier type: has_one via: common - from: ProductUpdate21Request to: ProductUpdate21Supplier type: has_one via: details - from: ProductUpdate21Supplier to: Supplier type: belongs_to via: supplier_id - from: PromoCode to: User type: has_one via: created_user - from: PromoCode to: Promotion type: belongs_to via: promotion_id - from: PromoCodeValidation to: PromoCode type: belongs_to via: promo_code_id - from: PromoCodeValidation to: Promotion type: belongs_to via: promotion_id - from: Promotion to: Action type: has_one via: action - from: Promotion to: PromoCode type: has_many via: add_promo_code - from: Promotion to: Condition type: has_one via: condition - from: Promotion to: PromotionPromoCodeSummary type: has_one via: promo_code_summary - from: PromotionActivePromoCodesResponse to: PromoCodesMap type: has_one via: data - from: PromotionCollection to: PromotionResponse type: has_many via: data - from: PromotionProductsResponse to: Product type: has_one via: data - from: PromotionResponse to: Action type: has_one via: action - from: PromotionResponse to: PromoCode type: has_many via: add_promo_code - from: PromotionResponse to: Condition type: has_one via: condition - from: PromotionResponse to: PromotionPromoCodeSummary type: has_one via: promo_code_summary - from: PromotionResponse to: RecurringPromotion type: has_one via: recurring_promotion - from: PurchaseOrder to: PurchaseOrderCost type: has_many via: costs - from: PurchaseOrder to: PurchaseOrderDiscount type: has_many via: discounts - from: PurchaseOrder to: Supplier type: belongs_to via: supplier_id - from: PurchaseOrder to: User type: belongs_to via: user_id - from: PurchaseOrderCollectionResponse to: PurchaseOrder type: has_many via: data - from: PurchaseOrderCollectionResponse to: PurchaseOrderVersion type: has_one via: version - from: PurchaseOrderCost to: PurchaseOrderDelivery type: belongs_to via: purchase_order_delivery_id - from: PurchaseOrderDelivery to: PurchaseOrderCost type: has_many via: costs - from: PurchaseOrderDelivery to: PurchaseOrderDiscount type: has_many via: discounts - from: PurchaseOrderDelivery to: Outlet type: belongs_to via: outlet_id - from: PurchaseOrderDelivery to: PurchaseOrder type: belongs_to via: purchase_order_id - from: PurchaseOrderDelivery to: User type: belongs_to via: user_id - from: PurchaseOrderDeliveryCollectionResponse to: PurchaseOrderDelivery type: has_many via: data - from: PurchaseOrderDeliveryCollectionResponse to: PurchaseOrderVersion type: has_one via: version - from: PurchaseOrderDeliveryLineItem to: PurchaseOrderDeliveryLineItemAllocation type: has_many via: allocations - from: PurchaseOrderDeliveryLineItem to: PurchaseOrderDeliveryLineItemComponent type: has_many via: components - from: PurchaseOrderDeliveryLineItem to: Product type: belongs_to via: product_id - from: PurchaseOrderDeliveryLineItem to: PurchaseOrderDelivery type: belongs_to via: purchase_order_delivery_id - from: PurchaseOrderDeliveryLineItem to: PurchaseOrderLineItem type: belongs_to via: purchase_order_line_item_id - from: PurchaseOrderDeliveryLineItemAllocation to: Outlet type: belongs_to via: outlet_id - from: PurchaseOrderDeliveryLineItemCollectionResponse to: PurchaseOrderDeliveryLineItem type: has_many via: data - from: PurchaseOrderDeliveryLineItemCollectionResponse to: PurchaseOrderVersion type: has_one via: version - from: PurchaseOrderDiscount to: PurchaseOrderDelivery type: belongs_to via: purchase_order_delivery_id - from: PurchaseOrderLineItem to: PurchaseOrderLineItemAllocation type: has_many via: allocations - from: PurchaseOrderLineItem to: PurchaseOrderLineItemComponent type: has_many via: components - from: PurchaseOrderLineItem to: Product type: belongs_to via: product_id - from: PurchaseOrderLineItem to: PurchaseOrder type: belongs_to via: purchase_order_id - from: PurchaseOrderLineItemAllocation to: Outlet type: belongs_to via: outlet_id - from: PurchaseOrderLineItemCollectionResponse to: PurchaseOrderLineItem type: has_many via: data - from: PurchaseOrderLineItemCollectionResponse to: PurchaseOrderVersion type: has_one via: version - from: PurchaseOrderResponse to: PurchaseOrder type: has_one via: data - from: Quote to: Customer type: belongs_to via: customer_id - from: Quote to: Outlet type: belongs_to via: outlet_id - from: Quote to: QuoteProduct type: has_many via: products - from: Quote to: Register type: belongs_to via: register_id - from: Quote to: Retailer type: belongs_to via: retailer_id - from: Quote to: User type: belongs_to via: user_id - from: QuoteProduct to: Product type: belongs_to via: product_id - from: QuoteProduct to: QuotesProductsTaxComponents type: has_many via: product_tax_components - from: QuoteProduct to: Quote type: belongs_to via: quote_id - from: QuoteProduct to: Tax type: belongs_to via: tax_id - from: QuotesCollection to: Quote type: has_many via: Quotes - from: QuotesProductsTaxComponents to: QuoteProduct type: belongs_to via: quote_product_id - from: ReceiptSettings to: ReceiptSettingsData type: has_one via: settings - from: ReceiptSettingsCollection to: ReceiptSettings type: has_many via: data - from: ReceiptSettingsCollection to: Version type: has_one via: version - from: RecurringPromotion to: RecurringPromotionOccurrence type: has_many via: recurring_promotion_occurrences - from: Register to: ButtonLayout type: belongs_to via: button_layout_id - from: Register to: Outlet type: belongs_to via: outlet_id - from: RegisterClosePaymentType to: PaymentType type: belongs_to via: payment_type_id - from: RegisterCloseRequest to: RegisterClosePaymentType type: has_many via: payments - from: RegisterCollection to: Register type: has_many via: data - from: RegisterCollection to: Version type: has_one via: version - from: RegisterPaymentSummaryPaymentType to: PaymentType type: belongs_to via: payment_type_id - from: RegisterPaymentsSummary to: RegisterPaymentSummaryPaymentType type: has_many via: payments - from: RegisterPaymentsSummaryResponse to: RegisterPaymentsSummary type: has_one via: data - from: RegisterResponse to: Register type: has_one via: data - from: ReorderPointEntry to: Outlet type: belongs_to via: outlet_id - from: ReorderPointEntry to: Product type: belongs_to via: product_id - from: ReorderPointFixedRequestItem to: Outlet type: belongs_to via: outlet_id - from: ReorderPointFixedRequestItem to: Product type: belongs_to via: product_id - from: ReorderPointMinMaxRequestItem to: Outlet type: belongs_to via: outlet_id - from: ReorderPointMinMaxRequestItem to: Product type: belongs_to via: product_id - from: ReorderPointsCollection to: ReorderPointEntry type: has_many via: data - from: RequestCollectionResponse to: RequestLog type: has_many via: data - from: RequestSingleResponse to: RequestLog type: has_one via: data - from: Retailer to: RetailerCurrency type: has_one via: currency - from: RetailerResponse to: Retailer type: has_one via: data - from: Sale to: SaleResponseMetadata type: has_one via: _metadata - from: Sale to: SaleResponseAdjustment type: has_many via: adjustments - from: Sale to: Customer type: belongs_to via: customer_id - from: Sale to: EcomCustomCharge type: has_many via: ecom_custom_charges - from: Sale to: SaleExternalApplication type: has_many via: external_applications - from: Sale to: SaleResponseLineItem type: has_many via: line_items - from: Sale to: SaleResponsePayment type: has_many via: payments - from: Sale to: SaleReturn type: has_one via: return - from: Sale to: SaleResponseSource type: has_one via: source - from: Sale to: SaleResponseTax type: has_many via: taxes - from: Sale to: SaleTotals type: has_one via: totals - from: SaleAdjustment to: AdjustmentAmount type: has_one via: amount - from: SaleAdjustment to: AdjustmentSource type: has_one via: source - from: SaleCollection to: Sale type: has_many via: data - from: SaleCollection to: Version type: has_one via: version - from: SaleCreateResponse to: Sale type: has_one via: data - from: SaleLineItem to: LineItemMetadata type: has_one via: _metadata - from: SaleLineItem to: LineItemAttribute type: has_many via: attributes - from: SaleLineItem to: LineItemPricing type: has_one via: pricing - from: SaleLineItem to: LineItemProduct type: has_one via: product - from: SaleLineItem to: LineItemSource type: has_one via: source - from: SaleLineItem to: LineItemTax type: has_one via: tax - from: SalePayment to: PaymentSource type: has_one via: source - from: SalePayment to: PaymentTypeConfig type: has_one via: type - from: SalePricing to: SaleAdjustment type: has_many via: adjustments - from: SaleRequestBase to: Customer type: belongs_to via: customer_id - from: SaleRequestBase to: FulfillmentDetail type: has_many via: fulfillment_details - from: SaleRequestBase to: SaleLineItem type: has_many via: line_items - from: SaleRequestBase to: SalePayment type: has_many via: payments - from: SaleRequestBase to: SalePricing type: has_one via: pricing - from: SaleRequestBase to: DailyAgenda type: has_one via: service_fields - from: SaleRequestBase to: SaleRequestSource type: has_one via: source - from: SaleRequestSource to: Register type: belongs_to via: register_id - from: SaleResponse to: Sale type: has_one via: data - from: SaleResponseAdjustment to: LineItemTaxComponentResponse type: has_many via: tax_components - from: SaleResponseLineItem to: LineItemResponseMetadata type: has_one via: _metadata - from: SaleResponseLineItem to: LineItemCustomization type: has_many via: customizations - from: SaleResponseLineItem to: LineItemResponsePricing type: has_one via: pricing - from: SaleResponseLineItem to: LineItemProductDetails type: has_one via: product - from: SaleResponseLineItem to: LineItemPromotion type: has_many via: promotions - from: SaleResponseLineItem to: LineItemReturn type: has_one via: return - from: SaleResponseLineItem to: LineItemResponseSource type: has_one via: source - from: SaleResponseLineItem to: LineItemSurcharge type: has_many via: surcharges - from: SaleResponseLineItem to: LineItemResponseTax type: has_one via: tax - from: SaleResponsePayment to: PaymentResponseMetadata type: has_one via: _metadata - from: SaleResponsePayment to: PaymentExternalApplication type: has_many via: external_applications - from: SaleResponsePayment to: PaymentExternalAttribute type: has_many via: external_attributes - from: SaleResponsePayment to: PaymentResponseSource type: has_one via: source - from: SaleResponsePayment to: PaymentSurcharge type: has_one via: surcharge - from: SaleResponsePayment to: PaymentTypeDetails type: has_one via: type - from: SaleResponseSource to: SaleAuthor type: has_one via: author - from: SaleResponseSource to: Outlet type: belongs_to via: outlet_id - from: SaleResponseSource to: Register type: belongs_to via: register_id - from: SerialNumber to: LineItem type: belongs_to via: line_item_id - from: SerialNumber to: Outlet type: belongs_to via: outlet_id - from: SerialNumber to: Product type: belongs_to via: product_id - from: SerialNumber to: Sale type: belongs_to via: sale_id - from: SerialNumberCollection to: SerialNumber type: has_many via: data - from: SerialNumberCollection to: Version type: has_one via: version - from: SerialNumberRequest to: Outlet type: belongs_to via: outlet_id - from: SerialNumberRequest to: Product type: belongs_to via: product_id - from: SerialNumberResponse to: SerialNumber type: has_one via: data - from: ServiceItems to: ItemDetails type: has_one via: item_details - from: ServiceNote to: User type: has_one via: user - from: ServiceOrder to: DailyAgenda type: has_one via: agenda - from: ServiceOrder to: PromotionDescription type: has_many via: line_items - from: ServiceOrder to: Retailer type: belongs_to via: retailer_id - from: ServiceOrder to: Sale type: belongs_to via: sale_id - from: ServiceOrder to: ServiceStatusDetails type: has_one via: status_details - from: ServiceOrderRequest to: Customer type: belongs_to via: customer_id - from: ServiceOrderRequest to: Outlet type: belongs_to via: outlet_id - from: ServiceOrderRequest to: Register type: belongs_to via: register_id - from: ServiceStatusDetails to: Retailer type: belongs_to via: retailer_id - from: Shift to: Retailer type: belongs_to via: retailer_id relationship_hubs: - entity: Product outbound_relationships: 15 - entity: ProductCreateBody outbound_relationships: 12 - entity: Sale outbound_relationships: 11 - entity: SaleResponseLineItem outbound_relationships: 9 - entity: SaleRequestBase outbound_relationships: 7 - entity: ProductAddVariantPayload outbound_relationships: 6 - entity: Quote outbound_relationships: 6 - entity: SaleLineItem outbound_relationships: 6 - entity: SaleResponsePayment outbound_relationships: 6 - entity: PromotionResponse outbound_relationships: 5 - entity: PurchaseOrderDelivery outbound_relationships: 5 - entity: PurchaseOrderDeliveryLineItem outbound_relationships: 5 - entity: ServiceOrder outbound_relationships: 5 - entity: StockAdjustment outbound_relationships: 5 - entity: CreateStockAdjustmentItem outbound_relationships: 4 - entity: Fulfillment outbound_relationships: 4 - entity: InventoryLevel outbound_relationships: 4 - entity: LineItem outbound_relationships: 4 - entity: LspayTransaction outbound_relationships: 4 - entity: Payment outbound_relationships: 4