{"title":"Archive Manager — Public API","version":"1.0","description":"Read-only public API for browsing published archival records, collections, entities, exhibits, and archivist-ready exports (EAD3, EAC-CPF, finding-aid PDF). Tenant resolution is via Host header; no API key required.","tenant_resolution":"X-Forwarded-Host header → organizations.custom_domain or subdomain-of-BASE_DOMAIN. Every response is scoped to the resolved tenant.","rate_limit":"200 requests/minute per IP","endpoints":[{"path":"/api/public/records","method":"GET","description":"Paginated list of published records.","params":{"page":"int, default 1","limit":"int, max 100","collection":"slug — recursive descendants","language":"ISO code"}},{"path":"/api/public/records/:slug","method":"GET","description":"Full record detail including entities, ancestors, siblings, prev/next."},{"path":"/api/public/collections","method":"GET","description":"Top-level fonds and collections with cover images and date aggregates."},{"path":"/api/public/collections/:slug","method":"GET","description":"Collection detail with immediate children, descendants count, ancestor breadcrumbs."},{"path":"/api/public/collections/:slug/ead.xml","method":"GET","description":"EAD3 XML finding aid download for a published collection."},{"path":"/api/public/collections/:slug/finding-aid.pdf","method":"GET","description":"PDF finding aid for a published collection."},{"path":"/api/public/entities","method":"GET","description":"Authority entities (people, places, subjects, organizations, families).","params":{"page":"int","limit":"int","entity_type":"person|corporate_body|place|subject|family","search":"text","letter":"char"}},{"path":"/api/public/entities/:slugOrId","method":"GET","description":"Entity detail with biographical notes and linked records."},{"path":"/api/public/entities/:slugOrId/records","method":"GET","description":"Published records linked to a given entity, ordered by confidence.","params":{"limit":"int","exclude":"record UUID to hide from results"}},{"path":"/api/public/entities/:slug/eac.xml","method":"GET","description":"EAC-CPF XML authority export for a single entity."},{"path":"/api/public/search","method":"GET","description":"Meilisearch proxy. Supports field-prefix syntax (person:X, place:Y).","params":{"q":"query text","collection":"slug — recursive-descendant filter","person":"entity name","place":"entity name","subject":"entity name","date_start":"int year","date_end":"int year","language":"ISO code","sort":"relevance|date|date_desc|title|quality","page":"int","limit":"int"}},{"path":"/api/public/cite/:slug","method":"GET","description":"Citation strings in Chicago 17, APA 7, MLA 9 formats, enriched with archive name, permalink, access date."},{"path":"/api/public/images/:orgId/:recordId/thumb","method":"GET","description":"400px max-edge JPEG thumbnail (sharp-resized from R2 original)."},{"path":"/api/public/images/:orgId/:recordId/original","method":"GET","description":"Original uploaded file (no resize). Respects suppress_from_aggregators flag."},{"path":"/api/public/iiif/:orgId/:recordId/manifest.json","method":"GET","description":"IIIF Presentation API 3.0 manifest."},{"path":"/api/public/oai","method":"GET","description":"OAI-PMH 2.0 endpoint. Supports all 6 verbs: Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, GetRecord. Metadata prefixes: oai_dc, ead, mods, qdc."},{"path":"/api/public/exhibits","method":"GET","description":"Published curated exhibits."},{"path":"/api/public/health","method":"GET","description":"Simple health probe. Returns { status: 'ok', services: {...} }."}]}