digraph api { graph [rankdir=TB, splines=spline, overlap=false, bgcolor="#1e2430", nodesep=0.95, ranksep=1.0, pad=0.5, fontname="Helvetica", compound=true, mclimit=1.0]; node [shape=plaintext, fontname="Helvetica"]; edge [fontname="Helvetica", fontsize=9, penwidth=1.4, arrowsize=0.7]; subgraph cluster_identity { label="Identity & Access"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Auth [label=<
Auth
/auth
GET/.well-known/oauth-authorization-serverOAuth 2.0 Authorization Ser…
GET/.well-known/oauth-protected-resourceOAuth 2.0 Protected Resourc…
GET/meCurrent user
POST/loginLogin with Google ID token
POST/logoutLogout
PUT/selected-companySet selected company
>]; Company [label=<
Company
/company
GET/List companies
POST/Create company
GET/historyGet company history
POST/historyAdd company history entry
POST/importImport company catalog from…
PUT/{id}Update company
DELETE/{id}Delete company
>]; CompanySetting [label=<
CompanySetting
/companysetting
GET/company/settingList company settings
GET/company/setting/{key}Get company setting by key
PUT/company/setting/{key}Upsert company setting
>]; Customergroup [label=<
Customergroup
/customergroup
GET/List customer groups
POST/Create customer group
PUT/orderReorder customer groups
PATCH/{id}Update customer group
DELETE/{id}Delete customer group
>]; Number [label=<
Number
/number
GET/List number sequences
PATCH/{id}Update number sequence
>]; } subgraph cluster_crm { label="Entities & CRM"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Entity [label=<
Entity
/entity
GET/List entities
POST/Create entity
GET/{entityId}/addressList entity addresses
GET/{entityId}/contactList entity contacts
GET/{id}Get entity
GET/next-numberPeek next customer number
POST/{entityId}/addressCreate entity address
POST/{entityId}/contactCreate entity contact
PATCH/{entityId}/address/{id}Update entity address
PATCH/{entityId}/contact/{id}Update entity contact
PATCH/{id}Update entity
DELETE/{entityId}/address/{id}Delete entity address
DELETE/{entityId}/contact/{id}Delete entity contact
DELETE/{id}Delete entity
>]; } subgraph cluster_catalog { label="Catalog & Products"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Article [label=<
Article
/article
POST/Create article in category
GET/{sku}Get article by SKU
GET/{sku}/articlelistGet Stückliste (bundle item…
GET/{sku}/childrenList child articles of a pa…
GET/{sku}/historyGet article history by SKU
GET/{sku}/optionslistGet options list for an art…
GET/export.zipExport articles as ZIP
POST/{sku}/childrenCreate and attach a new chi…
POST/{sku}/imageAdd article image
POST/{sku}/parentToggle parent mode for an a…
POST/{sku}/printPrint article label
PUT/{sku}/articlelistSet Stückliste (bundle item…
PUT/{sku}/brandSet or clear article brand …
PUT/{sku}/categoriesReplace article categories …
PUT/{sku}/childrenAttach an existing article …
PUT/{sku}/eansReplace article EANs by SKU
PUT/{sku}/images/orderReorder article images
PUT/{sku}/optionslistSet options list for an art…
PUT/{sku}/pricesReplace POS prices by SKU (…
PUT/{sku}/track_stockSet article track_stock fla…
PUT/{sku}/weightSet article weight by SKU
PATCH/{sku}Update article by SKU
DELETE/{sku}Delete article by SKU
DELETE/{sku}/children/{childSku}Remove a child article from…
DELETE/{sku}/image/{fullHash}Delete article image
>]; Category [label=<
Category
/category
POST/Create category
GET/{id}/articlesArticles in category
GET/export.zipExport categories as ZIP
GET/treeCategory tree
POST/{id}/imageAdd category image
PUT/orderReorder sibling categories
PATCH/{id}Update category (rename or …
DELETE/{id}Delete category
DELETE/{id}/imageDelete category image
>]; Brand [label=<
Brand
/brand
GET/List brands
POST/Create brand
POST/{id}/imageAdd or replace brand image
PATCH/{id}Rename brand
DELETE/{id}Delete brand
DELETE/{id}/imageDelete brand image
>]; Unit [label=<
Unit
/unit
GET/List units
PUT/Upsert unit
DELETE/Delete unit
>]; PublicCatalog [label=<
PublicCatalog
/public
GET/{companyId}/articlesList public articles
GET/{companyId}/articles/{sku}Get public article detail
GET/{companyId}/categoriesList public categories
POST/telemetry/crashReceipt crash dump
>]; } subgraph cluster_properties { label="Properties & Attributes"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Property [label=<
Property
/propertyname
GET/List property names
POST/Create property name
GET/article/{sku}/propertyList article properties
GET/category/{id}/propertyList category properties
PUT/article/{sku}/propertyBulk set article properties
PUT/category/{id}/propertyBulk set category properties
PUT/orderReorder property names
PATCH/{id}Update property name
DELETE/{id}Delete property name
DELETE/article/{sku}/property/{propertyId}Delete article property
DELETE/category/{id}/property/{propertyId}Delete category property
>]; Attribute [label=<
Attribute
/attributename
GET/List attribute names
POST/Create attribute name
GET/{attributeId}/valueList values for an attribute
GET/article/{sku}/attributevalueList article attribute valu…
GET/category/{id}/attributevalueList category attribute val…
POST/{attributeId}/valueCreate value for an attribu…
POST/attributevalue/{id}/imageAdd or replace attribute va…
PUT/{attributeId}/value/orderReorder values of an attrib…
PUT/article/{sku}/attributevalueBulk set article attribute …
PUT/category/{id}/attributevalueBulk set category attribute…
PUT/orderReorder attribute names
PATCH/{id}Update attribute name
PATCH/attributevalue/{id}Update attribute value
DELETE/{id}Delete attribute name
DELETE/attributevalue/{id}Delete attribute value
DELETE/attributevalue/{id}/imageDelete attribute value image
>]; } subgraph cluster_purchasing { label="Suppliers & Purchasing"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Supplier [label=<
Supplier
/supplier
GET/List suppliers
POST/Create supplier
GET/{id}/articlesList supplier articles by S…
POST/{id}/articlesQuery supplier articles by …
PATCH/{id}Update supplier
DELETE/{id}Delete supplier
>]; ArticleSupplier [label=<
ArticleSupplier
/article/{sku}/supplier
GET/List article suppliers
POST/Assign supplier to article
PUT/orderReorder article suppliers
PATCH/{id}Update article supplier ass…
DELETE/{id}Remove supplier assignment …
>]; Delivery [label=<
Delivery
/delivery
GET/List deliveries
POST/Create delivery
GET/{id}Get delivery
GET/{id}/file/{fileId}Get delivery attachment fil…
POST/parseParse document (SSE)
PATCH/{id}Update delivery
DELETE/{id}Delete delivery
>]; } subgraph cluster_sales { label="Sales & Fulfillment"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Quote [label=<
Quote
/quote
GET/List quotes
POST/Create quote
GET/{id}Get quote
PATCH/{id}Update quote
DELETE/{id}Delete quote
>]; Order [label=<
Order
/order
GET/List orders
POST/Create order
GET/{id}Get order
GET/{id}/paymentList payments of an order
GET/{id}/shipmentList shipments of an order
GET/{id}/shippingList shippings of an order
POST/{id}/paymentAdd payment to an order
POST/{id}/shipmentCreate shipment for an order
POST/{id}/shippingCreate shipping for an order
PATCH/{id}Update order
DELETE/{id}Delete order
>]; Shipment [label=<
Shipment
/shipment
GET/{id}Get shipment by ID
GET/{id}/shippingList packages of a shipment
POST/{id}/shippingCreate package for a shipme…
DELETE/{id}Delete shipment
>]; Shipping [label=<
Shipping
/shipping
GET/{id}/packageList packages of a shipping
POST/{id}/packageCreate package for a shippi…
PATCH/{id}Update shipping
DELETE/{id}Delete shipping
>]; Package [label=<
Package
/package
DELETE/{id}Delete package
>]; } subgraph cluster_inventory { label="Inventory & Warehousing"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Stock [label=<
Stock
/stock
POST/adjustAdjust stock manually
>]; Ledger [label=<
Ledger
/ledger
GET/Query ledger by manifest ar…
POST/Add ledger entry
GET/manifestarticle/{manifestarticleId}Query ledger by manifest ar…
GET/sku/{sku}Query ledger by article SKU
>]; Warehouse [label=<
Warehouse
/warehouse
GET/List warehouses
POST/Create warehouse
GET/{id}Get warehouse by ID
PUT/{id}Update warehouse
PUT/orderReorder warehouses
PATCH/{id}Update warehouse (partial)
DELETE/{id}Delete warehouse
>]; } subgraph cluster_finance { label="Finance & Payments"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Account [label=<
Account
/account
GET/List accounts
POST/Create account
DELETE/{id}Delete account
>]; Payment [label=<
Payment
/payment
DELETE/{id}Delete payment
>]; } subgraph cluster_media { label="Media & Storage"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Image [label=<
Image
/image
GET/{fullHash}Full image by hash
GET/smallthumb/{fullHash}Small thumb image by hash
GET/thumb/{fullHash}Thumb image by hash
>]; Serper [label=<
Serper
/serper
POST/imageCrawl image from URL, crop …
POST/imagesSearch images via Serper.de…
>]; Vfs [label=<
Vfs
/vfs
GET/List virtual filesystem fil…
GET/{*path}Get a virtual filesystem fi…
POST/{*path}Execute a virtual filesyste…
POST/mkdirCreate directory in virtual…
POST/renameRename or move a virtual fi…
POST/uploadUpload files to virtual fil…
PUT/{*path}Create or overwrite a virtu…
DELETE/{*path}Delete a virtual filesystem…
>]; } subgraph cluster_pos { label="POS & Hardware"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; POSTerminal [label=<
POSTerminal
/posterminal
GET/List POS terminals
PUT/Create POS terminal
PUT/{id}/allEnable all categories on te…
PUT/{id}/category/{categoryId}Enable category on terminal
PATCH/{id}Update POS terminal
DELETE/{id}Delete POS terminal
DELETE/{id}/allDisable all categories on t…
DELETE/{id}/category/{categoryId}Disable category on terminal
>]; Printer [label=<
Printer
/printer
GET/List printers
POST/Create printer
GET/{id}Get printer by ID
PUT/{id}Update printer
PUT/orderReorder printers
PATCH/{id}Update printer (partial)
DELETE/{id}Delete printer
>]; LabelTemplate [label=<
LabelTemplate
/labeltemplate
GET/List label templates
POST/Create label template
GET/{id}Get label template by ID
PUT/{id}Update label template
PATCH/{id}Update label template (part…
DELETE/{id}Delete label template
>]; POSSync [label=<
POSSync
/v1
GET/categoryJTL-POS category synchroniz…
GET/clientPOS discovery and pairing
GET/initPOS sync initialization cou…
GET/pimagePOS product image delivery
GET/productJTL-POS product catalog syn…
>]; } subgraph cluster_ai_mcp { label="AI & Integrations"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; ModelConversation [label=<
ModelConversation
/modelconversation
GET/List conversations
POST/Create conversation
GET/{id}Get conversation
GET/{id}/messageList conversation messages
GET/{id}/streamStream conversation events …
POST/{id}/messagePost a user message
DELETE/{id}Delete conversation
>]; MCP [label=<
MCP
/mcp
POST/Model Context Protocol (MCP…
GET/authorizationsList active MCP client auth…
GET/authorizeGet MCP authorization promp…
GET/clientsList registered MCP clients
GET/oauth/authorizeOAuth 2.1 Authorization End…
POST/authorizeGrant or deny MCP client au…
POST/oauth/introspectOAuth 2.0 Token Introspecti…
POST/oauth/registerDynamic Client Registration…
POST/oauth/tokenOAuth 2.1 Token Endpoint (R…
DELETE/authorizations/{clientId}Revoke MCP client authoriza…
DELETE/clients/{clientId}Delete registered MCP client
>]; } subgraph cluster_system { label="System & Realtime"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#202a3a"; color="#3f4c5f"; fontcolor="#e2e8f0"; margin=14; Events [label=<
Events
/events
GET/Subscribe to update signals…
>]; Health [label=<
Health
/health
GET/Database health check
>]; Legend [label=<
API Graph Legend
GETSafe retrieval / query
POSTCreate resource / action
PUTFull replace / collection update
PATCHPartial entity update
DELETERemove resource
in#Inbound arrival port on resource
▪—▶Relational reference / dataflow
>]; } Order:ep_get__order__id_:e -> Entity:in2:n [color="#ff6b6b", fontcolor="#ff6b6b", tooltip="Order → Entity (entityId)", label=" entityId ", weight=3]; Order:ep_post__order:e -> Article:in3:n [color="#6bdf9a", fontcolor="#6bdf9a", tooltip="Order → Article (lines.sku)", label=" lines.sku ", constraint=false, weight=1]; Order:ep_get__order__id_:e -> Shipment:in0:n [color="#5aa7ff", fontcolor="#5aa7ff", tooltip="Order → Shipment (shipments)", label=" shipments ", constraint=false, weight=1]; Order:ep_get__order__id_:e -> Payment:in0:n [color="#f5c15c", fontcolor="#f5c15c", tooltip="Order → Payment (payments)", label=" payments ", constraint=false, weight=1]; Order:ep_get__order__id_:e -> Shipping:in0:n [color="#c79bff", fontcolor="#c79bff", tooltip="Order → Shipping (shippings)", label=" shippings ", constraint=false, weight=1]; Quote:ep_get__quote__id_:e -> Entity:in1:n [color="#ff9f5a", fontcolor="#ff9f5a", tooltip="Quote → Entity (entityId)", label=" entityId ", constraint=false, weight=1]; Quote:ep_post__quote:e -> Article:in2:n [color="#5cd6d6", fontcolor="#5cd6d6", tooltip="Quote → Article (lines.sku)", label=" lines.sku ", constraint=false, weight=1]; Quote:ep_post__quote:e -> Order:in0:n [color="#ff7fc2", fontcolor="#ff7fc2", tooltip="Quote → Order (convert order)", label=" convert order ", weight=3]; Shipment:ep_get__shipment__id_:w -> Order:in1:n [color="#8f95ff", fontcolor="#8f95ff", tooltip="Shipment → Order (manifestId)", label=" manifestId ", constraint=false, weight=1]; Shipment:ep_get__shipment__id_:e -> Article:in4:n [color="#58d18a", fontcolor="#58d18a", tooltip="Shipment → Article (lines.sku)", label=" lines.sku ", weight=3]; Shipment:ep_get__shipment__id__shipping:w -> Shipping:in2:n [color="#ff8f66", fontcolor="#ff8f66", tooltip="Shipment → Shipping (shippings)", label=" shippings ", constraint=false, weight=1]; Shipping:ep_get__shipping__id__package:e -> Package:in0:n [color="#4fc4e8", fontcolor="#4fc4e8", tooltip="Shipping → Package (packages)", label=" packages ", weight=3]; Package:w -> Shipping:in1:n [color="#a98cff", fontcolor="#a98cff", tooltip="Package → Shipping (shippingId)", label=" shippingId ", constraint=false, weight=1]; Package:e -> Entity:in3:n [color="#ff6f6f", fontcolor="#ff6f6f", tooltip="Package → Entity (addressId)", label=" addressId ", weight=3]; Delivery:ep_post__delivery:w -> Supplier:in1:n [color="#4ecb8f", fontcolor="#4ecb8f", tooltip="Delivery → Supplier (supplierId)", label=" supplierId ", constraint=false, weight=1]; Delivery:ep_post__delivery:e -> Article:in1:n [color="#5aa7e6", fontcolor="#5aa7e6", tooltip="Delivery → Article (lines.sku)", label=" lines.sku ", constraint=false, weight=1]; Delivery:ep_get__delivery__id_:e -> Ledger:in0:n [color="#ff7aa8", fontcolor="#ff7aa8", tooltip="Delivery → Ledger (ledger)", label=" ledger ", weight=3]; ArticleSupplier:ep_post__article__sku__supplier:e -> Supplier:in0:n [color="#e0b25a", fontcolor="#e0b25a", tooltip="ArticleSupplier → Supplier (entityId)", label=" entityId ", weight=3]; ArticleSupplier:ep_get__article__sku__supplier:e -> Article:in0:n [color="#56c8c8", fontcolor="#56c8c8", tooltip="ArticleSupplier → Article (sku)", label=" sku ", constraint=false, weight=1]; Supplier:ep_get__supplier__id__articles:e -> Entity:in0:n [color="#ff5f9e", fontcolor="#ff5f9e", tooltip="Supplier → Entity (entityId)", label=" entityId ", weight=3]; Stock:ep_post__stock_adjust:e -> Article:in5:n [color="#ffb25a", fontcolor="#ffb25a", tooltip="Stock → Article (sku)", label=" sku ", constraint=false, weight=1]; Stock:ep_post__stock_adjust:e -> Warehouse:in0:n [color="#56d68a", fontcolor="#56d68a", tooltip="Stock → Warehouse (warehouseId)", label=" warehouseId ", constraint=false, weight=1]; Stock:ep_post__stock_adjust:e -> Ledger:in1:n [color="#66b3ff", fontcolor="#66b3ff", tooltip="Stock → Ledger (ledger)", label=" ledger ", weight=3]; Ledger:ep_get__ledger:w -> Article:in9:n [color="#c79bff", fontcolor="#c79bff", tooltip="Ledger → Article (sku)", label=" sku ", weight=3]; Ledger:ep_get__ledger:w -> Warehouse:in1:n [color="#ff6b6b", fontcolor="#ff6b6b", tooltip="Ledger → Warehouse (warehouseId)", label=" warehouseId ", constraint=false, weight=1]; Article:ep_post__article:w -> Category:in1:n [color="#6bdf9a", fontcolor="#6bdf9a", tooltip="Article → Category (categoryId)", label=" categoryId ", constraint=false, weight=1]; Article:ep_put__article__sku__brand:w -> Brand:in0:n [color="#5aa7ff", fontcolor="#5aa7ff", tooltip="Article → Brand (brand)", label=" brand ", constraint=false, weight=1]; Article:ep_patch__article__sku_:w -> Unit:in0:n [color="#f5c15c", fontcolor="#f5c15c", tooltip="Article → Unit (unitSi)", label=" unitSi ", constraint=false, weight=1]; Article:ep_get__article__sku_:w -> ArticleSupplier:in0:n [color="#c79bff", fontcolor="#c79bff", tooltip="Article → ArticleSupplier (suppliers)", label=" suppliers ", constraint=false, weight=1]; Article:ep_post__article__sku__image:e -> Image:in2:n [color="#ff9f5a", fontcolor="#ff9f5a", tooltip="Article → Image (photos)", label=" photos ", constraint=false, weight=1]; Article:ep_put__article__sku__prices:e -> Customergroup:in1:n [color="#5cd6d6", fontcolor="#5cd6d6", tooltip="Article → Customergroup (prices)", label=" prices ", constraint=false, weight=1]; Article:e -> Property:in1:n [color="#ff7fc2", fontcolor="#ff7fc2", tooltip="Article → Property (properties)", label=" properties ", constraint=false, weight=1]; Article:e -> Attribute:in1:n [color="#8f95ff", fontcolor="#8f95ff", tooltip="Article → Attribute (attributes)", label=" attributes ", weight=3]; Article:ep_get__article__sku__children:ne -> Article:in7:n [color="#58d18a", fontcolor="#58d18a", tooltip="Article → Article (bundles & variants)", label=" bundles & variants ", weight=3]; Category:ep_get__category__id__articles:ne -> Category:in0:n [color="#ff8f66", fontcolor="#ff8f66", tooltip="Category → Category (parentId)", label=" parentId ", weight=3]; Category:ep_get__category__id__articles:e -> Article:in6:n [color="#4fc4e8", fontcolor="#4fc4e8", tooltip="Category → Article (articles)", label=" articles ", weight=3]; Category:ep_post__category__id__image:e -> Image:in1:n [color="#a98cff", fontcolor="#a98cff", tooltip="Category → Image (image)", label=" image ", constraint=false, weight=1]; Category:e -> Property:in0:n [color="#ff6f6f", fontcolor="#ff6f6f", tooltip="Category → Property (properties)", label=" properties ", constraint=false, weight=1]; Category:e -> Attribute:in0:n [color="#4ecb8f", fontcolor="#4ecb8f", tooltip="Category → Attribute (attributes)", label=" attributes ", constraint=false, weight=1]; Brand:ep_post__brand__id__image:e -> Image:in0:n [color="#5aa7e6", fontcolor="#5aa7e6", tooltip="Brand → Image (image)", label=" image ", weight=3]; Property:ep_get__propertyname:e -> Company:in0:n [color="#ff7aa8", fontcolor="#ff7aa8", tooltip="Property → Company (companyId)", label=" companyId ", weight=3]; Attribute:ep_post__attributevalue__id__image:e -> Image:in3:n [color="#e0b25a", fontcolor="#e0b25a", tooltip="Attribute → Image (image)", label=" image ", weight=3]; Payment:e -> Account:in0:n [color="#56c8c8", fontcolor="#56c8c8", tooltip="Payment → Account (accountId)", label=" accountId ", weight=3]; Payment:w -> Order:in3:n [color="#ff5f9e", fontcolor="#ff5f9e", tooltip="Payment → Order (manifestId)", label=" manifestId ", constraint=false, weight=1]; Account:ep_get__account:e -> Company:in4:n [color="#ffb25a", fontcolor="#ffb25a", tooltip="Account → Company (companyId)", label=" companyId ", weight=3]; Entity:ep_post__entity:e -> Customergroup:in0:n [color="#56d68a", fontcolor="#56d68a", tooltip="Entity → Customergroup (customergroupId)", label=" customergroupId ", weight=3]; Company:e -> Customergroup:in2:n [color="#66b3ff", fontcolor="#66b3ff", tooltip="Company → Customergroup (poscustomergroup)", label=" poscustomergroup ", weight=3]; Company:w -> Category:in5:n [color="#c79bff", fontcolor="#c79bff", tooltip="Company → Category (root_category)", label=" root_category ", constraint=false, weight=1]; Company:w -> CompanySetting:in0:n [color="#ff6b6b", fontcolor="#ff6b6b", tooltip="Company → CompanySetting (settings)", label=" settings ", constraint=false, weight=1]; Number:ep_get__number:w -> Company:in5:n [color="#6bdf9a", fontcolor="#6bdf9a", tooltip="Number → Company (companyId)", label=" companyId ", weight=3]; POSTerminal:ep_get__posterminal:e -> Company:in2:n [color="#5aa7ff", fontcolor="#5aa7ff", tooltip="POSTerminal → Company (companyId)", label=" companyId ", weight=3]; POSTerminal:ep_get__posterminal:w -> Category:in3:n [color="#f5c15c", fontcolor="#f5c15c", tooltip="POSTerminal → Category (root_category)", label=" root_category ", constraint=false, weight=1]; Printer:ep_get__printer:e -> Company:in3:n [color="#c79bff", fontcolor="#c79bff", tooltip="Printer → Company (companyId)", label=" companyId ", weight=3]; Printer:ep_get__printer:w -> LabelTemplate:in0:n [color="#ff9f5a", fontcolor="#ff9f5a", tooltip="Printer → LabelTemplate (templates)", label=" templates ", constraint=false, weight=1]; LabelTemplate:ep_get__labeltemplate:e -> Company:in1:n [color="#5cd6d6", fontcolor="#5cd6d6", tooltip="LabelTemplate → Company (companyId)", label=" companyId ", weight=3]; POSSync:w -> POSTerminal:in0:n [color="#ff7fc2", fontcolor="#ff7fc2", tooltip="POSSync → POSTerminal (client bind)", label=" client bind ", constraint=false, weight=1]; POSSync:ep_get__v1_product:w -> Article:in12:n [color="#8f95ff", fontcolor="#8f95ff", tooltip="POSSync → Article (product sync)", label=" product sync ", constraint=false, weight=1]; POSSync:ep_get__v1_category:w -> Category:in4:n [color="#58d18a", fontcolor="#58d18a", tooltip="POSSync → Category (category sync)", label=" category sync ", weight=3]; PublicCatalog:w -> Article:in8:n [color="#ff8f66", fontcolor="#ff8f66", tooltip="PublicCatalog → Article (articles)", label=" articles ", weight=3]; PublicCatalog:w -> Category:in2:n [color="#4fc4e8", fontcolor="#4fc4e8", tooltip="PublicCatalog → Category (category)", label=" category ", constraint=false, weight=1]; ModelConversation:ep_get__modelconversation:e -> Vfs:in0:n [color="#a98cff", fontcolor="#a98cff", tooltip="ModelConversation → Vfs (vfs workspace)", label=" vfs workspace ", weight=3]; MCP:ep_post__mcp:w -> Article:in10:n [color="#ff6f6f", fontcolor="#ff6f6f", tooltip="MCP → Article (article tools)", label=" article tools ", weight=3]; MCP:ep_post__mcp:w -> Order:in2:n [color="#4ecb8f", fontcolor="#4ecb8f", tooltip="MCP → Order (order tools)", label=" order tools ", constraint=false, weight=1]; Events:ep_get__events:w -> Stock:in0:n [color="#5aa7e6", fontcolor="#5aa7e6", tooltip="Events → Stock (stock sse)", label=" stock sse ", constraint=false, weight=1]; Events:ep_get__events:w -> Ledger:in2:n [color="#ff7aa8", fontcolor="#ff7aa8", tooltip="Events → Ledger (ledger sse)", label=" ledger sse ", constraint=false, weight=1]; Events:ep_get__events:w -> Article:in11:n [color="#e0b25a", fontcolor="#e0b25a", tooltip="Events → Article (article sse)", label=" article sse ", weight=3]; }