Users API

The Users API provides endpoints for user management, authentication, and profile operations.

Authentication

Login

POST /api/v1/auth/login/

Request Body:

{
    "email": "user@example.com",
    "password": "secure_password"
}

Response:

{
    "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}

Refresh Token

POST /api/v1/auth/refresh/

Request Body:

{
    "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}

User Management

Register User

POST /api/v1/users/register/

Request Body:

{
    "email": "user@example.com",
    "password": "secure_password",
    "first_name": "John",
    "last_name": "Doe",
    "phone_number": "+1234567890"
}

Get User Profile

GET /api/v1/users/me/

Update User Profile

PATCH /api/v1/users/me/

Request Body:

{
    "first_name": "John",
    "last_name": "Smith",
    "phone_number": "+1987654321"
}

Change Password

POST /api/v1/users/change-password/

Request Body:

{
    "old_password": "current_password",
    "new_password": "new_secure_password"
}

Reset Password

POST /api/v1/users/reset-password/

Request Body:

{
    "email": "user@example.com"
}

Reset Password Confirm

POST /api/v1/users/reset-password-confirm/

Request Body:

{
    "token": "password_reset_token",
    "new_password": "new_secure_password"
}

Address Management

List Addresses

GET /api/v1/users/addresses/

Create Address

POST /api/v1/users/addresses/

Request Body:

{
    "name": "Home",
    "street_address": "123 Main St",
    "city": "New York",
    "state": "NY",
    "postal_code": "10001",
    "country": "US",
    "is_default": true
}

Update Address

PUT /api/v1/users/addresses/{address_id}/

Delete Address

DELETE /api/v1/users/addresses/{address_id}/

Rate Limiting

  • Authentication endpoints: 5 attempts per minute
  • Password reset: 3 attempts per hour
  • Profile updates: 10 requests per minute

Error Responses

The API uses standard HTTP status codes and returns error messages in the following format:

{
    "detail": "Error message",
    "code": "error_code"
}

Common error codes:

  • invalid_credentials: Invalid login credentials
  • email_exists: Email already registered
  • invalid_token: Invalid or expired token
  • validation_error: Invalid input data
  • not_found: Resource not found