Skip to content

Baul (baul.redbroomsoftware.com)

B2B distribution and last-mile logistics platform — manages clients, product catalogs, delivery orders, driver dispatch, route generation, and public shipment tracking.

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

  • Delivery confirmation events — receive delivery.confirmed when a driver marks an order as delivered, to trigger downstream invoicing or inventory updates
  • Client and catalog reads — list distribution clients and their active product catalogs
  • Dispatch lifecycle — create and track delivery orders through driver assignment, en-route, and delivered stages
  • Public tracking — token-based read-only endpoint for recipients to track their shipment without authentication
  • Referral program — hook into referral events for partner-driven growth flows

Authentication

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

User identity flows through RBS SSO (IdP = CPR at ecosystem.redbroomsoftware.com; see Auth). Server-to-server partners use per-account API keys. The /api/tracking/[token] endpoint is public (no auth required).

Endpoints

Endpoint auto-discovery skipped: no Projects/baul source tree found. Table above is hand-curated.

Events emitted

EventReceiversDescription
baul.creditnote.issuedconstanzaBaúl credit note stamped — Constanza posts contra-revenue/contra-COGS pólizas (S458)
baul.invoice.paidcaminoS512 L3 — baul registered a payment on a PPD invoice; camino marks the cobranza receivable paid (or partial), stopping dunning.
baul.invoice.stampedcaminoBaúl stamped a PPD invoice — Camino creates a cobranza receivable (dunning). Distinct from caracol.invoice.stamped (per-sale PAC): this is the Baúl PPD→cobranza bridge, S500.
baul.weigh.pendingcaminoA weigh_on_site (variable-weight, e.g. truffle) order was created in Baúl and is held in pending_weigh — Camino prompts the on-site contact for a scale photo, its AI vision reads the weight and POSTs it back to Baúl /api/orders/[id]/weigh-proposal (advisory; a human confirms in Pesajes). S513 Truffle v2.
delivery.confirmedcaminoDelivery completed with proof of delivery (photos, signature)
deposit.completedconstanza, colectiva, caminoCash deposit completed at bank with proof (photo of slip, GPS). Baul physical layer event. Triggers expense creation in Constanza and agreement reconciliation in Colectiva.
handoff.completedcamino, colectiva, constanza, agora, agente, caracol, cosmos-pet, madrigueraGeneric physical handoff completed with proof. Covers document delivery, product returns, sample collection, key handoff, equipment transfer. Baul physical layer event.
inventory.in_transitcaracolA Baúl delivery order has been dispatched and is en route — Caracol surfaces an in-transit status on the linked movement. Fire-and-forget; Caracol may show location + ETA when provided.
inventory.pickup_discrepancycaracolThe driver pickup count was short at Baúl pickup time — Caracol surfaces a banner so the user can accept_short_pickup or dispute. Carries per-product expected vs actual counts.

Events consumed

EventSendersDescription
company.ecosystem_linkedagenteEmitted by Agente when a company is linked to an RBS ecosystem org (ecosystemOrgId set). Consumed by Baúl to auto-set operators.ecosystem_company_id.
payment.completedcolectivaA payment transaction was fully completed in Colectiva — source apps confirm the payment for delivery orders, subscriptions, or escrow. Used by baul to confirm delivery payment, mancha for reservation payment, constanza for accounting, and cosmos-pet for vet clinic subscription payments.
payment.failedcolectivaA payment attempt failed in Colectiva — notifies source apps (baul, mancha) to surface the failure to the user and offer retry.
payment.refundedcolectivaA payment was refunded by Colectiva — voluntary refund initiated by a tenant app or by Colectiva ops, OR an involuntary MP-platform-side refund. Receivers branch on paymentReferenceType. For voluntary refunds with proration, isPartial=true and proration block carries period bounds. paymentLayer is the primary routing discriminator; receivers MUST check it before paymentReferenceType.
shipment.incoming.updatedagenteAgente shipment pre-arrival update (status/ETA/line-items) for "próximos a llegar" staging
shipment.receivedagente[auto-derived] shipment.received event
subscription.createdcolectivaA new subscription record was created in Colectiva — baul receives this to link delivery service with the tenant's subscription. Distinct from subscription.activated (which fires after first payment succeeds).
subscription.payment_failedcamino, colectivaA subscription payment attempt failed — receiver apps surface a payment-failed banner to the tenant operator and may restrict feature access.

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

  • Baul emits only one event (delivery.confirmed) and consumes only two subscription lifecycle events — the narrowest ecosystem surface of any T2 app. If you need richer order lifecycle events, Camino CRM will aggregate them from delivery.confirmed for cross-app reporting.
  • Route generation (/api/cron/generate-routes) is an internal cron endpoint — not a developer-facing API. Do not call it directly.
  • The public tracking token is single-use per shipment and is generated at dispatch time. Expose it to the recipient via your own notification flow, not via direct API response to the end user.

Red Broom Software Ecosystem