Sandbox · v1 · synthetic data
EMJ.life Sandbox API
This is the EMJ.life sandbox API. Endpoints mirror production at the/sandbox/* prefix. The data returned is synthetic and deterministic — never confuse it with production. Use the Swagger UI explorer configured for the sandbox base URL to try the endpoints interactively.
DOI prefix policy
- Production DOIs start with
10.64969. - Sandbox DOIs use
10.99999.test-onlyprefix (Crossref reserved test prefix). They are NEVER confused with production DOIs.
Endpoint catalogue
| Method | Path | Description |
|---|---|---|
| GET | /sandbox/v1/publications | List sandbox publications |
| GET | /sandbox/v1/publications/:doi | Resolve sandbox publication by DOI |
| GET | /sandbox/v1/public/whitelist-modules/:code | Sandbox module |
| GET | /sandbox/v1/public/whitelist-modules/:code/subtasks | Sandbox module subtasks |
| GET | /sandbox/v1/public/stats | Sandbox aggregate counts |
| GET | /sandbox/v1/public/witnesses/latest | Latest mock witness cosignatures |
| GET | /sandbox/v1/public/oauth-client | Pre-registered sandbox-test-client metadata |
Sample response
HTTP/1.1 200 OK
X-EMJ-Environment: sandbox
{
"data": {
"items": [
{
"doi":"10.99999/sandbox.emj.ntcc.demo-1",
"title":"Sandbox Demo Publication 1 — Coastal Cleanup (B2C)",
"business_direction":"B2C",
"record_count": 120,
"ntcc_total": 480.0,
"is_sandbox": true,
"synthetic_note":"Sandbox data — not production. For integration testing only."
}
],
"count": 1
},
"_sandbox": true,
"_disclaimer":"Sandbox data — not production. For integration testing only."
}OAuth in the sandbox
A pre-registered OAuth client is available so partners can call sandbox endpoints without going through the normal registration flow:
client_id:sandbox-test-clientredirect_uripattern:http://localhost:*(regex match)- Scope:
sandbox:read— can only access/sandbox/*endpoints.
Witness cosignatures
Sandbox publications carry pre-computed cosignatures from aSandbox-Witness entity (trust_level: STANDARD). These are MOCK — they carry no cryptographic guarantee and exist purely so partners can exercise the cosignature parsing path.
Sandbox is best-effort and not covered by the production SLA. The dataset is fixed (deterministic) — if you need a custom synthetic dataset, use the bulk-import endpoint with a sandbox flag.