Changelog
2026-09 — Three doors, and the rest of the product
Section titled “2026-09 — Three doors, and the rest of the product”- Landlord API at
/partner/v1/landlord— a landlord’s own door: their units with tenures, anonymised occupancy, blocks for own use, statement, payouts, invoices, running costs (read and record), released documents with download, and the conversation with the office. Keys are created in the landlord portal (or by the agency on their behalf) and are bound to one landlord. Own contract at/partner/v1/landlord/openapi.json; see the reference. - Cleaning API at
/partner/v1/cleaning— a cleaning company’s own door: the crew’s units, derived jobs with windows and deadlines, the day route, and start/finish/reopen reports that land exactly where the cleaning portal’s taps land. Keys are created in the cleaning portal and are bound to one crew. Own contract at/partner/v1/cleaning/openapi.json; see the reference. - Doors are enforced: a key belongs to one audience and answers
403 AUDIENCE_MISMATCHanywhere else.GET …/meon every door says which audience a key is and whom it is bound to. The agency console lists and can revoke every key of every door. - Agency door, second wave — the entities the product grew since the first
release, each behind its own scope:
GET /requests(enquiries,read:requests),GET/POST/PATCH /tasks(read:tasks,write:tasks),GET /invoices,/payments,/deposits(read:finance),GET /housekeeping/jobsand/teams(read:housekeeping),GET /landlords,/landlords/:id,/landlords/:id/statement(read:landlords),GET /unit-costsand/cost-categories(read:costs),GET /ratesandGET /promotions(read:rates),GET /amenities(read:units). - Units carry what the product now knows:
beds,bedroomDetails(sleeping arrangement),tourUrl(3D tour),permitNumber/permitUrl,petsAllowed, coordinates,photosand acoverPhoto, and per-unitamenitieson the detail — all additive. - Bookings now also return
sourceRef,currency,earlyCheckin,lateCheckout,holdUntilandcreatedAt.sourceRefwas promised on reads since the write path shipped and was missing — fixed. - Guests carry
stage(prospect/customer),presalesandconvertedAt;GET /guests?stage=prospectlists presales conversations. - Personal data keeps one line: the contact block on enquiries and the buyer
block on invoices appear only when the key also holds
read:guests. - New page What is covered: every entity of the product, which door exposes it, and what is left out on purpose.
- The explorer takes
?spec=agency|landlord|cleaning.
2026-08 — A machine-readable contract
Section titled “2026-08 — A machine-readable contract”GET /partner/v1/openapi.json— the full surface as OpenAPI 3.1, generated from the route definitions rather than written alongside them, so it cannot drift from what the API actually serves. Readable without a key; point your client generator at it.- Interactive explorer — every endpoint with its schemas, and a request runner that uses your own key.
- Validation errors now name the offending field in their
title. Thecodeis unchanged atVALIDATION, which is what you branch on.
2026-08 — Webhooks
Section titled “2026-08 — Webhooks”- Bookings can be pushed to you instead of polled:
booking.created,booking.updated,booking.cancelled. The agency registers endpoints in its portal; see the webhooks guide. - Every request is signed with HMAC-SHA-256 over
<timestamp>.<body>in anX-MyRentalCalendar-Signatureheader, with a per-endpoint secret. - Failed deliveries retry after 1 min, 5 min, 30 min, 2 h and 6 h; an endpoint failing 20 times in a row is switched off and the agency is shown why.
- Payloads carry no guest personal data, whatever the key’s scopes — the body travels to a URL the platform does not control.
2026-08 — Writing bookings, and reading guests
Section titled “2026-08 — Writing bookings, and reading guests”write:bookings— new scope.POST /partner/v1/bookingscreates a booking,POST /partner/v1/bookings/:id/cancelcancels one. Both run the same checks as the agency’s own portal (minimum stay, cleaning block, expected extensions, double-booking guard) and neither accepts a price: the engine decides. See the guide.read:guests— new scope for guest master data (name, contact, nationality, stay references). Identity documents captured at check-in remain unavailable through the API, in both directions.- Both new scopes are off by default when a key is created, and existing keys did not gain them.
GET /partner/v1/bookings/:idandGET /partner/v1/fee-typesadded.- Lists paginate:
?page=&pageSize=withtotalItems/pageCountbeside the collection.limitkeeps working, andbookingsis still the array’s name — nothing existing had to change. - Writes are recorded in the agency’s audit trail with the key as the actor.
2026-08 — Budgets per key, and a visible month
Section titled “2026-08 — Budgets per key, and a visible month”- The per-minute budget now follows the key, not the client address, and it is 60/minute rather than 120 per address. Several integrations behind one office IP no longer share one budget, and a runaway script cannot starve its siblings. Splitting work across two keys buys throughput.
X-RateLimit-Limit/-Remaining/-Reseton every answer, so you can pace instead of waiting to be refused.- Monthly quota of 50,000 requests per agency across all keys, answering
429 QUOTA_EXCEEDEDwithquota,usedandresetsAt. The position is onGET /partner/v1/meand in the agency portal. - CORS is now open on
/partner/*and/mcp(Access-Control-Allow-Origin: *). The surface takes no cookies, so browsers may call it directly — which still does not make shipping a key to a browser a good idea.
2026-08 — Key introspection & self-service keys
Section titled “2026-08 — Key introspection & self-service keys”GET /partner/v1/me— new. Returns the agency behind the key, the key’s scopes and the enforced rate budget. No scope required.- Key management moved into the portal (Partner API page): create keys with per-scope selection and optional expiry, see last use, revoke instantly. Previously keys existed only via the internal API.
- Managing keys is now its own functional right, so it can be delegated without handing out an admin login. Revoking a key keeps working after a downgrade.
2026-08 — Initial release
Section titled “2026-08 — Initial release”- Partner REST API
/partner/v1(read-only): units, availability, live quotes, bookings. - MCP server at
/mcp— Streamable HTTP, stateless; toolslist_units,get_availability,quote_stay,list_bookings. - Self-service API keys with scopes, optional expiry, instant revocation and last-used tracking (portal → Settings → API keys, Pro plan).
- Rate limit 120 requests/minute per client across REST and MCP.
Additive changes land here without notice periods; breaking changes ship as
/partner/v2 with a migration window.