REST API reference

SiteMinder API

12 endpoints for SiteMinder. Each one is a POST with a JSON body, called with your API key.

Base URL
https://cotlet.dev/api/v1/siteminder
Connects with
Your own SiteMinder Platform account (Admin or a General user with access to the areas you use)
Integration page
SiteMinder
SiteMinder Endpoints
Endpoint Access Description
list_room_rates read Room types and their room rates, with derived rates and the channels each one is mapped to.
list_channels read Connected booking channels with status and the data each channel rate supports.
get_inventory read The inventory grid for a date range: rates, availability and restrictions per room rate and channel.
list_reservations read Reservations with channel, status, dates, room and total. Searches the last 548 days.
get_reservation read One reservation: stay, rooms, rate plan, channel, status history and payment summary. No guest contact or card numbers.
get_booking_performance read Room and total revenue, reservations, room nights, ADR, ALOS, lead time and cancellations, split by channel, market, room or rate.
get_pace_report read Reservations, revenue, room nights and ADR for a period, compared with the same period last year.
get_rate_parity read Your rates on Agoda, Booking.com, Expedia, HRS and Direct Booking by stay date. Needs SiteMinder Plus.
update_rates write Set the rate for room rates or channel rates over a date range. Goes live on mapped channels.
update_availability write Set the number of rooms to sell per room type over a date range, for all channels.
update_restrictions write Set stop sell, minimum or maximum length of stay, closed to arrival or closed to departure.
close_dates write Stop sell the room rates you pick, or a whole channel, for a date range.

POST https://cotlet.dev/api/v1/siteminder/list_room_rates

Returns every room type with its room rates. A derived rate shows the base rate it follows; SiteMinder does not let you set derived rates by hand. Use the IDs from here in get_inventory and the update tools.

Parameters

No parameters.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/list_room_rates \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("siteminder", "list_room_rates")
Node.js
const result = await cotlet.call('siteminder', 'list_room_rates');
CLI
cotlet call siteminder list_room_rates

Example response

{
  "room_types": [
    {
      "room_type_id": "rt_1021",
      "name": "Standard Double",
      "room_rates": [
        {
          "room_rate_id": "rr_48210",
          "name": "Standard Double Flexible",
          "type": "base",
          "channels": [
            "Booking.com",
            "Expedia",
            "Direct Booking"
          ]
        }
      ]
    },
    {
      "room_type_id": "rt_1022",
      "name": "Deluxe King",
      "room_rates": [
        {
          "room_rate_id": "rr_48213",
          "name": "Deluxe King Flexible",
          "type": "base",
          "channels": [
            "Booking.com",
            "Expedia",
            "Agoda",
            "Direct Booking"
          ]
        },
        {
          "room_rate_id": "rr_48214",
          "name": "Deluxe King Non-refundable",
          "type": "derived",
          "derived_from": "rr_48213",
          "channels": [
            "Booking.com",
            "Expedia"
          ]
        }
      ]
    }
  ]
}

POST https://cotlet.dev/api/v1/siteminder/list_channels

Returns the channels connected to the property, including Direct Booking, with their status. For each channel rate it lists the data SiteMinder can send: rates, availability and the restrictions. Not every channel rate supports every type, so check here before a restriction change.

Parameters

No parameters.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/list_channels \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("siteminder", "list_channels")
Node.js
const result = await cotlet.call('siteminder', 'list_channels');
CLI
cotlet call siteminder list_channels

Example response

{
  "channels": [
    {
      "channel": "Booking.com",
      "status": "enabled",
      "supports": [
        "rates",
        "availability",
        "stop_sell",
        "min_los",
        "max_los",
        "cta",
        "ctd"
      ]
    },
    {
      "channel": "Agoda",
      "status": "enabled",
      "supports": [
        "rates",
        "availability",
        "stop_sell",
        "min_los"
      ]
    },
    {
      "channel": "Direct Booking",
      "status": "enabled",
      "supports": [
        "rates",
        "availability",
        "stop_sell",
        "min_los",
        "max_los",
        "cta",
        "ctd"
      ]
    }
  ]
}

POST https://cotlet.dev/api/v1/siteminder/get_inventory

