| Method |
Endpoint |
Description |
Auth Required |
POST |
/api/users/ |
Register new user |
No |
POST |
/api/token/get/ |
Login |
No |
POST |
/api/token/refresh/ |
Refresh tokens |
No |
POST |
/api/users/greet/ |
Test authentication |
Yes |
| Method |
Endpoint |
Description |
Auth Required |
GET |
/api/users/me/ |
Get current user info |
Yes |
| Method |
Endpoint |
Description |
Auth Required |
GET |
/api/files/ |
List user's files |
Yes |
POST |
/api/files/upload/ |
Upload a file |
Yes |
GET |
/api/files/download/{file_id}/ |
Download a file |
Yes |
POST |
/api/files/delete/{file_id}/ |
Delete a file |
Yes |
POST |
/api/files/share/{file_id}/ |
Generate share code |
Yes |
GET |
/api/files/download/shared/{share_code}/ |
Download shared file |
Yes |
// POST /api/users/
// Request
{
"email": "user@example.com",
"username": "johndoe",
"password_hash": "hashed_password"
}
// Response
{
"id": 1,
"email": "user@example.com",
"username": "johndoe"
}
// POST /api/token/get/
// Request
{
"email": "user@example.com",
"password_hash": "hashed_password"
}
// Response
{
"access_token": "eyJ...",
"refresh_token": "eyJ..."
}
// POST /api/files/upload/
// Content-Type: multipart/form-data
// Form fields:
// - file: <binary>
// - json: {"filename": "document.pdf.enc"}
// POST /api/token/refresh/
// Request
{
"refresh_token": "eyJ..."
}
// Response
{
"access_token": "eyJ...",
"refresh_token": "eyJ..."
}
// POST /api/users/greet/
// Response (plain text)
Welcome back, johndoe
// GET /api/users/me/
// Response
{
"id": 1,
"email": "user@example.com",
"username": "johndoe"
}
// GET /api/files/
// Response
[
{
"id": 1,
"filename": "document.pdf.enc",
"path": "/app/files_storage/<username_hash>/document.pdf.enc",
"size": 1024000,
"uploaded_at": "2024-01-15T10:30:00",
"user_id": 1
}
]
// GET /api/files/download/{file_id}/
// Response: binary file stream
// Headers:
// - Content-Disposition: attachment; filename="document.pdf.enc"
// - Content-Length: 1024000
// POST /api/files/delete/{file_id}/
// Response: 204 No Content
// GET /api/files/download/shared/{share_code}/
// Response: binary file stream (no auth required)
// Headers:
// - Content-Disposition: attachment; filename="document.pdf.enc"
// - Content-Length: 1024000
- Access token: 10 minute expiry
- Refresh token: 30 minute expiry
- Header format:
Authorization: Bearer <token>
- Share codes: 5 minute expiry, stored in Redis