Skip to content

๐Ÿ“ฆ Orders API โ€‹

โž• Create Order โ€‹

POST /api/orders
Authorization: Bearer <token> (optional โ€” guest checkout supported)

Request (authenticated customer):

json
{
  "locationId": "location-id",
  "orderType": "DELIVERY",
  "addressId": "address-id",
  "items": [
    {
      "menuItemId": "item-id",
      "quantity": 2,
      "comment": "No onions",
      "options": [
        { "menuOptionValueId": "option-value-id" }
      ]
    }
  ],
  "tip": 5.00,
  "couponCode": "WELCOME10",
  "scheduledAt": "2025-06-15T18:00:00Z",
  "paymentMethod": "STRIPE"
}

Request (guest checkout):

json
{
  "locationId": "location-id",
  "orderType": "PICKUP",
  "guestName": "John Doe",
  "guestEmail": "john@example.com",
  "guestPhone": "+1234567890",
  "items": [
    {
      "menuItemId": "item-id",
      "quantity": 1
    }
  ],
  "paymentMethod": "CASH"
}

Response: 201 Created

json
{
  "success": true,
  "data": {
    "id": "cuid",
    "orderNumber": "KA-20250615-001",
    "status": "PENDING",
    "orderType": "DELIVERY",
    "subtotal": 25.98,
    "deliveryFee": 3.99,
    "tax": 2.08,
    "discount": 2.60,
    "tip": 5.00,
    "total": 34.45,
    "items": [...]
  }
}

๐Ÿ“‹ List Orders (Staff) โ€‹

GET /api/orders?page=1&limit=20
Authorization: Bearer <staff-token>

Returns all orders with pagination. Staff only.

๐Ÿ›๏ธ List Customer Orders โ€‹

GET /api/orders/my-orders
Authorization: Bearer <customer-token>

Returns orders for the authenticated customer.

๐Ÿ” Get Order โ€‹

GET /api/orders/:id
Authorization: Bearer <token>

Returns full order details with items, options, and payment info.

๐Ÿ”„ Update Order Status โ€‹

PATCH /api/orders/:id/status
Authorization: Bearer <staff-token>

Request:

json
{
  "status": "CONFIRMED"
}

Valid transitions:

FromTo
PENDINGโœ… CONFIRMED, โŒ CANCELLED
CONFIRMED๐Ÿณ PREPARING, โŒ CANCELLED
PREPARINGโœ… READY, โŒ CANCELLED
READY๐Ÿšš OUT_FOR_DELIVERY, โœ… DELIVERED, ๐Ÿƒ PICKED_UP, โŒ CANCELLED
OUT_FOR_DELIVERYโœ… DELIVERED, โŒ CANCELLED

โš ๏ธ Error Cases โ€‹

ScenarioStatusError
๐Ÿฝ๏ธ Invalid menu item400Menu item not found
๐Ÿช Location inactive400Location is not active
๐Ÿ’ฐ Below minimum order400Order below minimum
๐ŸŽŸ๏ธ Invalid coupon400Coupon validation error
๐Ÿ”„ Invalid status transition400Invalid status transition
๐Ÿ” Order not found404Order not found