{"description":"RAG system with document ingestion and citation-aware answers","endpoints":{"DELETE /api/documents/:id":"Delete a document","DELETE /api/files/:filename":"Remove file record for re-upload","DELETE /api/files/failed":"Clear all failed file records for retry","DELETE /api/storage/:bucket/:org_id/*path":"Delete file from storage bucket","GET /api/capabilities":"Check document extraction capabilities","GET /api/documents":"List all documents","GET /api/documents/:id":"Get document details","GET /api/files":"List all tracked files with status","GET /api/files/:filename":"Get specific file status","GET /api/files/failed":"List failed files with error details","GET /api/files/gcs-counts":"Get file counts from GCS bucket (GCP only)","GET /api/files/stats":"Get file registry statistics","GET /api/files/sync/status":"Get last GCS sync status","GET /api/jobs":"List all jobs and queue stats","GET /api/jobs/:id":"Get job progress","GET /api/jobs/:id/files":"Get per-file progress with tier and parser details","GET /api/jobs/incomplete":"List incomplete jobs that can be resumed","GET /api/storage/:bucket/:org_id/*path":"Download file from storage bucket","GET /api/storage/:bucket/list":"List files in storage bucket (query: organization_id, prefix?)","GET /api/system/parsers":"Get available parsers and their status","GET /api/tools/manifest":"MCP-compatible tool definitions for LLM agents","POST /api/documents/:id/archive":"Archive a document (exclude from search)","POST /api/documents/:id/unarchive":"Unarchive a document (re-include in search)","POST /api/files/check":"Check file status before upload (deduplication)","POST /api/files/migrate-gcs":"Migrate GCS files to organization-specific folders (GCP only)","POST /api/files/revectorize":"Re-vectorize chunks to Vertex AI (GCP only)","POST /api/files/sync":"Sync file registry from GCS bucket (GCP only)","POST /api/files/upload":"Upload file with original filename (two-phase response)","POST /api/jobs/:id/resume":"Resume an incomplete/failed job","POST /api/query":"Query with citations (v1)","POST /api/storage/upload":"Upload file to storage bucket (multipart: organization_id, bucket, path, file)","POST /api/string-search":"Literal string search","POST /api/tools/batch":"Execute multiple tools in one request","POST /api/tools/execute":"Execute a tool by name (JSON body: {tool, params})","POST /api/v2/query":"Query with citations (v2 - frontend-friendly format)","POST /api/v2/query/stream":"Streaming query with SSE (v2 - same request, streamed answer)","WS /api/realtime":"WebSocket for real-time database change subscriptions (STUB - PostgreSQL NOTIFY pending)"},"features":{"answer_caching":"Cached answers with document-based invalidation","bucket_storage":"Bucket-based file storage for frontend attachments","deduplication":"Content-hash based file deduplication","gcs_storage":"Original files and plain text stored in GCS","grounded_answers":"LLM uses only document content, no external knowledge","realtime_websocket":"WebSocket API for database change subscriptions","string_search":"Literal text search for words/phrases"},"name":"ruvector-rag","storage_buckets":["task-attachments","user-avatars","organization-logos","message-attachments","goal-attachments"],"version":"0.1.18"}