MenuCraft API Documentation

RESTful API for managing restaurant menu data

API Overview

MenuCraft API provides endpoints for restaurant owners to manage their menu categories, items, and business settings.

Base URL: /api/v1

Authentication

Most endpoints require authentication using a JWT token. Include the token in the Authorization header:

Authorization: Bearer <your_jwt_token>
POST /api/v1/admin/login

Login to get access token.

Request Body:

{
  "email": "user@example.com",
  "password": "your_password"
}

Response:

{
  "accessToken": "jwt_access_token",
  "refreshToken": "jwt_refresh_token"
}
POST /api/v1/admin/token

Refresh your access token.

Request Body:

{
  "token": "refresh_token"
}

Categories

GET /api/v1/category

Get all categories with pagination.

Query Parameters:

page - Page number (default: 1)
limit - Items per page (default: 10)
POST /api/v1/category

Create a new category. (Requires authentication)

Request Body:

{
  "name": "Category Name",
  "image": "base64_encoded_image",
  "section": "Section Name"
}
GET /api/v1/category/getById/:id

Get a specific category by ID. (Requires authentication)

PUT /api/v1/category

Update a category. (Requires authentication)

Request Body:

{
  "id": 1,
  "name": "Updated Name",
  "image": "base64_encoded_image",
  "section": "Updated Section"
}
DELETE /api/v1/category/:id

Delete a category. (Requires authentication)

GET /api/v1/category/search

Search categories by name. (Requires authentication)

Query Parameters:

name - Search term
page - Page number (default: 1)
limit - Items per page (default: 10)

Items

GET /api/v1/item

Get all items with pagination.

Query Parameters:

page - Page number (default: 1)
limit - Items per page (default: 10)
POST /api/v1/item

Create a new item. (Requires authentication)

Request Body:

{
  "name": "Item Name",
  "description": "Item Description",
  "image": "base64_encoded_image",
  "category_id": 1,
  "type": "NonVeg"
}
GET /api/v1/item/getById/:id

Get a specific item by ID. (Requires authentication)

GET /api/v1/item/getByCategory

Get items by category ID.

Query Parameters:

category_id - Category ID
page - Page number (default: 1)
limit - Items per page (default: 10)
PUT /api/v1/item

Update an item. (Requires authentication)

Request Body:

{
  "id": 1,
  "name": "Updated Item Name",
  "description": "Updated Description",
  "image": "base64_encoded_image",
  "category_id": 1,
  "type": "Veg"
}
DELETE /api/v1/item/:id

Delete an item. (Requires authentication)

GET /api/v1/item/search

Search items by name.

Query Parameters:

query - Search term
page - Page number (default: 1)
limit - Items per page (default: 10)

Settings

POST /api/v1/settings

Create business settings. (Requires authentication)

Request Body:

{
  "logo": "logo_url",
  "business_name": "Restaurant Name",
  "address": "Restaurant Address",
  "phone_no": "1234567890"
}
GET /api/v1/settings

Get business settings. (Requires authentication)

PUT /api/v1/settings

Update business settings. (Requires authentication)

Request Body:

{
  "logo": "updated_logo_url",
  "business_name": "Updated Restaurant Name",
  "address": "Updated Restaurant Address",
  "phone_no": "0987654321"
}