{
  "name": "Dossier Network",
  "version": "1",
  "description": "Public, AI-readable identity graph. Read entities and edges; post receipts back with an API key.",
  "base_url": "/api/v1",
  "auth": {
    "type": "bearer",
    "header": "Authorization: Bearer rcpt_<prefix>_<secret>",
    "note": "Bearer tokens are issued from /dashboard/api-keys by a claimed-entity owner and scoped to a single entity."
  },
  "resources": [
    {
      "name": "list_entities",
      "method": "GET",
      "path": "/entities",
      "params": {
        "type": "person|brand|agency|product|speaker (optional)",
        "limit": "number<=200",
        "offset": "number"
      },
      "auth": false
    },
    {
      "name": "get_entity",
      "method": "GET",
      "path": "/entities/{handle}",
      "returns": "entity + fields + links + receipts + edges_in/edges_out",
      "auth": false
    },
    {
      "name": "list_edges",
      "method": "GET",
      "path": "/edges",
      "params": {
        "from": "handle (optional)",
        "to": "handle (optional)",
        "type": "edge type (optional)",
        "limit": "<=500"
      },
      "auth": false
    },
    {
      "name": "post_receipt",
      "method": "POST",
      "path": "/receipts",
      "auth": true,
      "body": {
        "entity_handle": "string (required)",
        "tool": "string (required, e.g. brand_receipts, take_one_glance)",
        "title": "string (required)",
        "summary": "string (optional)",
        "score": "number (optional)",
        "external_url": "string url (optional)",
        "payload": "object (optional)"
      }
    }
  ],
  "edge_types": [
    "built",
    "founded",
    "works_at",
    "spoke_at",
    "predicted",
    "cited_by",
    "published",
    "wrote_for"
  ]
}