Returns what the inventory grid shows, one row per date: rate, availability and restrictions for each room rate. Pass channel to see the values sent to one channel instead. SiteMinder shows only today and future dates here. A dash in the grid, returned as null, means the channel rate does not support that data.

Parameters

Parameters: get_inventory
NameTypeDescription
from required date First date of the range. Today or later.
to required date Last date of the range.
room_type_ids string[] Only these room types. Default: all.
channel string Show channel rates for one channel. Default: room rates.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/get_inventory \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-10-01","to":"2026-10-01"}'
Python
result = client.call("siteminder", "get_inventory", {"from":"2026-10-01","to":"2026-10-01"})
Node.js
const result = await cotlet.call('siteminder', 'get_inventory', {"from":"2026-10-01","to":"2026-10-01"});
CLI
cotlet call siteminder get_inventory --data '{"from":"2026-10-01","to":"2026-10-01"}'

Example response

{
  "room_rate_id": "rr_48213",
  "channel": null,
  "dates": [
    {
      "date": "2026-12-04",
      "rate": "159.00",
      "availability": 4,
      "stop_sell": false,
      "min_los": 1,
      "cta": false,
      "ctd": false
    },
    {
      "date": "2026-12-05",
      "rate": "159.00",
      "availability": 2,
      "stop_sell": false,
      "min_los": 2,
      "cta": false,
      "ctd": false
    }
  ]
}

POST https://cotlet.dev/api/v1/siteminder/list_reservations

Returns reservations that match your filters, with booking reference, channel, status, stay dates, room and total. SiteMinder searches only reservations created or checked out within the last 548 days. Guest email, phone and card details are not returned. Pass booking_reference to get_reservation for the full record.

Parameters

Parameters: list_reservations
NameTypeDescription
date_type enum booked_on, check_in, check_out or cancelled_on. Default: booked_on.
from date Start of the date range.
to date End of the date range.
status enum booked, modified or cancelled. Default: all.
channel string Only reservations from this channel.
guest_last_name string Guest last name.
pms_delivery_status enum pending, delivered or failed. Default: all.
limit integer Page size. Default: 50.
cursor string Next page cursor from the previous call.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/list_reservations \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("siteminder", "list_reservations")
Node.js
const result = await cotlet.call('siteminder', 'list_reservations');
CLI
cotlet call siteminder list_reservations

Example response

{
  "reservations": [
    {
      "booking_reference": "4830217655",
      "channel": "Booking.com",
      "status": "booked",
      "check_in": "2026-10-12",
      "check_out": "2026-10-14",
      "nights": 2,
      "room_type": "Standard Double",
      "guests": 2,
      "total": {
        "amount": "318.00",
        "currency": "EUR"
      },
      "guest_last_name": "Rossi",
      "pms_delivery": "delivered"
    },
    {
      "booking_reference": "BBN-BB0000412907",
      "channel": "Direct Booking",
      "status": "booked",
      "check_in": "2026-10-12",
      "check_out": "2026-10-13",
      "nights": 1,
      "room_type": "Deluxe King",
      "guests": 1,
      "total": {
        "amount": "172.00",
        "currency": "EUR"
      },
      "guest_last_name": "Lindqvist",
      "pms_delivery": "pending"
    }
  ],
  "next_cursor": null
}

POST https://cotlet.dev/api/v1/siteminder/get_reservation

Returns one reservation by booking reference: status and the time it last changed, stay dates and length, estimated arrival time, room and number of guests, rate plan, total rate and the channel, with the secondary source such as Hotels.com via Expedia where SiteMinder shows one. SiteMinder shows guest email, phone and card details only on a trusted device, so they are not returned.

Parameters

Parameters: get_reservation
NameTypeDescription
booking_reference required string Booking reference from list_reservations.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/get_reservation \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"booking_reference":"booking reference"}'
Python
result = client.call("siteminder", "get_reservation", {"booking_reference":"booking reference"})
Node.js
const result = await cotlet.call('siteminder', 'get_reservation', {"booking_reference":"booking reference"});
CLI
cotlet call siteminder get_reservation --data '{"booking_reference":"booking reference"}'

Example response

