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"
}
```