Changelog
Version 1.0. Additive changes land without notice; anything that breaks a caller gets a new version and notice first.
27 Oct 2026
- Duplicate addresses: addresses are compared by a canonical key (
addressKey). A second active listing of the same brokerage at one address answers 409 withexistingKey; another brokerage's is flagged to both owners throughGET /api/v1/conflictsand thelisting.conflictwebhook. - Key rotation:
POST /api/v1/keys/rotatereplaces the calling key; the old key keeps working for 24 hours, then stops. - Export:
GET /api/v1/exportreturns every listing your brokerage owns, with deliveries and history, a page at a time. - RESO Add/Edit:
POST /api/reso/PropertyandPATCH /api/reso/Property('{key}')take RESO Data Dictionary names, withPrefer, Idempotency-Key and field level OData errors. - Photos: up to 25 per listing through
/api/v1/listings/{key}/media(upload, add, reorder, remove), the RESOMediaresource and$expand=Mediaon Property. Owner reads now fillphotoswith signed links. - MLS draft: the console fills each MLS's input form from the listing for an agent to enter by hand; the MLS number they record comes back in
mlsNumbersand in that MLS's deliverynote.
26 Oct 2026
- Renamed to ListOnce before launch: webhooks carry
X-ListOnce-Signature,X-ListOnce-TimestampandX-ListOnce-DeliveryfromListOnce-Webhooks/1, and the extension fields areLO_SellerVisibilityChoiceandLO_SellerChoiceRecordedAt. - RESO: the
$metadatadata model, a service document, the Lookup resource, fetch by key, and$filterwith every comparison and logical operator,$select,$orderbyand$count. - RESO values:
PropertySubTypeuses Data Dictionary names andBathroomsTotalIntegeris a whole number, withBathroomsFullandBathroomsHalf. - Founder sandboxes: a key per founder whose listings stay apart from real ones.
- Developer guides at /developers and the OpenAPI 3.1 document at
/api/openapi.json, checked against the server with scripts/check-openapi.mjs before each release. - The read API moved onto the database. Members only and coming soon listings never appear in it.
- Write API:
POST /api/v1/listings,GETandPATCH /api/v1/listings/{key},GET /api/v1/listings/{key}/deliveries, with Idempotency-Key on POST. - Signed webhooks:
listing.createdandlisting.updated, retried for about two hours. - Scoped API keys with per minute limits.