{"service":"warehouse","message":"Self-hosted file storage. All structure from MinIO – no static folders; browse and upload stay in sync.","baseUrl":"https://cdn.isomatsoft.com","checkApis":"GET /api/uploads/check – list every API with method, path, description, and example curl","endpoints":{"browse":{"GET /api/uploads/browse/entities":"List top-level folders in bucket (from MinIO)","GET /api/uploads/browse/entities/:entity/ids":"List IDs under entity","GET /api/uploads/browse/entities/:entity/ids/:id/folders":"List folders under entity/id (from MinIO)","GET /api/uploads/browse/entities/:entity/ids/:id/subids?folder=":"List sub-IDs under entity/id/folder","GET /api/uploads/browse/entities/:entity/ids/:id/files?subPath=":"List files (subPath = path under entity/id)","GET /api/uploads/browse/file/link?path=...":"Get file URL (or proxy URL if USE_PROXY_FILE_URL=true)","GET /api/uploads/browse/file/stream?path=...":"Stream file from MinIO (proxy)"},"upload":{"POST /api/uploads/upload/image":"Upload image: entity, id, subPath (path from browse) or legacy purpose","POST /api/uploads/upload/images":"Upload multiple images: entity, id, subPath (or legacy purpose)","POST /api/uploads/upload/folder":"Upload folder: entity, id, subPath (or legacy), files[] + paths JSON","POST /api/uploads/upload/document":"Upload document (type, userId, purpose)"}}}