Royal Glow internal docs · now fully interactive — Steps, API tables, file trees & live status
Royal Glow Docs
API Reference

Services & Availability

Public endpoints for the service catalogue, single service lookup, and slot availability.

Services & Availability

These endpoints expose the public service catalogue and the booking-slot schedule. All three are Public — none of them call requireSession or requireRole, so no session cookie is needed.

Base URL: https://theroyalglow.in · Auth: Public (no session). Money is an integer in paise (pricePaise: 250000 = ₹2,500.00). Durations are whole minutes. All responses use the standard envelope { "success": true, "data": ... }.

GET /api/services

Returns the full catalogue: every active service category (ordered by displayOrder) with its active services nested under services.

Minimum role: Public

GET /api/services

This endpoint takes no path or query parameters.

Response

data.categories is an array of category objects. Each category carries its own columns plus a services array of the active services that belong to it.

{
  "success": true,
  "data": {
    "categories": [
      {
        "id": "cat_haircare01",
        "name": "Hair Care",
        "slug": "hair-care",
        "description": "Cuts, colour, and treatments",
        "serviceType": "salon",
        "displayOrder": 0,
        "isActive": true,
        "createdAt": "2026-05-01T04:30:00.000Z",
        "updatedAt": "2026-05-01T04:30:00.000Z",
        "services": [
          {
            "id": "svc_haircut001",
            "categoryId": "cat_haircare01",
            "name": "Signature Haircut",
            "slug": "signature-haircut",
            "description": "Consultation, wash, cut, and style",
            "durationMinutes": 45,
            "bufferMinutes": 0,
            "pricePaise": 80000,
            "isActive": true,
            "imageUrl": "https://cdn.theroyalglow.in/services/haircut.webp",
            "displayOrder": 0,
            "gemsRedeemable": false,
            "gemsRequired": null,
            "gemsCatalogueOrder": null,
            "createdAt": "2026-05-01T04:30:00.000Z",
            "updatedAt": "2026-05-01T04:30:00.000Z"
          }
        ]
      }
    ]
  }
}

Errors


GET /api/services/[slug]

Returns a single service matched by its unique slug.

Minimum role: Public

GET /api/services/signature-haircut

Path parameters

Prop

Type

Response

{
  "success": true,
  "data": {
    "service": {
      "id": "svc_haircut001",
      "categoryId": "cat_haircare01",
      "name": "Signature Haircut",
      "slug": "signature-haircut",
      "description": "Consultation, wash, cut, and style",
      "durationMinutes": 45,
      "bufferMinutes": 0,
      "pricePaise": 80000,
      "isActive": true,
      "imageUrl": "https://cdn.theroyalglow.in/services/haircut.webp",
      "displayOrder": 0,
      "gemsRedeemable": false,
      "gemsRequired": null,
      "gemsCatalogueOrder": null,
      "createdAt": "2026-05-01T04:30:00.000Z",
      "updatedAt": "2026-05-01T04:30:00.000Z"
    }
  }
}

Errors


GET /api/availability

Returns the bookable time slots for a single date. Slots are a fixed 30-minute schedule from 10:00 to 21:00 (first slot starts 10:00, last slot starts 20:30 and ends 21:00). Every slot is currently reported as available: true.

Minimum role: Public

GET /api/availability?date=2026-06-15&branchId=br_rayasandra01

Query parameters

Prop

Type

Response

{
  "success": true,
  "data": {
    "slots": [
      { "startTime": "10:00", "endTime": "10:30", "available": true },
      { "startTime": "10:30", "endTime": "11:00", "available": true },
      { "startTime": "20:30", "endTime": "21:00", "available": true }
    ]
  }
}

Errors

OpenReport an issue

Was this page helpful?

On this page