index.md
HTML wrapper for HTML-only fetchers; content is shown verbatim.
Raw file
Links (extracted)
Clickable list for reviewers; avoids copy/paste line-wrap issues.
# if.api demo — DOI/Handle resolver (receipt-backed)
**Audience:** external reviewers + operators
**Reality gate:** demo of a transformation contract, not a deployed DOI/Handle integration.
---
## Links (HTML-first)
if.trace receipt:
https://infrafabric.io/static/trace/EKMtQbLWtQLZEERUqcKX1g
Pack (HTML view):
https://infrafabric.io/static/pack/EKMtQbLWtQLZEERUqcKX1g
Pack (raw Markdown):
https://infrafabric.io/static/pack/EKMtQbLWtQLZEERUqcKX1g.md
Source bundle (tgz):
https://infrafabric.io/static/source/4f413d779bd270fbb6450e9c9a64e6ccad1475de4780b6de223dadb5785dd064.tgz
---
## What this proves (black/white)
This demo proves:
- a known identifier request can be transformed deterministically into a normalized resolution envelope
- the output is bound to if.trace receipts (hash checks; signatures only where present and verifiable)
This demo does not prove:
- live DOI/Handle lookup, registration authority workflows, or metadata governance
- any shipped if.bus runtime or message broker
---
## Demo artifacts
Source bundle sha256 (tgz):
4f413d779bd270fbb6450e9c9a64e6ccad1475de4780b6de223dadb5785dd064
Input JSON sha256:
2087a1f9d48f899257b6607e4ff10d6d994b4bc32b3ceb09c84ded8112cc7ab5
Normalized output JSON sha256:
ab0e498942e4abff58d05ff9d1f2c2ae8d31568eb02cefa06ef5683f3dc17745
---
## How to reproduce (no internal access)
```bash
curl -fsSL -o if-api-doi-resolver-demo-source.tgz "https://infrafabric.io/static/source/4f413d779bd270fbb6450e9c9a64e6ccad1475de4780b6de223dadb5785dd064.tgz"
sha256sum if-api-doi-resolver-demo-source.tgz
tar -xzf if-api-doi-resolver-demo-source.tgz
python3 resolve_doi_demo.py doi_input.json > resolved_event.json
sha256sum resolved_event.json
```
Expected `sha256sum` (source bundle):
4f413d779bd270fbb6450e9c9a64e6ccad1475de4780b6de223dadb5785dd064 if-api-doi-resolver-demo-source.tgz
Expected `sha256sum` (normalized output):
ab0e498942e4abff58d05ff9d1f2c2ae8d31568eb02cefa06ef5683f3dc17745 resolved_event.json
---
## Output (normalized event envelope)
```json
{
"event": "resolve",
"input_sha256": "2087a1f9d48f899257b6607e4ff10d6d994b4bc32b3ceb09c84ded8112cc7ab5",
"integration": "doi.handle",
"notes": {
"integrity": "see if.trace receipt for output bytes",
"live_lookup": false
},
"requested_at": "2026-01-07T00:00:00Z",
"resolved_at": "2026-01-07T00:00:00Z",
"results": [
{
"identifier": "10.5555/12345678",
"metadata": {
"issued": "2025-12-31",
"publisher": "Example Registry",
"title": "Synthetic demo object for DOI resolution"
},
"resolution_method": "synthetic-map",
"scheme": "doi",
"status": "resolved",
"target_url": "https://example.org/if-trace-demo"
},
{
"identifier": "20.5000/IFTRACE.DEMO",
"metadata": {
"issued": "2025-12-31",
"publisher": "Example Registry",
"title": "Synthetic demo object for Handle resolution"
},
"resolution_method": "synthetic-map",
"scheme": "handle",
"status": "resolved",
"target_url": "https://example.org/if-trace-demo-handle"
}
],
"schema_version": "demo.v1"
}
```