{
  "module": "dossier",
  "version": "1.0.0",
  "what": "One report with everything about a sealed block: the decision, who sent it, the IP and request it came from, the integrity proofs and the time proofs.",
  "routes": {
    "status": "GET https://sebbi.pro/x/dossier/status - public",
    "verify": "GET https://sebbi.pro/x/dossier/verify?block=N - public, no personal data",
    "check": "GET https://sebbi.pro/x/dossier/check?digest=D - public",
    "report": "GET https://sebbi.pro/x/dossier/report?block=N - API key, own blocks",
    "issue": "POST https://sebbi.pro/x/dossier/issue {block} - API key, own blocks",
    "attach": "POST https://sebbi.pro/x/dossier/attach {block, ip, user_agent, session_id, actor, ...} - API key, within 900 seconds of sealing",
    "page": "https://sebbi.pro/dossier"
  },
  "privacy": "Request details are kept off the chain. Only their fingerprints are sealed, rolled into a Merkle root every 300 seconds. Raw details are deleted after 730 days.",
  "limits": [
    "It proves this record existed in this form when sealed and has not changed since. It does not prove the decision was right.",
    "The IP address is the machine that called the API, usually the operator's own server. The end user's address appears only if the operator attached it.",
    "Request details can be forged by whoever controls the calling machine. They record what arrived, not who was really behind it.",
    "Request details are captured for blocks sealed after capture began; older blocks are reported as not captured rather than guessed.",
    "The Bitcoin anchor fixes a ceiling on time only once its proof is confirmed. A pending proof is shown as pending.",
    "Account details are what the account holder gave at signup. They are not identity-verified by this report."
  ]
}