Skip to content

Sandbox guide

The sandbox (sandbox.railflo.com / api.sandbox.railflo.com) runs the same build as production, in test-mode-only isolation — no live keys can ever exist there. Every screen shows a permanent SANDBOX banner so it’s never mistaken for the real thing.

Signing up on the sandbox auto-provisions your new tenant with:

  • 1 facility, 1 practitioner
  • 50 synthetic patients, generated deterministically from your own tenant id — Irish-plausible names, addresses, and format-valid (but clearly synthetic) IHI identifiers. See Magic values for the 3 patients seeded with special behaviour.

Nothing here is derived from a real person — see packages/synth/README.md in the platform repo for the provenance rule this generator follows.

The fastest way to test failure modes without waiting for them to happen naturally. Full list and exact behaviour: Magic values. Categories:

  • Patients (by their seeded IHI) — one always rejects every exchange with policy_denied, one triggers the possible-duplicate match path, one is the demo patient for the identifier-reveal flow.
  • Recipientsunreachable@sandbox.railflo.com always fails delivery; slow@sandbox.railflo.com fails twice then succeeds; locked@sandbox.railflo.com demonstrates the secure-link retrieval page’s lockout.
  • Document filenames — a filename containing __infected__, __lowconf__, or __extractfail__ simulates the matching pipeline failure, no real malware or bad OCR required.

POST /v1/sandbox/scenarios/{name} runs a scripted sequence for you — useful for demos and for your own integration’s CI:

  • inbound_referral — a synthetic correspondent org sends your tenant a referral. Exercises your inbox and the ack flow.
  • busy_morning — 15 mixed documents hit intake at once (including one of each document magic value), exercising the review queue with a realistic status distribution.
  • full_lifecycle — create → deliver → ack, end to end.
Terminal window
curl -X POST https://api.sandbox.railflo.com/v1/sandbox/scenarios/inbound_referral \
-H "Authorization: Bearer railflo_sk_test_..."

Each call returns the ids of everything it created, so your own test suite can assert against them directly.

Terminal window
curl -X POST https://api.sandbox.railflo.com/v1/sandbox/reset \
-H "Authorization: Bearer railflo_sk_test_..."

Wipes everything your tenant has accumulated (patients, exchanges, documents, consent records) and re-seeds the exact same pristine 50-patient state signup gave you. Your API keys and webhook endpoints survive a reset — this is a data reset, not an account reset.

A sandbox tenant idle for 90 days gets a warning, then an automatic reset — the sandbox is a shared resource, not permanent storage for a proof-of-concept you’ve moved on from.