# Admin Account Unlock API Examples

## 1. Get List of Locked Admin Accounts

```bash
curl -X GET "http://localhost:5000/admin/accounts/locked" \
  -H "Content-Type: application/json"
```

**Response:**
```json
{
  "success": true,
  "data": {
    "message": "Found 2 locked admin accounts",
    "locked_accounts": [
      {
        "admin_id": "admin-123",
        "email": "admin1@example.com",
        "first_name": "John",
        "last_name": "Doe",
        "full_name": "John Doe",
        "failed_login_attempts": 5,
        "account_locked_until": "2024-01-15T10:30:00",
        "locked_since": "2024-01-15T10:30:00",
        "is_lock_expired": false,
        "phone": "+1234567890",
        "active": true
      }
    ],
    "total_count": 2,
    "retrieved_at": "2024-01-15T12:00:00"
  },
  "status_code": 200
}
```

## 2. Unlock an Admin Account

```bash
curl -X POST "http://localhost:5000/admin/accounts/unlock" \
  -H "Content-Type: application/json" \
  -d '{
    "admin_id": "admin-123",
    "unlocked_by": "admin-456"
  }'
```

**Response:**
```json
{
  "success": true,
  "data": {
    "message": "Admin account successfully unlocked",
    "admin_id": "admin-123",
    "admin_email": "admin1@example.com",
    "admin_name": "John Doe",
    "unlocked_at": "2024-01-15T12:05:00",
    "unlocked_by": "admin2@example.com",
    "unlocked_by_name": "Jane Smith",
    "previous_lock_until": "2024-01-15T10:30:00",
    "failed_attempts_reset": true
  },
  "status_code": 200
}
```

## 3. Error Responses

### Account Not Found
```json
{
  "success": false,
  "data": "Admin account not found",
  "status_code": 404
}
```

### Account Not Locked
```json
{
  "success": false,
  "data": "Admin account is not locked",
  "status_code": 400
}
```

### Unauthorized Unlock Attempt
```json
{
  "success": false,
  "data": "Unauthorized: Admin performing unlock not found or inactive",
  "status_code": 403
}
```

### Missing Required Fields
```json
{
  "success": false,
  "data": "Admin ID is required",
  "status_code": 400
}
```

## 4. Using the Python Scripts

### Simple Test Script
```bash
python3 test_admin_unlock.py
```

### Comprehensive Management Tool
```bash
python3 admin_account_manager.py
```

## 5. API Endpoints Summary

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/admin/accounts/locked` | Get list of locked admin accounts |
| POST | `/admin/accounts/unlock` | Unlock a specific admin account |

## 6. Request/Response Schema

### Unlock Request
```json
{
  "admin_id": "string (required)",
  "unlocked_by": "string (required)"
}
```

### Unlock Response
```json
{
  "success": true,
  "data": {
    "message": "string",
    "admin_id": "string",
    "admin_email": "string",
    "admin_name": "string",
    "unlocked_at": "ISO datetime string",
    "unlocked_by": "string",
    "unlocked_by_name": "string",
    "previous_lock_until": "ISO datetime string or null",
    "failed_attempts_reset": true
  },
  "status_code": 200
}
```
