Skip to main content

Integrations and API

Connect storefronts, fulfillment, and internal systems with real event contracts.

9010 exposes REST API contracts, webhooks, and NATS JetStream event streams so campaigns, commerce, logistics, warehouse, and customer-care data stay in sync without polling.

What connects

A real integration surface, not just a form export.

Storefronts and commerce

Shopify, WooCommerce, custom carts, POS terminals, and retail sales records connect into the same campaign, coupon, and order data.

Fulfillment and delivery

Delivery partners, warehouse handoffs, logistics providers, returns, and tracking milestones feed back into customer follow-up and proof reporting.

Webhooks and event contracts

Subscribe to order, campaign, seller, and delivery events through documented webhook payloads instead of polling an endpoint on a timer.

NATS JetStream event streams

Campaign, commerce, logistics, warehouse, and customer-care state changes publish to NATS JetStream, giving downstream systems a durable, replayable event log.

REST API contracts

Every controller exposes a documented REST contract with request/response shapes covered by automated contract tests, so integrations do not drift silently.

Data platform

Postgres/PostGIS for relational and geospatial records, SurrealDB for flexible documents, and MinIO for object storage, all running on infrastructure you control.

Developers

Event-driven by default, not polling.

Instead of your systems polling 9010 on a timer, mutations publish to NATS JetStream and stream to connected surfaces over WebSocket, so campaign, order, and delivery changes reach your team and your customers in real time.

Talk to Engineering

Developer quickstart

Real API contracts, real events, no black box.

Every service in the mesh is covered by automated contract tests, so an integration built against these shapes does not drift silently when the backend changes.

Authentication

REST calls authenticate with a Keycloak-issued JWT Bearer token. Organization and role scoping is read from the token, not a separate API key table.

GET /me
Authorization: Bearer <keycloak_jwt>

Webhooks

Delivery and fulfillment providers post status changes to a per-provider webhook route, which the logistics service records and re-publishes as a domain event.

POST /delivery/webhooks/{provider}
POST /delivery/tracking/{id}/webhook

Event subjects

Domain mutations publish to named NATS JetStream subjects per service, so a subscriber only needs the subjects relevant to its surface.

events.campaigns
events.commerce
events.logistics

Ready to connect your storefront and fulfillment stack?

Start with an operations readiness intake and we will scope the right integration path.