generated: '2026-07-19' method: derived source: openapi/fudo-openapi-original.yml note: Entity-relationship graph derived from JSON:API relationships[] declared in the Fudo OpenAPI. Ids are numeric strings (pattern \d{1,10}). entities: - name: Customer resource: /customers relationships: - paymentMethod - name: Discount resource: /discounts relationships: - sale - item - discountTemplate - name: Expense resource: /expenses relationships: - recurringExpense - name: ExpenseCategory resource: /expense-categories relationships: - parentCategory - name: Ingredient resource: /ingredients relationships: - ingredientCategory - name: Item resource: /items relationships: - priceList - product - subitems - sale - name: Kitchen resource: /kitchens relationships: [] - name: Payment resource: /payments relationships: - paymentMethod - sale - expense - name: PaymentMethod resource: /payment-methods relationships: [] - name: ProductCategory resource: /product-categories relationships: - kitchen - parentCategory - name: ProductModifier resource: /product-modifiers relationships: - product - productModifiersGroup - name: Product resource: /products relationships: - kitchen - productCategory - productModifiersGroups - productProportions - name: Provider resource: /providers relationships: [] - name: Role resource: /roles relationships: [] - name: Room resource: /rooms relationships: [] - name: Sale resource: /sales relationships: - customer - discounts - items - payments - tips - shippingCosts - table - waiter - saleIdentifier - commercialDocuments - orders - name: Table resource: /tables relationships: - room - name: User resource: /users relationships: - role - deliveryCashRegister - tablesCashRegister - takeAwayCashRegister relationships: - from: Customer to: paymentMethod kind: has_one via: paymentMethod - from: Discount to: sale kind: has_one via: sale - from: Discount to: item kind: has_one via: item - from: Discount to: discountTemplate kind: has_one via: discountTemplate - from: Expense to: recurringExpense kind: has_one via: recurringExpense - from: ExpenseCategory to: parentCategory kind: has_one via: parentCategory - from: Ingredient to: ingredientCategory kind: has_one via: ingredientCategory - from: Item to: priceList kind: has_one via: priceList - from: Item to: product kind: has_one via: product - from: Item to: subitems kind: has_many via: subitems - from: Item to: sale kind: has_one via: sale - from: Payment to: paymentMethod kind: has_one via: paymentMethod - from: Payment to: sale kind: has_one via: sale - from: Payment to: expense kind: has_one via: expense - from: ProductCategory to: kitchen kind: has_one via: kitchen - from: ProductCategory to: parentCategory kind: has_one via: parentCategory - from: ProductModifier to: product kind: has_one via: product - from: ProductModifier to: productModifiersGroup kind: has_one via: productModifiersGroup - from: Product to: kitchen kind: has_one via: kitchen - from: Product to: productCategory kind: has_one via: productCategory - from: Product to: productModifiersGroups kind: has_many via: productModifiersGroups - from: Product to: productProportions kind: has_many via: productProportions - from: Sale to: customer kind: has_one via: customer - from: Sale to: discounts kind: has_many via: discounts - from: Sale to: items kind: has_many via: items - from: Sale to: payments kind: has_many via: payments - from: Sale to: tips kind: has_many via: tips - from: Sale to: shippingCosts kind: has_many via: shippingCosts - from: Sale to: table kind: has_one via: table - from: Sale to: waiter kind: has_one via: waiter - from: Sale to: saleIdentifier kind: has_one via: saleIdentifier - from: Sale to: commercialDocuments kind: has_many via: commercialDocuments - from: Sale to: orders kind: has_many via: orders - from: Table to: room kind: has_one via: room - from: User to: role kind: has_one via: role - from: User to: deliveryCashRegister kind: has_one via: deliveryCashRegister - from: User to: tablesCashRegister kind: has_one via: tablesCashRegister - from: User to: takeAwayCashRegister kind: has_one via: takeAwayCashRegister