Categories API
Menu categorization and hierarchy
GET
/api/categoriesList all categories
Query Parameters
locationIdincludeInactive
Response
{
"data": [
{
"id": "uuid",
"name": "Beverages",
"description": "Hot and cold drinks",
"sortOrder": 1,
"isActive": true
},
{
"id": "uuid",
"name": "Food",
"description": "Main dishes",
"sortOrder": 2,
"isActive": true
}
],
"total": 2
}GET
/api/categories/{id}Get category details
Response
{
"id": "uuid",
"name": "Beverages",
"description": "Hot and cold drinks",
"imageUrl": "https://...",
"sortOrder": 1,
"isActive": true,
"parentCategoryId": null,
"productCount": 12
}POST
/api/categoriesCreate a new category
Request Body
{
"name": "string",
"description": "string (optional)",
"imageUrl": "string (url, optional)",
"parentCategoryId": "uuid (optional)",
"sortOrder": "number (optional)",
"locationId": "uuid (if not in params)"
}Response
{
"id": "uuid",
"name": "New Category",
"sortOrder": 3,
"isActive": true,
"createdAt": "2026-03-21T00:00:00Z"
}PUT
/api/categories/{id}Update a category
Request Body
{
"name": "string (optional)",
"description": "string (optional)",
"imageUrl": "string (url, optional)",
"parentCategoryId": "uuid (optional)",
"sortOrder": "number (optional)",
"isActive": "boolean (optional)"
}Response
{
"id": "uuid",
"name": "Updated Category",
"isActive": true,
"updatedAt": "2026-03-21T00:00:00Z"
}PUT
/api/categories/reorderUpdate category sort order
Request Body
{
"categoryIds": "uuid[]",
"locationId": "uuid (optional)"
}Response
{
"success": true,
"reordered": 5
}DELETE
/api/categories/{id}Delete a category
Response
{
"success": true,
"message": "Category deleted"
}