Developers · Integrations & webhooks

Plug Andromeda into anything.

Courier providers. Payment devices. Third-party integrators. Outbound webhooks you subscribe to. Inbound webhooks Andromeda calls on your endpoint, signed with HMAC-SHA256 so you can verify every byte.

Every event on the platform. Delivered, signed, idempotent, with a retry policy you can tune.

Four things to integrate — and one signing secret.

Courier providers deliver 订单 (Uber Direct first-party; others via Stuart or Andromeda-managed dispatch). Payment devices are Stripe Terminal readers bound to a location. Third-party integrators are external systems (your CRM, your accounting pipe, a bespoke BI tool) authorised against your tenant. Webhooks are the inbound channel for everything that happens — subscribe, receive, verify signature, acknowledge.

Couriers — Queries & Commands

  • GET /organizations/{orgId}/courierproviders/locations/{locId}
  • GET /organizations/{orgId}/courierconfigurations/locations/{locId}
  • GET /organizations/{orgId}/courierjobs
  • GET /organizations/{orgId}/courierjobs/{id}/quotes
  • POST /organizations/{orgId}/courierjobs
  • POST /organizations/{orgId}/courierjobs/{id}/cancel

Payment devices — Queries & Commands

  • GET /organizations/{orgId}/paymentdevices
  • GET /organizations/{orgId}/paymentdevices/{id}
  • POST /organizations/{orgId}/paymentdevices
  • PUT /organizations/{orgId}/paymentdevices/{id}
  • POST /organizations/{orgId}/paymentdevices/{id}/test

Webhooks & 订阅s — Commands

  • GET /organizations/{orgId}/webhooks
  • POST /organizations/{orgId}/webhooks
  • PUT /organizations/{orgId}/webhooks/{id}
  • DELETE /organizations/{orgId}/webhooks/{id}
  • POST /organizations/{orgId}/webhooks/{id}/rotate-secret

Webhook event types

Subscribe to any subset. Every event carries the same outer envelope — eventId, eventType, occurredAtUtc, organizationId, data.

订单order.created
订单order.status.changed
订单order.cancelled
订单order.refunded
客户customer.created
客户customer.contact-preferences.changed
Loyaltyloyalty.points.adjusted
Loyaltyloyalty.tier.changed
菜单product.pricing.changed
菜单product.availability.changed
Courierscourier-job.status.changed
支付payment.settled
Always verify the signature. Every inbound webhook carries X-Andromeda-Signature: sha256=<hex>. Compute HMAC-SHA256 of the raw request body using your webhook secret and compare in constant time. Reject mismatches with 401 Unauthorized. Never trust the payload before verification.

Six integrations you’ll want to wire up.

Subscribe to a webhook. Verify a signature. Book a courier. Register a Stripe reader. Listen for an order event. Handle a retry cleanly.

1. Subscribe to webhooks

Tell Andromeda where to deliver events. You pick the URL, the event types, and an HTTPS endpoint on your side that can respond within 5 seconds. The response includes the signing secret — shown once, store it safely.

POST
Request
PROTECT_BLOCK_11_END
Response — 201 Created
PROTECT_BLOCK_12_END

2. Verify an inbound webhook signature

Compute HMAC-SHA256 over the raw request body using your stored secret, compare against the X-Andromeda-Signature header. Reject mismatches. Reject bodies older than 5 minutes to prevent replay.

NODE
Express middleware
PROTECT_BLOCK_14_END

3. Book a courier for an order

Get a quote first (distance, ETA, price), then create the job. Andromeda handles the handshake with Uber Direct or Stuart; you just get status events back on the courier-job.status.changed webhook.

POST
Step 1 — get quotes
PROTECT_BLOCK_16_END
Step 1 response — 200 OK
PROTECT_BLOCK_17_END
Step 2 — book the job
PROTECT_BLOCK_18_END
Step 2 response — 202 Accepted
PROTECT_BLOCK_19_END

4. Register a Stripe Terminal reader

Bind a Stripe Terminal reader to a location so in-store and kiosk 支付 route to it. Andromeda handles the Stripe Connect onboarding and reader registration; you just tell us the reader ID and where it lives.

POST
Request
PROTECT_BLOCK_20_END
Response — 201 Created
PROTECT_BLOCK_21_END

5. Handle an order event with idempotency

Andromeda retries on 5xx and timeouts. Use eventId as your idempotency key — upsert, don’t insert. Ack fast (200 OK under 5s), process asynchronously if you can’t.

NODE
Inbound handler
PROTECT_BLOCK_23_END
Inbound payload shape
PROTECT_BLOCK_24_END

6. Retry policy, 外送 attempts, dead-lettering

If your endpoint returns non-2xx or times out, Andromeda retries with exponential backoff for 24 hours. You can inspect every attempt, manually replay failed deliveries, and rotate the signing secret without downtime.

GET
Inspect 外送 attempts
PROTECT_BLOCK_25_END
Response — 200 OK
PROTECT_BLOCK_26_END
Replay a 外送
PROTECT_BLOCK_27_END
Rotate the signing secret
PROTECT_BLOCK_28_END

Explore the rest of the developer platform.

Build something on top of Andromeda.

Test environment, sandbox tenant, sample data, real endpoints. No commitment.