{"service":"Battery ML API","version":"1.0.0","endpoints":{"upload_file":"POST /api/upload-file   (upload ZIP once; no prediction)","list_files":"GET  /api/files          (list stored files for client)","list_raw_files":"GET  /api/raw-files      (paged file listing from data_storage/raw)","list_raw_files_cursor":"GET  /api/raw-files/cursor (cursor pagination for large file sets)","raw_files_example":"GET  /api/raw-files/example (response schema examples for integration)","file_metadata":"GET  /api/file/{file_id} (metadata for a stored file)","predict_stored":"POST /api/predict-stored (predict by file_id or file_name + X-Client-Id)","train":"POST /api/train-model   (upload CSVs with X-Client-Id header)","predict_legacy":"POST /api/predict       (DEPRECATED — upload ZIPs with X-Client-Id header)","models":"GET  /api/models        (list client models with X-Client-Id header)","clients":"GET  /api/clients       (list all clients)","client_info":"GET  /api/client-info   (get client info with X-Client-Id header)"},"note":"All endpoints require X-Client-Id header (e.g., 'internal', 'client_1')"}