Skip to main content

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 with10.64969.
  • Sandbox DOIs use10.99999.test-only prefix (Crossref reserved test prefix). They are NEVER confused with production DOIs.

Endpoint catalogue

MethodPathDescription
GET/sandbox/v1/publicationsList sandbox publications
GET/sandbox/v1/publications/:doiResolve sandbox publication by DOI
GET/sandbox/v1/public/whitelist-modules/:codeSandbox module
GET/sandbox/v1/public/whitelist-modules/:code/subtasksSandbox module subtasks
GET/sandbox/v1/public/statsSandbox aggregate counts
GET/sandbox/v1/public/witnesses/latestLatest mock witness cosignatures
GET/sandbox/v1/public/oauth-clientPre-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-client
  • redirect_uri pattern: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.