Skip to content

Madriguera (madriguera.redbroomsoftware.com)

Dog hotel and walking management platform — pet and owner onboarding, room reservations, GPS-tracked walks, report cards, and a client-facing booking portal.

URL: https://madriguera.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

  • Reservation events — receive reservation.created and reservation.checked_out for hotel stays, to trigger Colectiva billing and Constanza invoicing
  • Walk completionwalk.completed fires when a GPS-tracked walk ends; consume for activity logging in Camino
  • Owner and pet registrationowner.registered and pet.registered enable CRM enrichment in Camino when new clients onboard
  • Report cardsreport_card.generated fires after a stay or walk is completed with behavioral notes
  • Client portal — portal endpoints expose availability and booking without requiring operator credentials

Authentication

http
Authorization: Bearer <api_key>
Content-Type: application/json

Operator console uses Camino SSO. Client portal uses session tokens tied to the owner profile. Server-to-server integrations use per-clinic API keys.

Endpoints

MethodPath
GET, POST/api/add-ons
GET/api/dashboard/stats
GET/api/ecosystem/customer-insights
GET/api/ecosystem/feature-access
POST/api/ecosystem/register
GET/api/ecosystem/upsell-recommendations
POST/api/ecosystem/upsell-track
GET, POST/api/ecosystem/webhooks
GET, POST/api/grooming
GET, POST/api/owners

40 total — 4 admin/cron/internal (hidden) — +26 more primary endpoints not shown. Source: src/routes/api/**/+server.{ts,js} in the madriguera repo.

Events emitted

EventReceiversDescription
activity.loggedcaminoA billable or tracked activity has been logged (time entry from Agora ghost timer, POS customer action in Caracol, vet/hotel log in Cosmos Pet or Madriguera) and sent to Camino for CRM activity tracking
owner.registeredcamino, colectivaA property or pet owner was registered in Madriguera — Camino creates a CRM contact, Colectiva records the new account for revenue tracking.
pet.registeredcolectiva[auto-derived] pet.registered event
report_card.generatedcolectiva[auto-derived] report_card.generated event
reservation.checked_outcolectiva[auto-derived] reservation.checked_out event
reservation.createdcaracol, colectiva, hojaA restaurant reservation has been created
walk.completedcolectiva, camino[auto-derived] walk.completed event

Events consumed

EventSendersDescription
cfdi.cancelledconstanzaA CFDI invoice has been cancelled
cfdi.stampedconstanzaA CFDI invoice has been stamped by the SAT via Constanza — receiver apps attach the UUID to their local invoice record and update status.
customer.mergedcaminoTwo duplicate customer records were merged in Camino — receiver apps update their local foreign keys to the canonical customer ID.
customer.updatedcamino, constanza, caracolA customer/contact record was updated in Camino — receiver apps sync the changed fields to their local customer records for display and invoicing accuracy.
employee.missing_dataconstanzaConstanza detected an employee with missing fiscal data (RFC/CURP/etc.) — routed back to the source app that created the employee so the missing fields can be completed.
handoff.completedbaulGeneric physical handoff completed with proof. Covers document delivery, product returns, sample collection, key handoff, equipment transfer. Baul physical layer event.
invoice.compliance_issueconstanzaConstanza detected an invoice compliance issue (missing/invalid RFC, duplicate, format error) — routed back to the source app for review.
payment.receivedcolectiva, constanzaA payment has been processed via Colectiva
payment.reconciledconstanzaConstanza completed bank reconciliation for a payment — receiver apps update their local payment records to mark the payment as reconciled against the bank statement.
subscription.activatedcamino, colectivaA subscription plan has been activated for a tenant — all apps that gate features behind the subscription tier update their local tier state.
subscription.cancelledcamino, colectivaA subscription has been cancelled — all apps that gate features behind the subscription tier update their local tier state to free/cancelled.
subscription.changedcaminoA subscription plan has been upgraded or downgraded — receiver apps update their tier gates and feature access accordingly.
subscription.limit_approachingcaminoA tenant's subscription usage is approaching the plan limit — Camino notifies subscriber apps to surface a plan-upgrade prompt to the tenant operator.
subscription.suspendedcaminoA subscription was suspended due to non-payment or compliance issue — Camino disables access until resolution. Receiver apps lock out the tenant and surface a suspension banner.

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

  • reservation.created follows the same event name used by Mancha (restaurant reservations) — both are consumed by Colectiva. If you are building a multi-vertical billing integration, use the source field to differentiate Madriguera reservations from Mancha ones.
  • GPS walk data at /api/walks/[id]/gps returns raw coordinate arrays and can be large. Do not fetch this in bulk — always scope by walk ID.
  • subscription.suspended is consumed in addition to the standard activated / cancelled pair. A suspended account retains data but loses write access; build your adapter to handle the three-state model (active / suspended / cancelled).

Red Broom Software Ecosystem