{
  "booking_reference": "4830217655",
  "channel": "Booking.com",
  "status": "booked",
  "status_changed_at": "2026-10-02T14:20:00Z",
  "check_in": "2026-10-12",
  "check_out": "2026-10-14",
  "nights": 2,
  "estimated_arrival": "15:00",
  "rooms": [
    {
      "room_type": "Standard Double",
      "room_rate": "Standard Double Flexible",
      "guests": 2
    }
  ],
  "total": {
    "amount": "318.00",
    "currency": "EUR"
  },
  "pms_delivery": "delivered"
}

POST https://cotlet.dev/api/v1/siteminder/get_booking_performance

Returns the Insights > Booking performance numbers for a period: room revenue, total revenue, reservations after cancellations, room nights, average lead time, ADR, average length of stay and cancelled reservations, plus the breakdown you ask for. Revenue in other currencies is converted to your default currency at xe.com rates. With date_basis stay_date, total revenue is not returned and room nights count only the chosen period.

Parameters

Parameters: get_booking_performance
NameTypeDescription
from required date First date of the range. Today or later.
to required date Last date of the range.
date_basis enum booked_on or stay_date. Default: booked_on.
breakdown enum channel_mix, source_market, room_types or rate_plans. Default: channel_mix.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/get_booking_performance \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-10-05","to":"2026-10-11","date_basis":"booked_on","breakdown":"channel_mix"}'
Python
result = client.call("siteminder", "get_booking_performance", {"from":"2026-10-05","to":"2026-10-11","date_basis":"booked_on","breakdown":"channel_mix"})
Node.js
const result = await cotlet.call('siteminder', 'get_booking_performance', {"from":"2026-10-05","to":"2026-10-11","date_basis":"booked_on","breakdown":"channel_mix"});
CLI
cotlet call siteminder get_booking_performance --data '{"from":"2026-10-05","to":"2026-10-11","date_basis":"booked_on","breakdown":"channel_mix"}'

Example response

{
  "from": "2026-09-01",
  "to": "2026-09-30",
  "date_basis": "booked_on",
  "currency": "EUR",
  "room_revenue": "42500.00",
  "total_revenue": "45000.00",
  "reservations": 212,
  "cancelled_reservations": 18,
  "room_nights": 500,
  "avg_lead_time_days": 21.4,
  "adr": "90.00",
  "alos": 2.36,
  "channel_mix": [
    {
      "channel": "Booking.com",
      "reservations": 95,
      "room_nights": 225,
      "room_revenue": "19500.00"
    },
    {
      "channel": "Expedia",
      "reservations": 55,
      "room_nights": 135,
      "room_revenue": "11500.00"
    },
    {
      "channel": "Direct Booking",
      "reservations": 45,
      "room_nights": 105,
      "room_revenue": "9000.00"
    },
    {
      "channel": "Agoda",
      "reservations": 17,
      "room_nights": 35,
      "room_revenue": "2500.00"
    }
  ]
}

POST https://cotlet.dev/api/v1/siteminder/get_pace_report

Returns the Insights > Pace numbers: reservations, reservation revenue (nightly room rates, without extras and card surcharges), room nights and ADR for the period and for last year, with the change in percent. The default period is the next 30 days; SiteMinder shows one year of forward-looking pace data. Source markets are included.

Parameters

Parameters: get_pace_report
NameTypeDescription
from date Start of the period. Default: today.
to date End of the period. Default: 30 days from today.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/get_pace_report \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("siteminder", "get_pace_report")
Node.js
const result = await cotlet.call('siteminder', 'get_pace_report');
CLI
cotlet call siteminder get_pace_report

Example response

{
  "from": "2026-10-12",
  "to": "2026-11-10",
  "currency": "EUR",
  "this_year": {
    "reservations": 148,
    "revenue": "28400.00",
    "room_nights": 341,
    "adr": "83.28"
  },
  "last_year": {
    "reservations": 131,
    "revenue": "25100.00",
    "room_nights": 302,
    "adr": "83.11"
  },
  "change_percent": {
    "reservations": 13,
    "revenue": 13.1,
    "room_nights": 12.9,
    "adr": 0.2
  },
  "source_markets": [
    {
      "country": "DE",
      "room_nights": 96
    },
    {
      "country": "GB",
      "room_nights": 74
    }
  ]
}

POST https://cotlet.dev/api/v1/siteminder/get_rate_parity

