{"openapi":"3.1.0","info":{"title":"DropVault API","summary":"Controlled file exchange API","version":"1.0.0"},"paths":{"/api/v1/health":{"get":{"tags":["v1"],"summary":"Lightweight liveness probe","operationId":"health_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api V1 Health Get"}}}}}}},"/api/v1/heartbeat":{"get":{"tags":["v1"],"summary":"Detailed service heartbeat","operationId":"heartbeat_endpoint_api_v1_heartbeat_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Heartbeat Endpoint Api V1 Heartbeat Get"}}}}}}},"/api/v1/status":{"get":{"tags":["v1"],"summary":"Status Endpoint","operationId":"status_endpoint_api_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status Endpoint Api V1 Status Get"}}}}}}},"/api/v1/statistics":{"get":{"tags":["v1"],"summary":"Statistics","operationId":"statistics_api_v1_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/activity":{"get":{"tags":["v1"],"summary":"Activity","operationId":"activity_api_v1_activity_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Event Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Activity Api V1 Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/files":{"get":{"tags":["v1"],"summary":"Files List","operationId":"files_list_api_v1_files_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Q"}},{"name":"mime","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Mime"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["newest","oldest","downloads","size"],"type":"string","default":"newest","title":"Sort"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v1"],"summary":"Upload File","operationId":"upload_file_api_v1_files_post","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_api_v1_files_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/files/{public_id}":{"get":{"tags":["v1"],"summary":"File Detail","operationId":"file_detail_api_v1_files__public_id__get","parameters":[{"name":"public_id","in":"path","required":true,"schema":{"type":"string","title":"Public Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["v1"],"summary":"Delete File","operationId":"delete_file_api_v1_files__public_id__delete","parameters":[{"name":"public_id","in":"path","required":true,"schema":{"type":"string","title":"Public Id"}},{"name":"X-Delete-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Delete-Token"}},{"name":"X-CSRF-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Csrf-Token"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/files/{public_id}/prepare-download":{"post":{"tags":["v1"],"summary":"Prepare Download","operationId":"prepare_download_api_v1_files__public_id__prepare_download_post","parameters":[{"name":"public_id","in":"path","required":true,"schema":{"type":"string","title":"Public Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareDownloadInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareDownloadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/transfers":{"get":{"tags":["v1"],"summary":"Transfers","operationId":"transfers_api_v1_transfers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Transfers Api V1 Transfers Get"}}}}}}},"/api/v1/nodes":{"get":{"tags":["v1"],"summary":"Nodes","operationId":"nodes_api_v1_nodes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Nodes Api V1 Nodes Get"}}}}}}},"/api/v1/auth/register":{"post":{"tags":["v1"],"summary":"Register","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterInput"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["v1"],"summary":"Login","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["v1"],"summary":"Logout","operationId":"logout_api_v1_auth_logout_post","parameters":[{"name":"X-CSRF-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Csrf-Token"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/webhooks/storage":{"post":{"tags":["v1"],"summary":"Storage Webhook","operationId":"storage_webhook_api_v1_webhooks_storage_post","parameters":[{"name":"X-DropVault-Signature","in":"header","required":true,"schema":{"type":"string","title":"X-Dropvault-Signature"}},{"name":"X-DropVault-Timestamp","in":"header","required":true,"schema":{"type":"string","title":"X-Dropvault-Timestamp"}},{"name":"X-DropVault-Delivery","in":"header","required":true,"schema":{"type":"string","title":"X-Dropvault-Delivery"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Storage Webhook Api V1 Webhooks Storage Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/config/public":{"get":{"tags":["v1"],"summary":"Public Config","operationId":"public_config_api_v1_config_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Public Config Api V1 Config Public Get"}}}}}}}},"components":{"schemas":{"AuthResponse":{"properties":{"user":{"$ref":"#/components/schemas/UserPublic"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["user","expires_at"],"title":"AuthResponse"},"Body_upload_file_api_v1_files_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"public":{"type":"boolean","title":"Public","default":true},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"retention_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retention Days"}},"type":"object","required":["file"],"title":"Body_upload_file_api_v1_files_post"},"FileItem":{"properties":{"public_id":{"type":"string","title":"Public Id"},"name":{"type":"string","title":"Name"},"size_bytes":{"type":"integer","title":"Size Bytes"},"mime_type":{"type":"string","title":"Mime Type"},"sha256":{"type":"string","title":"Sha256"},"access_type":{"type":"string","title":"Access Type"},"password_protected":{"type":"boolean","title":"Password Protected"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"download_count":{"type":"integer","title":"Download Count"},"scan_status":{"type":"string","title":"Scan Status"}},"type":"object","required":["public_id","name","size_bytes","mime_type","sha256","access_type","password_protected","created_at","expires_at","download_count","scan_status"],"title":"FileItem"},"FileListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FileItem"},"type":"array","title":"Items"},"pagination":{"$ref":"#/components/schemas/Pagination"}},"type":"object","required":["items","pagination"],"title":"FileListResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LoginInput":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password"}},"type":"object","required":["email","password"],"title":"LoginInput"},"Pagination":{"properties":{"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"total":{"type":"integer","title":"Total"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["page","page_size","total","pages"],"title":"Pagination"},"PrepareDownloadInput":{"properties":{"password":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Password"}},"type":"object","title":"PrepareDownloadInput"},"PrepareDownloadResponse":{"properties":{"download_url":{"type":"string","title":"Download Url"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["download_url","expires_at"],"title":"PrepareDownloadResponse"},"RegisterInput":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"display_name":{"type":"string","maxLength":80,"minLength":2,"title":"Display Name"},"password":{"type":"string","maxLength":256,"minLength":12,"title":"Password"}},"type":"object","required":["email","display_name","password"],"title":"RegisterInput"},"UploadResponse":{"properties":{"file":{"$ref":"#/components/schemas/FileItem"},"download_url":{"type":"string","title":"Download Url"},"delete_token":{"type":"string","title":"Delete Token"}},"type":"object","required":["file","download_url","delete_token"],"title":"UploadResponse"},"UserPublic":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"display_name":{"type":"string","title":"Display Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","display_name","created_at"],"title":"UserPublic"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}