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. |