ReferenceReference
Sandbox endpoints
Exact request and response contracts for the sandbox endpoints, generated from the enforced Partner API contract.
Machine-readable OpenAPI descriptionOn this page
Endpoints in this group
/v1/sandbox/order-fixturesList synthetic order-request fixtures/v1/sandbox/scenariosList deterministic sandbox scenarios/v1/sandbox/orders/{orderId}/simulateAdvance a synthetic sandbox order through a scenario/v1/sandbox/orders/{orderId}/laboratory-transportSend a synthetic sandbox order through the Solia test laboratoryImportant
Base path: /api/public/partner/v1. Every response carries request_id; every failure uses the standard error envelope documented under Errors.
GET/v1/sandbox/order-fixtures
List synthetic order-request fixtures
Clearly synthetic request templates for the minimal, provider, patient and ask-at-order-entry contracts. Never real data.
Authentication & scope
- Authentication:
Authorization: Bearer <API key>. The key is bound to one laboratory, one API client and one environment. - No resource scope is required beyond a valid, active key.
Synthetic schema examples are illustrative, not eligible records. Set PROGRAM_ID and ITEM_ID from granted Programs/Catalog, ORDER_ID and RESULT_ID from current responses, and EXTERNAL_SUBJECT_ID to an opaque synthetic reference. Replace body identifiers with authorized records and include patient/provider/question fields only when current requirements request them. Use Sandbox; Production requires separate approval.
cURL
curl -s "$SOLIA_API_BASE/sandbox/order-fixtures" \
-H "Authorization: Bearer $SOLIA_API_KEY"Responses
- 200 — Synthetic fixtures.
- 401 — Missing, invalid, revoked or expired key.
- 403 — Client, environment or scope denied.
- 429 — Per-instance client rate limit exceeded; honor Retry-After.
- 500 — Canonical request failed; reconcile uncertain actions.
- 503 — Required API configuration is unavailable.
{
"data": [
{}
],
"request_id": "synthetic"
}GET/v1/sandbox/scenarios
List deterministic sandbox scenarios
Authentication & scope
- Authentication:
Authorization: Bearer <API key>. The key is bound to one laboratory, one API client and one environment. - No resource scope is required beyond a valid, active key.
Synthetic schema examples are illustrative, not eligible records. Set PROGRAM_ID and ITEM_ID from granted Programs/Catalog, ORDER_ID and RESULT_ID from current responses, and EXTERNAL_SUBJECT_ID to an opaque synthetic reference. Replace body identifiers with authorized records and include patient/provider/question fields only when current requirements request them. Use Sandbox; Production requires separate approval.
cURL
curl -s "$SOLIA_API_BASE/sandbox/scenarios" \
-H "Authorization: Bearer $SOLIA_API_KEY"Responses
- 200 — Available scenarios.
- 401 — Missing, invalid, revoked or expired key.
- 403 — Client, environment or scope denied.
- 429 — Per-instance client rate limit exceeded; honor Retry-After.
- 500 — Canonical request failed; reconcile uncertain actions.
- 503 — Required API configuration is unavailable.
{
"data": [
{
"scenario": "happy_path",
"steps": 1,
"events": [
"order.created"
]
}
],
"request_id": "synthetic"
}POST/v1/sandbox/orders/{orderId}/simulate
Advance a synthetic sandbox order through a scenario
Sandbox only. A production key or a non-synthetic order is refused.
Authentication & scope
- Authentication:
Authorization: Bearer <API key>. The key is bound to one laboratory, one API client and one environment. - Required scope:
orders:write. A key without it is refused with 403forbidden.
Path parameters
orderId(required) — string (uuid). Sandbox order identifier.
Request body
Required body fields: scenario.
{
"scenario": "happy_path"
}Synthetic schema examples are illustrative, not eligible records. Set PROGRAM_ID and ITEM_ID from granted Programs/Catalog, ORDER_ID and RESULT_ID from current responses, and EXTERNAL_SUBJECT_ID to an opaque synthetic reference. Replace body identifiers with authorized records and include patient/provider/question fields only when current requirements request them. Use Sandbox; Production requires separate approval.
cURL
curl -s -X POST "$SOLIA_API_BASE/sandbox/orders/$ORDER_ID/simulate" \
-H "Authorization: Bearer $SOLIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"scenario":"happy_path"}'Responses
- 200 — Applied steps.
- 401 — Missing, invalid, revoked or expired key.
- 403 — Client, environment or scope denied.
- 422 — Simulation is not permitted for this key or order.
- 429 — Per-instance client rate limit exceeded; honor Retry-After.
- 500 — Canonical request failed; reconcile uncertain actions.
- 503 — Required API configuration is unavailable.
{
"data": {
"order_id": "00000000-0000-4000-8000-000000000001",
"scenario": "synthetic",
"events_emitted": 1
},
"request_id": "synthetic"
}POST/v1/sandbox/orders/{orderId}/laboratory-transport
Send a synthetic sandbox order through the Solia test laboratory
Sandbox only. Sends the exact synthetic order through the real laboratory transport (canonical transmission, accepted ACK, signed inbound result). Requires the Sandbox laboratory to be the Solia test laboratory. Repeat calls are idempotent.
Authentication & scope
- Authentication:
Authorization: Bearer <API key>. The key is bound to one laboratory, one API client and one environment. - Required scope:
orders:write. A key without it is refused with 403forbidden.
Path parameters
orderId(required) — string (uuid). Sandbox order identifier.
Synthetic schema examples are illustrative, not eligible records. Set PROGRAM_ID and ITEM_ID from granted Programs/Catalog, ORDER_ID and RESULT_ID from current responses, and EXTERNAL_SUBJECT_ID to an opaque synthetic reference. Replace body identifiers with authorized records and include patient/provider/question fields only when current requirements request them. Use Sandbox; Production requires separate approval.
cURL
curl -s -X POST "$SOLIA_API_BASE/sandbox/orders/$ORDER_ID/laboratory-transport" \
-H "Authorization: Bearer $SOLIA_API_KEY"Responses
- 200 — Transport evidence for the order.
- 401 — Missing, invalid, revoked or expired key.
- 403 — Client, environment or scope denied.
- 422 — Transport is not permitted for this key, order or laboratory.
- 429 — Per-instance client rate limit exceeded; honor Retry-After.
- 500 — Canonical request failed; reconcile uncertain actions.
- 503 — Required API configuration is unavailable.
{
"data": {
"order_id": "00000000-0000-4000-8000-000000000001",
"transmission_id": "00000000-0000-4000-8000-000000000001",
"correlation_id": "synthetic",
"transmission_status": "synthetic",
"ack_status": "synthetic",
"result_received": true,
"result_released": true,
"result_set_id": "00000000-0000-4000-8000-000000000001",
"result_status": "synthetic",
"released_at": "2026-10-19T00:00:00Z",
"event_id": "00000000-0000-4000-8000-000000000001",
"event_type": "synthetic"
},
"request_id": "synthetic"
}