Returns the Insights > Rate parity grid: your rate on each of the five channels for each stay date, with a flag for channels below your Direct Booking rate. A cell can hold MLOS (a minimum stay applies), SOLD (no availability) or N/A instead of a rate. Dates reach 30 days ahead, or 90 with Dynamic Revenue Plus. A refresh times out after about two minutes; call again for dates that did not load. Without SiteMinder Plus the call fails with a plan error.

Parameters

Parameters: get_rate_parity
NameTypeDescription
from required date First date of the range. Today or later.
to required date Last date of the range.
nights integer 1 to 7. Default: 1.
guests integer 1 or 2. Default: 2.
include_taxes boolean Fully inclusive rates instead of base rates. Default: false.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/get_rate_parity \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-10-01","to":"2026-10-01"}'
Python
result = client.call("siteminder", "get_rate_parity", {"from":"2026-10-01","to":"2026-10-01"})
Node.js
const result = await cotlet.call('siteminder', 'get_rate_parity', {"from":"2026-10-01","to":"2026-10-01"});
CLI
cotlet call siteminder get_rate_parity --data '{"from":"2026-10-01","to":"2026-10-01"}'

Example response

{
  "nights": 1,
  "guests": 2,
  "include_taxes": false,
  "currency": "EUR",
  "dates": [
    {
      "date": "2026-10-17",
      "rates": {
        "Agoda": "142.00",
        "Booking.com": "142.00",
        "Expedia": "138.00",
        "HRS": "142.00",
        "Direct Booking": "142.00"
      },
      "below_direct": [
        "Expedia"
      ]
    },
    {
      "date": "2026-10-18",
      "rates": {
        "Agoda": "149.00",
        "Booking.com": "149.00",
        "Expedia": "MLOS",
        "HRS": "149.00",
        "Direct Booking": "149.00"
      },
      "below_direct": []
    }
  ]
}

Update rates

write Confirm

POST https://cotlet.dev/api/v1/siteminder/update_rates

Sets one nightly rate for the room rates you list, on all mapped channels or only the channels you name. Derived rates cannot be set; they follow their base rate by their own rules. Channels receive updates only inside their maximum update period. If a two-way PMS, RMS or CRS sends rates to SiteMinder, it overwrites this change. Large updates can take a few minutes. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: update_rates
NameTypeDescription
room_rate_ids required string[] Room rate IDs from list_room_rates.
from required date First date of the range. Today or later.
to required date Last date of the range.
rate required string New nightly rate, as a decimal in the property currency.
channels string[] Only these channels. Default: the room rate for all mapped channels.
days_of_week string[] Only these weekdays (mon, tue, wed, thu, fri, sat, sun). Default: all days.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/update_rates \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"room_rate_ids":["rr_48213"],"from":"2026-12-05","to":"2026-12-07","rate":"236.00","days_of_week":["fri"]}'
Python
result = client.call("siteminder", "update_rates", {"room_rate_ids":["rr_48213"],"from":"2026-12-05","to":"2026-12-07","rate":"236.00","days_of_week":["fri"]})
Node.js
const result = await cotlet.call('siteminder', 'update_rates', {"room_rate_ids":["rr_48213"],"from":"2026-12-05","to":"2026-12-07","rate":"236.00","days_of_week":["fri"]});
CLI
cotlet call siteminder update_rates --data '{"room_rate_ids":["rr_48213"],"from":"2026-12-05","to":"2026-12-07","rate":"236.00","days_of_week":["fri"]}'

Example response

{
  "status": "updated",
  "room_rates": 1,
  "dates": 8,
  "channels": [
    "Booking.com",
    "Expedia",
    "Agoda",
    "Direct Booking"
  ],
  "derived_rates_updated": 1,
  "skipped": []
}

Update availability

write Confirm

POST https://cotlet.dev/api/v1/siteminder/update_availability

