{
  "ok": true,
  "museum": {
    "name": "Museum of African American Innovation and Invention",
    "short_name": "MOAAII",
    "trademark": "MOAAII™",
    "owner": "Spark Fire Technologies",
    "tagline": "Every invention has a room. Every inventor has a name."
  },
  "api_version": "1.0",
  "authentication": {
    "session": "POST /api/auth/login sets an HttpOnly session cookie",
    "api_key": "Send \"Authorization: Bearer <key>\" or \"X-API-Key: <key>\"",
    "scopes": [
      "read",
      "write",
      "harvest",
      "admin"
    ]
  },
  "interoperability": {
    "oai_pmh": "/api/oai?verb=Identify",
    "dublin_core": "/api/objects/{id}?format=dc",
    "csv": "/api/export/objects.csv",
    "json": "/api/export/catalog.json"
  },
  "routes": [
    {
      "method": "GET",
      "path": "/api",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/admin/audit",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/admin/keys",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/admin/keys",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/admin/keys/:id",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/admin/maintenance",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/admin/overview",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/admin/rebuild-rooms",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/admin/reindex",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/admin/users",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/admin/users",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/admin/users/:id",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "PUT",
      "path": "/api/admin/users/:id",
      "auth": "public",
      "scope": "admin",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/ai/label/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/ai/narration/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/ai/statement/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/ai/status",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/ai/subjects/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/auth/login",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/auth/logout",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/auth/me",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/collections",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/collections",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/collections/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/collections/:id",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "PUT",
      "path": "/api/collections/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/collections/:id/export.zip",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/collections/:id/room",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/entities",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/entities",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/entities/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/entities/:id",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "PUT",
      "path": "/api/entities/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/exhibits",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/exhibits",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/exhibits/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/exhibits/:id",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "PUT",
      "path": "/api/exhibits/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/exhibits/:id/items",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/exhibits/:id/items/:objectId",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/exhibits/:id/label",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/exhibits/:id/publish",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/exhibits/:id/reorder",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/exhibits/:id/unpublish",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/export/catalog.json",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/export/objects.csv",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/harvest/approve-batch",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/harvest/robots",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/harvest/run",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/harvest/runs",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/harvest/scrape-preview",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/harvest/sources",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/harvest/staging",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/harvest/staging",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/harvest/staging/:id",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/harvest/staging/:id/approve",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/harvest/staging/:id/reject",
      "auth": "public",
      "scope": "harvest",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/health",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/hotspots/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "PUT",
      "path": "/api/hotspots/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/import",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/media",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/media",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/media/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/media/:id",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/media/:id/link",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/media/fetch",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/museum",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/narration",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/narration/:table/:id",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "PUT",
      "path": "/api/narration/:table/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/narration/:table/:id/audio",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/narration/:table/:id/render",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/narration/import",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/narration/voice",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/oai",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/objects",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/objects",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/objects/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/objects/:id",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "PUT",
      "path": "/api/objects/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/objects/:id/relate",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/objects/:id/relate/:table/:ref",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/render/artifact/:file",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/render/portrait/:file",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/render/room/:room/face/:face",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/rooms",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/rooms",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "DELETE",
      "path": "/api/rooms/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/rooms/:id",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "PUT",
      "path": "/api/rooms/:id",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/rooms/:id/hotspots",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/rooms/:id/layout",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/rooms/connect",
      "auth": "public",
      "scope": "write",
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/rooms/graph",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/api/search",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "POST",
      "path": "/api/visit",
      "auth": "public",
      "scope": null,
      "role": null
    },
    {
      "method": "GET",
      "path": "/media/:id/:mode",
      "auth": "public",
      "scope": null,
      "role": null
    }
  ]
}