{
  "info": {
    "name": "NoData Public Verification API",
    "description": "Postman collection for NoData's public verification endpoints. Import directly into Postman or Insomnia.\n\nNo auth required for any of these endpoints. They are public, IP-rate-limited, and return JSON.\n\nFor the closed endpoints (chain append, tenant mgmt) you need an API key — see /pricing.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_postman_id": "nodata-public-verify-1.0"
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://www.nodatacapsule.com/api",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "POST /verify — verify single file receipt",
      "request": {
        "method": "POST",
        "header": [{ "key": "Content-Type", "value": "application/json" }],
        "url": { "raw": "{{base_url}}/verify", "host": ["{{base_url}}"], "path": ["verify"] },
        "body": {
          "mode": "raw",
          "raw": "{\n  \"content_hash\": \"sha256:086fb29f1d7eaf2c4b9c3a8e5d1f6072c4a89b3e2f7d09e1a4b6c8d3f5a7b9c1\",\n  \"sidecar\": {\n    \"schema\": \"nodatasig.v1\",\n    \"receipt_id\": \"rcpt_142_sample_8a3f2c1b\",\n    \"chain_index\": 142,\n    \"signer_nickname\": \"demo-signer\",\n    \"chain_hmac\": \"a3f7e92b1c8d4e6f5a09b2c7d1e3f6a8b4c5d7e9f1a2b3c4d5e6f7a8b9c0d1e2\"\n  }\n}"
        },
        "description": "Verify a single file. Tampering with content_hash or chain_hmac → returns valid: false."
      }
    },
    {
      "name": "POST /verify-tree — verify Merkle folder",
      "request": {
        "method": "POST",
        "header": [{ "key": "Content-Type", "value": "application/json" }],
        "url": { "raw": "{{base_url}}/verify-tree", "host": ["{{base_url}}"], "path": ["verify-tree"] },
        "body": {
          "mode": "raw",
          "raw": "{\n  \"manifest\": {\n    \"merkle_root\": \"sha256:7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b\",\n    \"files_total\": 248\n  },\n  \"receipt_id\": \"rcpt_144_sample\"\n}"
        }
      }
    },
    {
      "name": "GET /proof/chain — fetch chain segment",
      "request": {
        "method": "GET",
        "url": {
          "raw": "{{base_url}}/proof/chain?from=rcpt_142_sample&depth=10",
          "host": ["{{base_url}}"], "path": ["proof", "chain"],
          "query": [
            { "key": "from", "value": "rcpt_142_sample" },
            { "key": "depth", "value": "10" }
          ]
        }
      }
    },
    {
      "name": "GET /proof/{nickname} — public receipts for signer",
      "request": {
        "method": "GET",
        "url": {
          "raw": "{{base_url}}/proof/demo-signer",
          "host": ["{{base_url}}"], "path": ["proof", "demo-signer"]
        }
      }
    },
    {
      "name": "GET /proof-certificate — printable certificate",
      "request": {
        "method": "GET",
        "url": {
          "raw": "{{base_url}}/proof-certificate?receipt_id=rcpt_142_sample",
          "host": ["{{base_url}}"], "path": ["proof-certificate"],
          "query": [{ "key": "receipt_id", "value": "rcpt_142_sample" }]
        }
      }
    },
    {
      "name": "POST /audit/export — get audit ZIP",
      "request": {
        "method": "POST",
        "url": { "raw": "{{base_url}}/audit/export", "host": ["{{base_url}}"], "path": ["audit", "export"] },
        "description": "Returns a ZIP. In demo mode, no auth needed — sample data is generated."
      }
    }
  ]
}
