Goodbay (goodbay.redbroomsoftware.com)
Vacation rental and short-term hospitality platform — property listings, guest bookings, a coin economy for incentivizing cleaning staff, and inventory verification at checkout.
URL: https://goodbay.redbroomsoftware.comStatus: LIVE Tier: T2 (vertical SaaS primitive)
T1 apps are indispensable horizontal primitives. T2 apps are vertical SaaS or single-domain primitives — primitive-like in their domain but not universal dependencies.
What you can integrate
- Booking events — receive
booking.completedwhen a guest reservation is confirmed; trigger downstream invoicing, CRM enrichment, or channel sync - Payment reconciliation — consume
payment.receivedfrom Colectiva to mark bookings as paid and release the property calendar - Fiscal receipts —
cfdi.stampedfrom Constanza is consumed to attach the fiscal receipt to the booking record - Coin economy — cleaning staff earn coins on job completion; coins are redeemable via
/api/coinsfor rewards - Inventory verification — inventory checklist is tied to check-out jobs; partners can read inventory state per property
Authentication
Authorization: Bearer <api_key>
Content-Type: application/jsonUser identity flows through Camino SSO via /auth/rbs. Per-property API keys are issued from the Goodbay admin console. Guest-facing flows use session tokens.
Endpoints
| Method | Path |
|---|---|
| GET, POST | /api/bookings |
| PATCH | /api/bookings/:id |
| POST | /api/bookings/:id/checkout |
| GET, POST | /api/coins |
| POST | /api/ecosystem/register |
| GET, POST | /api/ecosystem/upsell |
| GET, POST | /api/ecosystem/webhooks |
| GET, POST, PATCH | /api/inventory |
| GET, POST, PATCH | /api/jobs |
| POST | /api/leads |
21 total — 3 admin/cron/internal (hidden) — +8 more primary endpoints not shown. Source: src/routes/api/**/+server.{ts,js} in the goodbay repo.
Events emitted
| Event | Receivers | Description |
|---|---|---|
booking.cancelled | colectiva | A booking has been cancelled. PD-115 (S178-inverse fingerprint): goodbay added as sender — Colectiva's handleBookingCancelled handler at /api/ecosystem/webhooks/+server.js:960 was wired end-to-end but no goodbay producer fired the event, surfacing as a dormant emitter in the S327 audit. Goodbay emits from /api/bookings/[id]/+server.ts after the cancel batch commits. |
booking.completed | camino | A stay/booking has been completed at checkout — settlement signal (owner payout, RBS commission). PD-073 Slice 2 (S317): goodbay re-added as sender, now firing from /api/bookings/[id]/checkout. Camino receiver retains the Plenura-shape handler with source_app discriminator (S317 logistics.ts:20 guard — non-Plenura sourceApp ignored). |
booking.created | colectiva | A new booking was created in a hospitality or pet-care app — Colectiva records it for revenue tracking and occupancy analytics. |
booking.reserved | colectiva | A booking has been reserved/created (coins/funds deducted, status='pending'). PD-073 Slice 1 (S317) — semantic-corrected rename of the previous goodbay booking.completed-at-creation emit. Settlement signal moves to the new booking.completed once Slice 2 lands. Colectiva wired as receiver in Slice 3. |
Events consumed
| Event | Senders | Description |
|---|---|---|
cfdi.stamped | constanza | A CFDI invoice has been stamped by the SAT via Constanza — receiver apps attach the UUID to their local invoice record and update status. |
payment.received | colectiva, constanza | A payment has been processed via Colectiva |
Webhook signature
Standard ecosystem HMAC-SHA256 over the raw body with a 5-minute timestamp window. See Webhooks.
OpenAPI
Coming in the OpenAPI generator phase — see /reference/openapi.
SDK
See /sdk/ for @r-bsoftware/ecosystem-sdk helpers.
Gotchas
- Goodbay emits only
booking.completedand consumes only two events — a deliberately narrow integration surface. Richer financial and CRM events flow through Colectiva and Camino afterbooking.completedis processed. - Coin balance is local to the Goodbay platform. Coins are not a Colectiva wallet — do not treat them as redeemable currency in external systems without checking the coin redemption rules first.
- Inventory verification is tied to cleaning jobs, not bookings. Query
/api/inventoryafter a job is marked complete, not at booking confirmation time.