Settings API

API endpoints for user settings management.

Manage user profile, API keys, and account settings.

Endpoints Overview

MethodEndpointDescription
GET/settings/profileGet user profile
PUT/settings/profileUpdate profile
GET/settings/api-keysList API keys
POST/settings/api-keysCreate API key
DELETE/settings/api-keysDelete API key
GET/settings/passwordGet password requirements
PUT/settings/passwordChange password
GET/settings/login-historyGet login history
GET/settings/activity-historyGet 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 access
  • read - GET only
  • write - 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:

ParameterDescription
idAPI 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

TypeActions
authlogin, logout, failed_login, password_changed
projectcreated, started, stopped, deleted, updated
backupcreated, restored, deleted
taskcreated, updated, deleted, executed
api_keycreated, deleted
settingsupdated

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