Dominate Hotel TV — API Documentation

REST API for PMS integration, guest management, billing, and room service

Authentication

All requests require a customerId parameter that identifies your hotel. Pass it as a query parameter on every request:

?customerId=cust_xxxxxxxxxxxx

Your customer ID will be provided during onboarding. This scopes all data to your hotel — you will only see your own guests, rooms, and orders.

Base URL

https://ota.mndev.co.za
This documentation is for testing purposes only. The base URL and customer ID may change before production deployment.

Contents

1. Guest Management

Use these endpoints to check guests in and out. When a guest checks in, the TV in their room instantly shows a personalised welcome message. When they check out, all streaming app logins (Netflix, YouTube, DStv, Disney+, etc.) are automatically wiped from the TV.

POST /api/guests?customerId={customerId}

Check in a guest (or update an existing guest). If a guest already exists in this room, their details are updated.

Request Body
FieldTypeDescription
roomNumberstringrequiredRoom number, e.g. "101"
guestNamestringrequiredGuest full name, e.g. "John Smith"
titlestringoptionalMr, Mrs, Ms, Dr, etc.
checkInstringoptionalISO date, e.g. "2026-04-01". Defaults to today.
checkOutstringoptionalISO date, e.g. "2026-04-05"
notesstringoptionalInternal notes
Example
curl -X POST "https://ota.mndev.co.za/api/guests?customerId=cust_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "roomNumber": "101",
    "guestName": "John Smith",
    "title": "Mr",
    "checkIn": "2026-04-01",
    "checkOut": "2026-04-05"
  }'
Response
{
  "ok": true,
  "guest": {
    "roomNumber": "101",
    "guestName": "John Smith",
    "title": "Mr",
    "checkIn": "2026-04-01",
    "checkOut": "2026-04-05",
    "notes": "",
    "updatedAt": "2026-04-01T08:30:00.000Z"
  }
}

The TV in room 101 will instantly update to show "Welcome Mr Smith".

DELETE /api/guests/{roomNumber}?customerId={customerId}

Check out a guest. Removes the guest record for this room and triggers automatic cleanup on the TV.

Example
curl -X DELETE "https://ota.mndev.co.za/api/guests/101?customerId=cust_xxxxxxxxxxxx"
Response
{ "ok": true }
On checkout, the TV in this room will automatically: - Clear Netflix login - Clear YouTube login - Clear DStv / DStv Now login - Clear Disney+ login - Clear Amazon Prime Video login - Clear Spotify login - Clear Apple TV login - Reset the welcome screen to default
GET /api/guests?customerId={customerId}

List all currently checked-in guests.

Response
[
  {
    "roomNumber": "101",
    "guestName": "John Smith",
    "title": "Mr",
    "checkIn": "2026-04-01",
    "checkOut": "2026-04-05",
    "notes": "",
    "updatedAt": "2026-04-01T08:30:00.000Z"
  }
]
GET /api/guests/{roomNumber}?customerId={customerId}

Get guest details for a specific room. Returns 404 if no guest is checked in.

Example
curl "https://ota.mndev.co.za/api/guests/101?customerId=cust_xxxxxxxxxxxx"

2. Billing & Folio

Post charges and payments to a guest's folio. Charges are displayed on the TV's Bill View screen.

POST /api/hotel/billing/charge?customerId={customerId}

Post a charge to a guest's bill.

FieldTypeDescription
roomNumberstringrequiredRoom number
amountnumberrequiredCharge amount (e.g. 150.00)
descriptionstringoptionale.g. "Minibar — 2x Water"
categorystringoptionale.g. "food", "beverage", "laundry"
referencestringoptionalExternal reference ID
Example
curl -X POST "https://ota.mndev.co.za/api/hotel/billing/charge?customerId=cust_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "roomNumber": "101",
    "amount": 150.00,
    "description": "Room Service — Club Sandwich",
    "category": "food"
  }'
POST /api/hotel/billing/payment?customerId={customerId}

Record a payment against a guest's bill.

FieldTypeDescription
roomNumberstringrequiredRoom number
amountnumberrequiredPayment amount
methodstringoptional"card", "cash", "credit"
referencestringoptionalTransaction reference
GET /api/hotel/pms/folio/{roomNumber}?customerId={customerId}

Get the full folio (bill) for a guest, including all charges, payments, and balance.

Response
{
  "charges": [
    { "id": "ch_1", "description": "Room Service — Club Sandwich", "amount": 150.00, "category": "food", "timestamp": "2026-04-01T12:30:00Z" }
  ],
  "payments": [
    { "id": "pay_1", "amount": 150.00, "method": "card", "timestamp": "2026-04-01T14:00:00Z" }
  ],
  "total": 150.00,
  "paid": 150.00,
  "balance": 0.00,
  "currency": "ZAR"
}
POST /api/hotel/billing/clear/{roomNumber}?customerId={customerId}

Clear a guest's folio on checkout.

3. Room Service Ordering

Manage room service orders placed from the TV or guest's phone.

POST /api/hotel/restaurant/orders?customerId={customerId}

Create a room service order.

FieldTypeDescription
roomNumberstringrequiredRoom number
guestNamestringoptionalOverrides guest name from check-in
itemsarrayrequiredArray of order items (see below)
notesstringoptionalSpecial instructions
Item Object
FieldTypeDescription
itemIdstringrequiredMenu item ID
quantitynumberoptionalDefaults to 1
notesstringoptionale.g. "No onions"
Example
curl -X POST "https://ota.mndev.co.za/api/hotel/restaurant/orders?customerId=cust_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "roomNumber": "101",
    "items": [
      { "itemId": "item_1", "quantity": 2, "notes": "Extra cheese" },
      { "itemId": "item_2", "quantity": 1 }
    ],
    "notes": "Please deliver before 19:00"
  }'

Charge is automatically posted to the guest's folio.

GET /api/hotel/restaurant/orders?customerId={customerId}

List all room service orders.

PUT /api/hotel/restaurant/orders/{id}?customerId={customerId}

Update order status. The guest's TV is notified in real-time.

FieldTypeDescription
statusstringrequired"pending", "preparing", "ready", "delivered", or "cancelled"

4. PMS Configuration

Connect your property management system for automatic guest sync and folio posting.

GET /api/hotel/pms/adapters

List available PMS adapter types and their required configuration fields. Currently supported: Mews, Opera, Sihot, and a generic REST adapter.

PUT /api/hotel/pms/config?customerId={customerId}

Configure PMS connection credentials and settings.

FieldTypeDescription
pmsTypestringrequiredAdapter type from /api/hotel/pms/adapters
apiUrlstringrequiredPMS API base URL
hotelCodestringoptionalHotel identifier in PMS
apiKeystringoptionalAPI key / token
syncGuestsbooleanoptionalAuto-sync guest check-ins
postChargesbooleanoptionalAuto-post room service charges
POST /api/hotel/pms/test?customerId={customerId}

Test your PMS connection with the current configuration.

Dominate Hotel TV — MN Group © 2026