> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scan.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Testing and sandbox

> Fixtures, status advancement, and test webhooks

Sandbox testing endpoints exist on the **sandbox host only**. Production always
returns `403`.

Bootstrap the documented synthetic records and identifiers instead of relying
on special patient names or ZIP codes.

## Bootstrap

`POST /api/v2/testing/fixtures` creates one synthetic patient, referral, visit,
and order for your group (idempotent). The JSON includes:

* `referral_id`, `visit_id`, `order_id`, `patient_id`
* `cpt_code_id` / `cpt_code`
* `icd10_code_id` / `icd10_code`
* `body_part_id`, `modality_id`
* `accession_id`, `study_uid`, `series_uid`

Use those ids in [Quickstart](/guides/quickstart) instead of fishing through
catalog endpoints.

## Advance a visit

`PATCH /api/v2/testing/visits/{visit_id}` with `{ "status": "booked" }` (or any
documented visit status) is allowed only for visits that belong to your fixture.
Scan enqueues the real `visit.status_changed` webhook.

Useful targets: `sent_to_rp`, `exam_not_completed`, `canceled`, `booked`,
`report_uploaded`, `qc_report_ready`.

## Test events

`POST /api/v2/testing/events` with `{ "event_name": "visit.status_changed" }`
POSTs a signed payload with `"test": true` to your configured webhook URL.

Supported names: `visit.status_changed`, `notification.status_changed`,
`referral.auto_book_completed`.

Configure `https://` webhook\_url first. See [Webhooks](/guides/webhooks).
