Settings API
API endpoints for user settings management.
Manage user profile, API keys, and account settings.
Endpoints Overview
| Method | Endpoint | Description |
|---|---|---|
| GET | /settings/profile | Get user profile |
| PUT | /settings/profile | Update profile |
| GET | /settings/api-keys | List API keys |
| POST | /settings/api-keys | Create API key |
| DELETE | /settings/api-keys | Delete API key |
| GET | /settings/password | Get password requirements |
| PUT | /settings/password | Change password |
| GET | /settings/login-history | Get login history |
| GET | /settings/activity-history | Get activity history |
Get User Profile
GET /api/v1/settings/profile
Response:
{
"id": "user-123",
"username": "admin",
"role": "admin",
"createdAt": "2026-01-01T00:00:00Z",
"updatedAt": "2026-01-19T12:00:00Z"
}
Update Profile
PUT /api/v1/settings/profile
Request:
{
"username": "newusername"
}
Validation:
- Username: 3-50 characters, alphanumeric
Response:
{
"success": true,
"message": "Profile updated"
}
List API Keys
GET /api/v1/settings/api-keys
Response:
{
"apiKeys": [
{
"id": "key-123",
"name": "CI/CD Integration",
"keyPreview": "sk_live_xxxx...xxxx",
"permissions": {
"projects": "write",
"backups": "read",
"tasks": "none",
"cloudStorage": "none",
"system": "none"
},
"expiresAt": "2027-01-19T00:00:00Z",
"lastUsed": "2026-01-19T11:00:00Z",
"createdAt": "2026-01-01T00:00:00Z"
}
]
}
Create API Key
POST /api/v1/settings/api-keys
Request:
{
"name": "New Integration",
"permissions": {
"projects": "write",
"backups": "write",
"tasks": "read",
"cloudStorage": "none",
"system": "read"
},
"expiresAt": "2027-01-19T00:00:00Z"
}
Permission Levels:
none- No accessread- GET onlywrite- All methods
Response:
{
"success": true,
"apiKey": {
"id": "key-456",
"name": "New Integration",
"key": "sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permissions": { ... },
"expiresAt": "2027-01-19T00:00:00Z",
"createdAt": "2026-01-19T12:00:00Z"
}
}
The full API key is only returned once. Store it securely.
Delete API Key
DELETE /api/v1/settings/api-keys?id=key-123
Query Parameters:
| Parameter | Description |
|---|---|
id | API key ID to delete |
Response:
{
"success": true,
"message": "API key deleted"
}
Get Password Requirements
GET /api/v1/settings/password
Response:
{
"requirements": {
"minLength": 12,
"requireUppercase": true,
"requireLowercase": true,
"requireNumber": true,
"requireSpecial": true
}
}
Change Password
PUT /api/v1/settings/password
Request:
{
"currentPassword": "OldPassword123!",
"newPassword": "NewSecurePassword456!"
}
Response:
{
"success": true,
"message": "Password changed"
}
Error Response:
{
"success": false,
"error": "Current password is incorrect"
}
Get Login History
GET /api/v1/settings/login-history
Response:
{
"logins": [
{
"id": "login-123",
"timestamp": "2026-01-19T12:00:00Z",
"ipAddress": "192.168.1.100",
"userAgent": "Mozilla/5.0...",
"success": true
},
{
"id": "login-122",
"timestamp": "2026-01-19T11:00:00Z",
"ipAddress": "192.168.1.100",
"success": false,
"failureReason": "Invalid password"
}
]
}
Get Activity History
GET /api/v1/settings/activity-history
Response:
{
"activities": [
{
"id": "act-123",
"type": "project",
"action": "created",
"target": "my-project",
"timestamp": "2026-01-19T12:00:00Z",
"details": {
"projectName": "My Project"
}
},
{
"id": "act-122",
"type": "backup",
"action": "completed",
"target": "backup-456",
"timestamp": "2026-01-19T11:00:00Z",
"details": {
"size": 52428800
}
}
]
}
Activity Types
| Type | Actions |
|---|---|
auth | login, logout, failed_login, password_changed |
project | created, started, stopped, deleted, updated |
backup | created, restored, deleted |
task | created, updated, deleted, executed |
api_key | created, deleted |
settings | updated |
Error Responses
Invalid Password
{
"success": false,
"error": "Password does not meet requirements"
}
Status: 400
API Key Not Found
{
"success": false,
"error": "API key not found"
}
Status: 404
Rate Limited
{
"success": false,
"error": "Too many requests"
}
Status: 429