Sets rooms available per night for a room type. SiteMinder manages availability at room type level, so it applies to every channel; to limit one channel, use close_dates or update_restrictions. Availability 0 closes the whole room type and all its rates. If a two-way PMS, RMS or CRS sends availability to SiteMinder, it overwrites this change. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: update_availability
NameTypeDescription
room_type_ids required string[] Room type IDs from list_room_rates.
from required date First date of the range. Today or later.
to required date Last date of the range.
rooms required integer Rooms available per night.
days_of_week string[] Only these weekdays (mon, tue, wed, thu, fri, sat, sun). Default: all days.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/update_availability \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"room_type_ids":["room type ids"],"from":"2026-10-01","to":"2026-10-01","rooms":1}'
Python
result = client.call("siteminder", "update_availability", {"room_type_ids":["room type ids"],"from":"2026-10-01","to":"2026-10-01","rooms":1})
Node.js
const result = await cotlet.call('siteminder', 'update_availability', {"room_type_ids":["room type ids"],"from":"2026-10-01","to":"2026-10-01","rooms":1});
CLI
cotlet call siteminder update_availability --data '{"room_type_ids":["room type ids"],"from":"2026-10-01","to":"2026-10-01","rooms":1}'

Example response

{
  "status": "updated",
  "room_types": 1,
  "dates": 14,
  "rooms": 6,
  "channels": "all"
}

Update restrictions

write Confirm

POST https://cotlet.dev/api/v1/siteminder/update_restrictions

Sets the restrictions you pass for the room rates and dates you give, on all mapped channels or only the channels you name. Set stop_sell, cta or ctd to false to remove them. Not every channel rate supports every restriction; unsupported ones are listed under skipped. A connected two-way PMS, RMS or CRS overwrites restrictions set in SiteMinder. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: update_restrictions
NameTypeDescription
room_rate_ids required string[] Room rate IDs from list_room_rates.
from required date First date of the range. Today or later.
to required date Last date of the range.
restrictions required object Any of stop_sell, cta, ctd (boolean), min_los, max_los (integer).
channels string[] Only these channels. Default: all mapped channels.
days_of_week string[] Only these weekdays (mon, tue, wed, thu, fri, sat, sun). Default: all days.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/update_restrictions \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"room_rate_ids":["rr_48213","rr_48214"],"from":"2026-12-24","to":"2026-12-26","restrictions":{"cta":true,"min_los":3}}'
Python
result = client.call("siteminder", "update_restrictions", {"room_rate_ids":["rr_48213","rr_48214"],"from":"2026-12-24","to":"2026-12-26","restrictions":{"cta":True,"min_los":3}})
Node.js
const result = await cotlet.call('siteminder', 'update_restrictions', {"room_rate_ids":["rr_48213","rr_48214"],"from":"2026-12-24","to":"2026-12-26","restrictions":{"cta":true,"min_los":3}});
CLI
cotlet call siteminder update_restrictions --data '{"room_rate_ids":["rr_48213","rr_48214"],"from":"2026-12-24","to":"2026-12-26","restrictions":{"cta":true,"min_los":3}}'

Example response

{
  "status": "updated",
  "room_rates": 2,
  "dates": 3,
  "channels": [
    "Booking.com",
    "Expedia",
    "Direct Booking"
  ],
  "skipped": [
    {
      "channel": "Agoda",
      "reason": "CTA not supported by this channel rate"
    }
  ]
}

Close dates

write Confirm

POST https://cotlet.dev/api/v1/siteminder/close_dates

Applies a stop sell for the dates you give: to every room rate, to the room rates you pick (all their channel rates close), or to one channel. Other rates and channels stay open. To reopen, call update_restrictions with stop_sell set to false. A connected two-way PMS, RMS or CRS overwrites stop sells set in SiteMinder. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: close_dates
NameTypeDescription
from required date First date of the range. Today or later.
to required date Last date of the range.
room_rate_ids string[] Only these room rates. Default: all.
channels string[] Close only these channels. Default: all mapped channels.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/siteminder/close_dates \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-10-01","to":"2026-10-01"}'
Python
result = client.call("siteminder", "close_dates", {"from":"2026-10-01","to":"2026-10-01"})
Node.js
const result = await cotlet.call('siteminder', 'close_dates', {"from":"2026-10-01","to":"2026-10-01"});
CLI
cotlet call siteminder close_dates --data '{"from":"2026-10-01","to":"2026-10-01"}'

Example response

{
  "status": "closed",
  "room_rates": 2,
  "dates": 8,
  "channels": [
    "Booking.com",
    "Expedia",
    "Direct Booking"
  ]
}