Enquiries Channel manager Bookings Your website Booking engine Pricing
v2026-09

restrictions.changed

Stay rules, and which of them Doorloom actually enforces.

When it fires

The property's booking rules changed, or a per-date minimum or maximum stay or stop-sell changed.

This event is date-scoped: it carries a window, and data.dates[] has one entry per night in that window, inclusive of both ends. A window never spans more than one calendar month, so a change across a longer range arrives as several events.

What to do with it

  • The two levels are not equally binding. property_rules are enforced by Doorloom at guest checkout. The per-date min_nights and max_nights are advisory: they are shown to the host and pushed to channel managers, but nothing stops a direct booking that violates them. Enforce them yourself if your channel needs them enforced.
  • property_rules is null when the host has set no rules. No row means no rule, not a rule of zero.
  • stop_sell is the flag to push to an OTA. It is true when the night is blocked, or when the host blocked it everywhere.

The data block

Field Type Description
property_rules object|null Property-wide booking rules, enforced at checkout. Null when unset.
property_rules.min_nights integer Shortest stay the property accepts.
property_rules.max_nights integer Longest stay the property accepts.
property_rules.advance_booking_days integer How many days ahead a booking must be made.
property_rules.same_day_cutoff_time string|null H:i in Asia/Kolkata. After this, same-day bookings are refused. Null means no cutoff.
dates[].date string Y-m-d.
dates[].min_nights integer|null Per-date minimum stay. Advisory.
dates[].max_nights integer|null Per-date maximum stay. Advisory.
dates[].block_scope string|null null, "ota_only" or "everywhere".
dates[].stop_sell boolean True when the night is blocked or scoped everywhere. This is what you push to an OTA.

Example

The full envelope, as it arrives on the wire.

json
{
    "id": "01J6Y0S5N8Q1R4T6V8X0Z2A4B6",
    "type": "restrictions.changed",
    "version": "2026-09",
    "sequence": 1044,
    "occurred_at": "2026-10-01T15:04:11+05:30",
    "integration": {
        "id": 12,
        "slug": "acme-pms"
    },
    "property": {
        "doorloom_id": 902,
        "external_id": "VILLA-9",
        "master_property_id": 902
    },
    "window": {
        "from": "2026-10-12",
        "to": "2026-10-14"
    },
    "data": {
        "property_rules": {
            "min_nights": 2,
            "max_nights": 14,
            "advance_booking_days": 1,
            "same_day_cutoff_time": "18:00"
        },
        "dates": [
            {
                "date": "2026-10-12",
                "min_nights": 2,
                "max_nights": null,
                "block_scope": null,
                "stop_sell": false
            },
            {
                "date": "2026-10-13",
                "min_nights": 3,
                "max_nights": null,
                "block_scope": null,
                "stop_sell": false
            },
            {
                "date": "2026-10-14",
                "min_nights": null,
                "max_nights": null,
                "block_scope": "everywhere",
                "stop_sell": true
            }
        ]
    }
}

Related

Something unclear or wrong on this page? Write to [email protected] and tell us which page — we would rather fix the doc than answer the ticket twice.