Skip to content

InFinOwl connector

InFinOwl is TechTur's clothing brand: one business, a storefront (Next.js) and a NestJS API with size/colour variants and an Inventory table with reserved counts.

Status: POS side implemented and tested. The InFinOwl mapping is in examples/infinowl-connector/ and unit-tested against InFinOwl's schema. Installing it in the InFinOwl API (a NestJS module on a feature branch) and approving the live application are pending.

Shape

InFinOwl is a single merchant, so the mapping model is one_business_per_platform: one POS business (InFinOwl's shop and any physical stand) linked once by the InFinOwl owner via launch ticket with businessRole: "owner". InFinOwl staff with SUPER_ADMIN or MANAGER map to Business Administrator/Store Manager.

Catalogue (InFinOwl owns it)

InFinOwl POS
Product.id product externalId
ProductVariant.id variant externalId; name = "size / color"; attributes { size, colour }
ProductVariant.sku / Product.sku sku
ProductVariant.price ?? Product.price price
first ProductImage.url imageUrl
first ProductCategory → Category category
status === "ACTIVE" isActive
product without variants one variant with externalId = "product:" + Product.id

Stock (POS owns it)

POS becomes the stock authority across the website and any physical sales. InFinOwl's checkout submits orders to POS (paid orders deduct, pending payments reserve) and updates its Inventory.quantity from inventory.changed, so online and in-person sales never oversell or double-deduct. Until the InFinOwl side is installed, InFinOwl remains authoritative and POS should not be used for its stock.

Orders

Order.id → externalRef; PAID with the Payment.providerRef → payment; PENDING → unpaid (reserve); CANCELLED before payment → cancel; SHIPPED/DELIVERED → fulfilment.