{"service":"e28e-ingest","phase":"MVP1 Phase 1 — knowledge ingestion (PDF + DOCX) + lifecycle (#75)","endpoints":["GET  /health — liveness (unauthenticated)","POST /upload — multipart: file=<pdf|docx>, domain=<...>, tenant_id=<id?> (owner|document_uploader)","GET  /documents?tenant_id=<id>&status=<active|archived|deleted|index_failed|all> — list docs (member|owner|document_uploader)","DELETE /documents/:id — soft-delete document (owner|document_uploader); ?hard=true purges Vectorize+R2+D1","POST /documents/:id/purge — hard-delete: purges Vectorize vectors+R2+D1 row (owner; right-to-deletion)","POST /documents/:id/reingest — replace with new version; purges OLD vectors (owner|document_uploader)","POST /documents/:id/reindex — re-embed existing doc from R2, no re-upload; purges OLD vectors (owner|document_uploader)","GET  /documents/:id/versions — version history for a logical doc (member|owner|document_uploader)","POST /documents/retention/purge-dry-run — preview grace-purge counts, read-only (owner; refs #76)"],"supported_file_types":["pdf","docx"],"rbac":{"upload":"owner|document_uploader","delete":"owner","purge":"owner","reingest":"owner|document_uploader","reindex":"owner|document_uploader","list_documents":"member|owner|document_uploader","list_versions":"member|owner|document_uploader","health":"unauthenticated"}}