📦 Products
Product inventory and stock management
Get a paginated list of products with optional filters
Filter products by category
Filter only low stock products (true/false)
Filter products by name/title (case-insensitive partial match)
Filter products by product type
Search products by name, product code, or barcode
Filter products by status (active, inactive, discontinued, out_of_stock)
Lightweight serializer for product lists.
manufacture- Manufacturebuy- Buy
Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
Unauthorized
Forbidden
GET /api/v1.0/organisation/{org_uid}/inventory/ HTTP/1.1
Host: skhokho.ai
Accept: */*
[
{
"unique_id": "text",
"name": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"unit_of_measure": "piece",
"status": "active",
"is_low_stock": true,
"image_url": "https://example.com",
"date_created": "2026-01-01T00:00:00.000Z"
}
]Create a new product
Full serializer for Product creation and updates. Handles translatable fields correctly.
Product type is required.
manufacture- Manufacturebuy- Buy
piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
Cost price per unit
^-?\d{0,13}(?:\.\d{0,2})?$Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
Product image for catalogs and invoices
Detailed serializer for single product retrieval.
manufacture- Manufacturebuy- Buy
piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
Cost price per unit
^-?\d{0,13}(?:\.\d{0,2})?$Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
^-?\d{0,8}(?:\.\d{0,2})?$Bad Request
Unauthorized
Forbidden
POST /api/v1.0/organisation/{org_uid}/inventory/create/ HTTP/1.1
Host: skhokho.ai
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"name": "text",
"description": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"model_number": "text",
"unit_of_measure": "piece",
"cost_price": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"maximum_stock_level": "text",
"status": "active",
"image": "binary",
"supplier_name": "text"
}{
"unique_id": "text",
"name": "text",
"description": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"model_number": "text",
"unit_of_measure": "piece",
"cost_price": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"maximum_stock_level": "text",
"status": "active",
"image_url": "https://example.com",
"supplier_name": "text",
"created_by": {
"unique_id": "text",
"full_name": "text"
},
"is_low_stock": true,
"profit_margin": "text",
"date_created": "2026-01-01T00:00:00.000Z",
"last_updated": "2026-01-01T00:00:00.000Z"
}Get detailed information about a specific product
Detailed serializer for single product retrieval.
manufacture- Manufacturebuy- Buy
piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
Cost price per unit
^-?\d{0,13}(?:\.\d{0,2})?$Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
^-?\d{0,8}(?:\.\d{0,2})?$Unauthorized
Forbidden
Not Found
GET /api/v1.0/organisation/{org_uid}/inventory/{unique_id}/ HTTP/1.1
Host: skhokho.ai
Accept: */*
{
"unique_id": "text",
"name": "text",
"description": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"model_number": "text",
"unit_of_measure": "piece",
"cost_price": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"maximum_stock_level": "text",
"status": "active",
"image_url": "https://example.com",
"supplier_name": "text",
"created_by": {
"unique_id": "text",
"full_name": "text"
},
"is_low_stock": true,
"profit_margin": "text",
"date_created": "2026-01-01T00:00:00.000Z",
"last_updated": "2026-01-01T00:00:00.000Z"
}Update product information (PUT for full update, PATCH for partial)
Full serializer for Product creation and updates. Handles translatable fields correctly.
Product type is required.
manufacture- Manufacturebuy- Buy
piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
Cost price per unit
^-?\d{0,13}(?:\.\d{0,2})?$Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
Product image for catalogs and invoices
Detailed serializer for single product retrieval.
manufacture- Manufacturebuy- Buy
piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
Cost price per unit
^-?\d{0,13}(?:\.\d{0,2})?$Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
^-?\d{0,8}(?:\.\d{0,2})?$Bad Request
Unauthorized
Forbidden
Not Found
PUT /api/v1.0/organisation/{org_uid}/inventory/{unique_id}/update/ HTTP/1.1
Host: skhokho.ai
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"name": "text",
"description": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"model_number": "text",
"unit_of_measure": "piece",
"cost_price": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"maximum_stock_level": "text",
"status": "active",
"image": "binary",
"supplier_name": "text"
}{
"unique_id": "text",
"name": "text",
"description": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"model_number": "text",
"unit_of_measure": "piece",
"cost_price": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"maximum_stock_level": "text",
"status": "active",
"image_url": "https://example.com",
"supplier_name": "text",
"created_by": {
"unique_id": "text",
"full_name": "text"
},
"is_low_stock": true,
"profit_margin": "text",
"date_created": "2026-01-01T00:00:00.000Z",
"last_updated": "2026-01-01T00:00:00.000Z"
}Update product information (PUT for full update, PATCH for partial)
Full serializer for Product creation and updates. Handles translatable fields correctly.
Product type is required.
manufacture- Manufacturebuy- Buy
piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
Cost price per unit
^-?\d{0,13}(?:\.\d{0,2})?$Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
Product image for catalogs and invoices
Detailed serializer for single product retrieval.
manufacture- Manufacturebuy- Buy
piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
Cost price per unit
^-?\d{0,13}(?:\.\d{0,2})?$Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
^-?\d{0,8}(?:\.\d{0,2})?$Bad Request
Unauthorized
Forbidden
Not Found
PATCH /api/v1.0/organisation/{org_uid}/inventory/{unique_id}/update/ HTTP/1.1
Host: skhokho.ai
Content-Type: application/json
Accept: */*
Content-Length: 394
{
"name": "text",
"description": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"model_number": "text",
"unit_of_measure": "piece",
"cost_price": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"maximum_stock_level": "text",
"status": "active",
"image": "binary",
"supplier_name": "text"
}{
"unique_id": "text",
"name": "text",
"description": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"model_number": "text",
"unit_of_measure": "piece",
"cost_price": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"maximum_stock_level": "text",
"status": "active",
"image_url": "https://example.com",
"supplier_name": "text",
"created_by": {
"unique_id": "text",
"full_name": "text"
},
"is_low_stock": true,
"profit_margin": "text",
"date_created": "2026-01-01T00:00:00.000Z",
"last_updated": "2026-01-01T00:00:00.000Z"
}Perform actions on a product (deactivate, mark_out_of_stock). Uses query parameters.
Action to perform: deactivate or mark_out_of_stock
Detailed serializer for single product retrieval.
manufacture- Manufacturebuy- Buy
piece- Piecekg- Kilogramgram- Gramliter- Litermeter- Metersquare_meter- Square Metercubic_meter- Cubic Meterhour- Hourday- Daymonth- Monthyear- Yearbox- Boxpack- Packdozen- Dozenother- Other
Cost price per unit
^-?\d{0,13}(?:\.\d{0,2})?$Selling price per unit
^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$^-?\d{0,13}(?:\.\d{0,2})?$active- Activeinactive- Inactivediscontinued- Discontinuedout_of_stock- Out of Stock
^-?\d{0,8}(?:\.\d{0,2})?$Bad Request - Invalid action
Unauthorized
Forbidden
Not Found
GET /api/v1.0/organisation/{org_uid}/inventory/{unique_id}/action/?action=deactivate HTTP/1.1
Host: skhokho.ai
Accept: */*
{
"unique_id": "text",
"name": "text",
"description": "text",
"short_description": "text",
"product_code": "text",
"barcode": "text",
"product_type": "manufacture",
"category": "text",
"brand": "text",
"model_number": "text",
"unit_of_measure": "piece",
"cost_price": "text",
"selling_price": "text",
"current_stock": "text",
"minimum_stock_level": "text",
"maximum_stock_level": "text",
"status": "active",
"image_url": "https://example.com",
"supplier_name": "text",
"created_by": {
"unique_id": "text",
"full_name": "text"
},
"is_low_stock": true,
"profit_margin": "text",
"date_created": "2026-01-01T00:00:00.000Z",
"last_updated": "2026-01-01T00:00:00.000Z"
}Last updated
