generated: '2026-07-19' method: derived source: openapi/katana-openapi-original.json note: Entity-relationship graph derived from *_id reference fields across the 108 OpenAPI request/response schemas. `belongs_to` indicates the source object carries a _id foreign key. Ids are integers. core_entities: - sales_order - purchase_order - manufacturing_order - product - variant - material - customer - supplier - location - batch - serial_number - tax_rate - price_list - stock_transfer - stock_adjustment - stocktake - bin_location - bin_transfer - recipe - service - webhook - additional_cost - custom_field_collection - operation - sales_return - ecommerce_order - default_supplier - packer - ingredient_variant - product_variant relationship_count: 106 relationships: - from: Batch to: variant kind: belongs_to via: variant_id - from: BatchTransaction to: batch kind: belongs_to via: batch_id - from: BatchTransactionForManufacturingOrder to: batch kind: belongs_to via: batch_id - from: BatchTransactionV2 to: batch kind: belongs_to via: batch_id - from: BinLocation to: location kind: belongs_to via: location_id - from: BinTransfer to: location kind: belongs_to via: location_id - from: BinTransferRow to: bin_transfer kind: belongs_to via: bin_transfer_id - from: BinTransferRow to: source_bin_location kind: belongs_to via: source_bin_location_id - from: BinTransferRow to: target_bin_location kind: belongs_to via: target_bin_location_id - from: BinTransferRow to: variant kind: belongs_to via: variant_id - from: BomRow to: ingredient_variant kind: belongs_to via: ingredient_variant_id - from: BomRow to: product_item kind: belongs_to via: product_item_id - from: BomRow to: product_variant kind: belongs_to via: product_variant_id - from: Customer to: default_shipping kind: belongs_to via: default_shipping_id - from: Customer to: reference kind: belongs_to via: reference_id - from: Customerress to: customer kind: belongs_to via: customer_id - from: DemandForecast to: location kind: belongs_to via: location_id - from: DemandForecast to: variant kind: belongs_to via: variant_id - from: DemandForecastClear to: location kind: belongs_to via: location_id - from: DemandForecastClear to: variant kind: belongs_to via: variant_id - from: MakeToOrderManufacturingOrder to: sales_order_row kind: belongs_to via: sales_order_row_id - from: ManufacturingOrder to: location kind: belongs_to via: location_id - from: ManufacturingOrder to: variant kind: belongs_to via: variant_id - from: ManufacturingOrderOperationRow to: manufacturing_order kind: belongs_to via: manufacturing_order_id - from: ManufacturingOrderOperationRow to: operation kind: belongs_to via: operation_id - from: ManufacturingOrderOperationRow to: resource kind: belongs_to via: resource_id - from: ManufacturingOrderRecipeRow to: manufacturing_order kind: belongs_to via: manufacturing_order_id - from: ManufacturingOrderRecipeRow to: variant kind: belongs_to via: variant_id - from: Material to: custom_field_collection kind: belongs_to via: custom_field_collection_id - from: Material to: default_supplier kind: belongs_to via: default_supplier_id - from: PartiallyMo to: manufacturing_order kind: belongs_to via: manufacturing_order_id - from: PoitionalCostRow to: additional_cost kind: belongs_to via: additional_cost_id - from: PoitionalCostRow to: group kind: belongs_to via: group_id - from: PoitionalCostRow to: tax_rate kind: belongs_to via: tax_rate_id - from: PriceListCustomer to: customer kind: belongs_to via: customer_id - from: PriceListCustomers to: price_list kind: belongs_to via: price_list_id - from: PriceListRow to: variant kind: belongs_to via: variant_id - from: PriceListRows to: price_list kind: belongs_to via: price_list_id - from: Product to: custom_field_collection kind: belongs_to via: custom_field_collection_id - from: Product to: default_supplier kind: belongs_to via: default_supplier_id - from: ProductOperationRow to: operation kind: belongs_to via: operation_id - from: ProductOperationRow to: preceding_product_operation kind: belongs_to via: preceding_product_operation_id - from: ProductOperationRow to: rank_product_operation kind: belongs_to via: rank_product_operation_id - from: ProductOperationRow to: resource kind: belongs_to via: resource_id - from: PurchaseOrder to: location kind: belongs_to via: location_id - from: PurchaseOrder to: supplier kind: belongs_to via: supplier_id - from: PurchaseOrder to: tracking_location kind: belongs_to via: tracking_location_id - from: PurchaseOrderRecipeRow to: ingredient_variant kind: belongs_to via: ingredient_variant_id - from: PurchaseOrderRecipeRow to: purchase_order_row kind: belongs_to via: purchase_order_row_id - from: PurchaseOrderRow to: location kind: belongs_to via: location_id - from: PurchaseOrderRow to: purchase_order kind: belongs_to via: purchase_order_id - from: PurchaseOrderRow to: tax_rate kind: belongs_to via: tax_rate_id - from: PurchaseOrderRow to: variant kind: belongs_to via: variant_id - from: PurchaseOrderRowReceive to: location kind: belongs_to via: location_id - from: PurchaseOrderRowReceive to: purchase_order_row kind: belongs_to via: purchase_order_row_id - from: RecipeRow to: ingredient_variant kind: belongs_to via: ingredient_variant_id - from: RerankPlace to: before kind: belongs_to via: before_id - from: SalesOrder to: customer kind: belongs_to via: customer_id - from: SalesOrder to: ecommerce_order kind: belongs_to via: ecommerce_order_id - from: SalesOrder to: location kind: belongs_to via: location_id - from: SalesOrderFulfillment to: packer kind: belongs_to via: packer_id - from: SalesOrderFulfillment to: sales_order kind: belongs_to via: sales_order_id - from: SalesOrderRow to: location kind: belongs_to via: location_id - from: SalesOrderRow to: sales_order kind: belongs_to via: sales_order_id - from: SalesOrderRow to: tax_rate kind: belongs_to via: tax_rate_id - from: SalesOrderRow to: variant kind: belongs_to via: variant_id - from: SalesOrderress to: sales_order kind: belongs_to via: sales_order_id - from: SalesReturn to: return_location kind: belongs_to via: return_location_id - from: SalesReturn to: sales_order kind: belongs_to via: sales_order_id - from: SalesReturnRow to: fulfillment_row kind: belongs_to via: fulfillment_row_id - from: SalesReturnRow to: reason kind: belongs_to via: reason_id - from: SalesReturnRow to: restock_location kind: belongs_to via: restock_location_id - from: SalesReturnRow to: sales_return kind: belongs_to via: sales_return_id - from: SalesReturnRow to: variant kind: belongs_to via: variant_id - from: SerialNumber to: resource kind: belongs_to via: resource_id - from: SerialNumbersToEntity to: resource kind: belongs_to via: resource_id - from: Service to: custom_field_collection kind: belongs_to via: custom_field_collection_id - from: ShippingFee to: sales_order kind: belongs_to via: sales_order_id - from: ShippingFee to: tax_rate kind: belongs_to via: tax_rate_id - from: StockAdjustment to: location kind: belongs_to via: location_id - from: StockAdjustmentRow to: variant kind: belongs_to via: variant_id - from: StockAdjustmentTraceability to: batch kind: belongs_to via: batch_id - from: StockAdjustmentTraceability to: bin_location kind: belongs_to via: bin_location_id - from: StockAdjustmentTraceability to: serial_number kind: belongs_to via: serial_number_id - from: StockTransfer to: source_location kind: belongs_to via: source_location_id - from: StockTransfer to: target_location kind: belongs_to via: target_location_id - from: StockTransferRow to: variant kind: belongs_to via: variant_id - from: Stocktake to: location kind: belongs_to via: location_id - from: StocktakeRow to: batch kind: belongs_to via: batch_id - from: StocktakeRow to: bin_location kind: belongs_to via: bin_location_id - from: StocktakeRow to: variant kind: belongs_to via: variant_id - from: StocktakeRows to: stocktake kind: belongs_to via: stocktake_id - from: Supplierress to: supplier kind: belongs_to via: supplier_id - from: Traceability to: batch kind: belongs_to via: batch_id - from: Traceability to: serial_number kind: belongs_to via: serial_number_id - from: TraceabilityItem to: batch kind: belongs_to via: batch_id - from: TraceabilityItem to: bin_location kind: belongs_to via: bin_location_id - from: TraceabilityItem to: serial_number kind: belongs_to via: serial_number_id - from: UnlinkBinLocation to: location kind: belongs_to via: location_id - from: UnlinkBinLocation to: variant kind: belongs_to via: variant_id - from: UnlinkManufacturingOrder to: sales_order_row kind: belongs_to via: sales_order_row_id - from: Variant to: material kind: belongs_to via: material_id - from: Variant to: product kind: belongs_to via: product_id - from: VariantBinLocation to: location kind: belongs_to via: location_id - from: VariantBinLocation to: variant kind: belongs_to via: variant_id - from: WebhookLogsExport to: webhook kind: belongs_to via: webhook_id