Categories API

Menu categorization and hierarchy

GET/api/categories

List 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/categories

Create 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/reorder

Update 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"
}