Home Pricing About Contact
Sign In Start Free Trial
Developer Docs

Channel Manager API

Integrate your application with the Channel Manager platform to search rooms, create bookings, and update reservation status programmatically.

Base URL https://mdshotelcloud.com/cmapi/ChannelManager

Get Property Info

Retrieve full details of a property using its unique property ID (GUID).

GET /GetProperty/{propertyId}
Response
{
  "id": 0,
  "name": "string",
  "vatPercent": 0,
  "zipCode": "string",
  "city": "string",
  "address": "string",
  "phone": "string",
  "fax": "string",
  "vatNumber": "string",
  "administrativeEmail": "string",
  "reservationsEmail": "string",
  "latitude": 0,
  "longitude": 0
}

Get Room Types by Property

Returns all non-deleted room types configured for a given property ID. The list is a lightweight projection — image collection and banner image are omitted; use Get Room Type by ID for full media.

GET /GetRoomTypesByProperty/{propertyId}
Response — Array of RoomType
[
  {
    "id": 0,
    "roomTypeName": "string",
    "shortName": "string",
    "shortDescription": "string",
    "description": "string",
    "note": "string",
    "services": ["string"],
    "primaryImage": "string",
    "defaultPrice": 0,
    "defaultCurrency": 0,
    "defaultAvailableRooms": 0,
    "property": 0,
    "guests": 0,
    "kids": 0
  }
]

Get Room Type by ID

Retrieve full details for a single room type — including the image gallery, primary image and banner image — using its property ID (GUID) and room type ID (int).

GET /GetRoomTypeById/{propertyId}/{roomTypeId}
Response — RoomType
{
  "id": 0,
  "roomTypeName": "string",
  "shortName": "string",
  "shortDescription": "string",
  "description": "string",
  "note": "string",
  "services": ["string"],
  "images": ["string"],
  "primaryImage": "string",
  "bannerImage": "string",
  "defaultPrice": 0,
  "defaultCurrency": 0,
  "defaultAvailableRooms": 0,
  "property": 0,
  "guests": 0,
  "kids": 0
}

Get Room Type by Name

Look up a room type within a property by its ShortName (case-insensitive match). Path parameter {name} is compared against ShortName, not the full roomTypeName. Returns the same payload as Get Room Type by ID.

GET /GetRoomTypeByName/{propertyId}/{name}
Response — RoomType
{
  "id": 0,
  "roomTypeName": "string",
  "shortName": "string",
  "shortDescription": "string",
  "description": "string",
  "note": "string",
  "services": ["string"],
  "images": ["string"],
  "primaryImage": "string",
  "bannerImage": "string",
  "defaultPrice": 0,
  "defaultCurrency": 0,
  "defaultAvailableRooms": 0,
  "property": 0,
  "guests": 0,
  "kids": 0
}

Get Room Types by Filter

Returns room types that can accommodate the requested guest count and room count for the given property. Matching is done on Guests >= adults, Kids >= child and DefaultAvailableRooms >= room — date filtering is not yet enforced by the endpoint.

POST /GetRoomTypesByFilter
Request Body — HbsSearchModel
{
  "propertyId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "checkIn":    "2026-09-15",
  "checkOut":   "2026-09-18",
  "checkInDt":  "2026-09-15T00:00:00Z",
  "checkOutDt": "2026-09-18T00:00:00Z",
  "adults": 2,
  "child":  0,
  "room":   1
}
Response — Array of RoomType
// Same shape as GET /GetRoomTypesByProperty/{propertyId}
[ { "id": 0, "roomTypeName": "string", "defaultPrice": 0, … } ]

Book a Room

Creates one booking per room requested (room > 1 produces multiple linked bookings). A customer record is created from the guest's name and email; price is calculated server-side from the room's rate plan unless defaultPrice overrides it. The endpoint also adds booking history, eco-tax records and a notification.

POST /BookNow
Request Body — BookingModel
{
  "propertyId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "roomTypeId": 0,
  "name":          "First Last",
  "emailId":       "guest@example.com",
  "contact":       "+356 9999 0000",
  "checkIn":       "2026-09-18T00:00:00Z",
  "checkOut":      "2026-09-21T00:00:00Z",
  "adults":        2,
  "kids":          0,
  "room":          1,
  "roomShortName": "DBL",
  "bookingRefNo":  "string",
  "defaultPrice":  0
}
Response — boolean
// HTTP 200 OK
true   // booking(s) created successfully

Update Booking Status

Updates the status, payment reference and paid-amount of the booking identified by its booking reference number. If totalPaid > 0 a PAYPAL payment-history row is recorded automatically. Channel availability is re-synced after the update.

POST /UpdateBookingStatus
Request Body — BookingStatus
{
  "bookingRef": "string",
  "status":     0,
  "paymentRef": "string",
  "totalPaid":  0
}
Response — integer
// HTTP 200 OK
1   // always returned, even if the bookingRef did not match