The past-date rule lives here, in the schema, and that is deliberately unlike
CreateBookingRequest — which had to move its equivalent into the service. A booking
is created by two very different callers through one object, the guest site and the
front desk, and only the desk may record a stay that already happened; a schema
validator runs before the handler and cannot tell them apart.
A block has no such split. POST /google/properties/{id}/availability requires
google:availability:manage, so every caller is staff or above with identical
rights, and there is nobody to make an exception for. A rule with no exceptions
belongs in the schema, where it is one line and cannot be forgotten by a second
call site.
The cost is stated plainly: maintenance that already started cannot be recorded
afterwards. That is the opposite answer to the one bookings got, and it is a
deliberate match to what the calendar UI allows rather than an oversight.
Hold a date range closed on a property.
The past-date rule lives here, in the schema, and that is deliberately unlike
CreateBookingRequest— which had to move its equivalent into the service. A booking is created by two very different callers through one object, the guest site and the front desk, and only the desk may record a stay that already happened; a schema validator runs before the handler and cannot tell them apart.A block has no such split.
POST /google/properties/{id}/availabilityrequiresgoogle:availability:manage, so every caller is staff or above with identical rights, and there is nobody to make an exception for. A rule with no exceptions belongs in the schema, where it is one line and cannot be forgotten by a second call site.The cost is stated plainly: maintenance that already started cannot be recorded afterwards. That is the opposite answer to the one bookings got, and it is a deliberate match to what the calendar UI allows rather than an oversight.