Products & Inventory

Manage catalogue synchronisation, inventory adjustments and scanner-assisted ordering workflows across all POSSUM touchpoints.

ProductController

Synchronises products, prices and stock levels between POSSUM POS, external ERPs (Visma) and online channels.

Endpoint Description Request Response
GET /api/Product/GetAllProducts Returns the complete product catalogue with related metadata for initial synchronisation. None. ProductData model containing products, categories, accounting data and price policies.
GET /api/Product/GetProducts Returns products that changed within the supplied date window. Query: Dates with delta range and paging. ProductData containing only the modified entities.
GET /api/Product/GetCampaignsData Provides campaign definitions to keep tills aware of current promotions. None. CampaignData structure with product campaign details.
GET /api/Product/GetProductsInPaging Fetches paged product data for resource constrained devices. Query: Dates containing PageNo and PageSize. ProductData page.
GET /api/Product/GetCategoryWithProducts Returns a hierarchal view of categories together with their assigned products. None. Collection of Category entities with product lists.
GET /api/Product/GetProductsWithoutExternalID Lists products missing an ExternalId so ERP connectors can enrich them. None. List of Product.
POST /api/Product/GetProductById Retrieves product and pricing information for a specific identifier. Body: request object with ProductId and optional outlet context. Product plus pricing metadata.
POST /api/Product/GetItemInventory Returns stock quantities for the requested product identifiers. Body: ItemInventory request containing product IDs and outlet/warehouse context. List of inventory snapshots.
POST /api/Product/PostProduct Creates or updates a single product coming from the POS back office. Body: Product. HTTP 200 when saved; HTTP 417 on failure.
POST /api/Product/PostProductWithItemCategory Creates or updates a product and its category relationships in one request. Body: Product plus category assignments. HTTP 200 when saved; HTTP 417 otherwise.
POST /api/Product/PostProductsBatch Bulk upserts products exported from POSSUM back office. Body: array of Product records. HTTP 200 after commit; HTTP 417 when validation fails.
POST /api/Product/PostVismaProductsBatch Bulk upserts products received from Visma, mapping fields onto POSSUM schema. Body: array of Visma sourced Product objects. HTTP 200 when synchronised; HTTP 417 on exception.
POST /api/Product/PostProductsBatchNew Alternative batch endpoint optimised for large payloads from POS clients. Body: Product collection. HTTP 200 when processed; HTTP 417 otherwise.
POST /api/Product/PostVismaProductsBatchNew Newer Visma batch importer supporting updated Visma schemas. Body: array of Visma Product records. HTTP 200 on success; HTTP 417 on failure.
POST /api/Product/GetProductByOrderId Returns the products referenced by a given order for fulfilment integrations. Body: payload with OrderId. List of Product entities.
POST /api/Product/PostProductStock Overwrites stock levels for submitted products (used during stock-taking). Body: stock adjustment request. HTTP 200 when stock is updated; HTTP 417 otherwise.
POST /api/Product/AddProductStock Adds to the existing stock quantity for products (incremental adjustments). Body: stock increment payload. HTTP 200 on success; HTTP 417 for errors.
POST /api/Product/GetProductStockHistory Returns historical stock movements for the provided filters. Body: history query parameters (product IDs, date range). Collection of ProductStockHistory.

InventoryController

Captures physical inventory counts from mobile devices and persists them together with product stock history.

Endpoint Description Request Response
POST /api/Inventory/PostInventory Uploads a counted inventory including sections and product stock history, generating stock history groups. Body: InventoryData with inventory name and section-level stock entries. HTTP 200 with the submitted payload echoed back; HTTP 417 when processing fails.

CategoryController

Allows tills to send newly created categories (for example, when operating in offline mode) back to head office.

Endpoint Description Request Response
POST /api/Category/PostCategory Creates or updates a category record received from a POS device. Body: Category details. HTTP 200 on success; HTTP 417 if persistence fails.

ScannerController

Supports the mobile scanner application by managing scanner-originated orders and search-driven catalogue retrieval.

Endpoint Description Request Response
POST /api/Scanner/PostOpenOrder Creates a completed order generated by the scanner app, automatically assigning invoice numbers and receipts. Body: Order with line items scanned on the device. JSON object containing the stored Order and a success flag.
GET /api/Scanner/SearchProducts Performs a paged product search filtered by barcode or description for the requesting terminal's outlet. Query: SeachProductModel with Term, paging and TerminalId. JSON payload of matching products with pricing and category context.
POST /api/Scanner/GetOrdersByGuid Looks up orders by GUID for the scanner workflow (e.g. to resume a previously created order). Body: identifier payload. Order lookup result with status metadata.