<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SocketAuth API Documentation</title>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Roboto+Mono:wght@400;500&display=swap" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
    <style>
        :root {
            --primary: #c8a2c8;
            --primary-dark: #9b7b9b;
            --background: #17181c;
            --card-bg: #1c1d24;
            --text: #e8e8e8;
            --text-secondary: #9b9b9b;
            --border: #2a2a2a;
            --success: #4CAF50;
            --warning: #FFC107;
            --danger: #f44336;
            --code-bg: #2a2b30;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Inter', sans-serif;
            background-color: var(--background);
            color: var(--text);
            line-height: 1.6;
            min-height: 100vh;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 2rem;
        }

        .header {
            text-align: center;
            margin-bottom: 4rem;
            padding: 2rem 0;
            border-bottom: 1px solid var(--border);
        }

        .logo {
            font-size: 2.5rem;
            font-weight: 800;
            color: var(--primary);
            margin-bottom: 1rem;
        }

        .logo span {
            color: var(--text);
        }

        .description {
            color: var(--text-secondary);
            font-size: 1.1rem;
        }

        .section-title {
            color: var(--primary);
            font-size: 1.5rem;
            margin: 3rem 0 1.5rem;
            padding-bottom: 0.5rem;
            border-bottom: 1px solid var(--border);
        }

        .endpoint {
            background: var(--card-bg);
            border: 1px solid var(--border);
            margin-bottom: 1.5rem;
            transition: transform 0.2s ease;
            border-radius: 8px;
            overflow: hidden;
        }

        .endpoint:hover {
            transform: translateY(-2px);
        }

        .endpoint-header {
            padding: 1rem;
            display: flex;
            align-items: center;
            gap: 1rem;
            border-bottom: 1px solid var(--border);
            background: rgba(0, 0, 0, 0.2);
        }

        .method {
            padding: 0.25rem 0.75rem;
            border-radius: 4px;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.875rem;
            font-weight: 500;
        }

        .get {
            background: rgba(76, 175, 80, 0.1);
            color: var(--success);
            border: 1px solid var(--success);
        }

        .post {
            background: rgba(255, 193, 7, 0.1);
            color: var(--warning);
            border: 1px solid var(--warning);
        }

        .delete {
            background: rgba(244, 67, 54, 0.1);
            color: var(--danger);
            border: 1px solid var(--danger);
        }

        .path {
            font-family: 'Roboto Mono', monospace;
            font-size: 0.875rem;
            color: var(--text);
        }

        .description {
            padding: 1rem;
            color: var(--text-secondary);
        }

        .code-block {
            background: var(--code-bg);
            padding: 1rem;
            margin: 0 1rem 1rem;
            border-radius: 4px;
            font-family: 'Roboto Mono', monospace;
            font-size: 0.875rem;
            white-space: pre;
            overflow-x: auto;
            color: var(--text);
        }

        .code-block .string { color: #a8e08f; }  /* Strings */
        .code-block .number { color: #ff8b50; }  /* Numbers */
        .code-block .boolean { color: #ff8b50; } /* Booleans */
        .code-block .null { color: #ff8b50; }    /* Null */
        .code-block .key { color: #c8a2c8; }     /* Object keys */
        .code-block .punctuation { color: #e8e8e8; } /* Brackets, commas, etc */

        .response-block {
            margin-top: 1rem;
            border-top: 1px dashed var(--border);
        }

        .response-title {
            padding: 1rem;
            color: var(--text-secondary);
            font-size: 0.875rem;
            font-weight: 500;
        }

        @media (max-width: 768px) {
            .container {
                padding: 1rem;
            }

            .endpoint-header {
                flex-direction: column;
                align-items: flex-start;
            }
        }

        ::-webkit-scrollbar {
            width: 8px;
            height: 8px;
        }

        ::-webkit-scrollbar-track {
            background: var(--background);
        }

        ::-webkit-scrollbar-thumb {
            background: var(--primary-dark);
            border-radius: 4px;
        }

        ::-webkit-scrollbar-thumb:hover {
            background: var(--primary);
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <div class="logo">Socket<span>Auth</span></div>
            <p class="description">Complete API Documentation</p>
        </div>

        <h2 class="section-title">Authentication</h2>
        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/login</span>
            </div>
            <p class="description">Authenticate admin access.</p>
            <div class="code-block">
{
    "key": "your_admin_key"
}</div>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true
}</div>
            </div>
        </div>

        <h2 class="section-title">User Management</h2>
        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method get">GET</span>
                <span class="path">/api/admin/users</span>
            </div>
            <p class="description">Get all registered users.</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true,
    "users": [
        {
            "id": 1,
            "username": "user1",
            "hwid": "hwid_string",
            "blacklisted": false
        }
    ]
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method get">GET</span>
                <span class="path">/api/admin/active-users</span>
            </div>
            <p class="description">Get all currently active users.</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true,
    "activeUsers": [
        {
            "hwid": "hwid_string",
            "username": "user1",
            "connectedAt": "timestamp",
            "lastHeartbeat": "timestamp"
        }
    ]
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/ban/:userId</span>
            </div>
            <p class="description">Ban a specific user.</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/unban/:userId</span>
            </div>
            <p class="description">Unban a specific user.</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/reset-hwid/:userId</span>
            </div>
            <p class="description">Reset HWID for a specific user.</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true,
    "message": "HWID reset successful"
}</div>
            </div>
        </div>

        <h2 class="section-title">Token Management</h2>
        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method get">GET</span>
                <span class="path">/api/admin/tokens</span>
            </div>
            <p class="description">Get all authentication tokens.</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true,
    "tokens": [
        {
            "token": "token_string",
            "used": false,
            "created_at": "timestamp"
        }
    ]
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/generate-token</span>
            </div>
            <p class="description">Generate a new authentication token.</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true,
    "token": "generated_token_string"
}</div>
            </div>
        </div>

        <h2 class="section-title">Client Control</h2>
        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/send-message</span>
            </div>
            <p class="description">Send a message to a specific client.</p>
            <div class="code-block">
{
    "hwid": "client_hwid",
    "message": "Your message"
}</div>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/close-app</span>
            </div>
            <p class="description">Force close the application for a specific client.</p>
            <div class="code-block">
{
    "hwid": "client_hwid"
}</div>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/shutdown-pc</span>
            </div>
            <p class="description">Shutdown the PC for a specific client.</p>
            <div class="code-block">
{
    "hwid": "client_hwid"
}</div>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true
}</div>
            </div>
        </div>

        <h2 class="section-title">Version Control</h2>
        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method get">GET</span>
                <span class="path">/api/admin/version</span>
            </div>
            <p class="description">Get current application version.</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true,
    "version": "1.0.0"
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/update-version</span>
            </div>
            <p class="description">Update application version.</p>
            <div class="code-block">
{
    "version": "new_version_string"
}</div>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true,
    "version": "new_version_string"
}</div>
            </div>
        </div>

        <h2 class="section-title">Database Management</h2>
        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method get">GET</span>
                <span class="path">/api/admin/table/:tableName</span>
            </div>
            <p class="description">Get data from a specific database table (users or tokens).</p>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true,
    "rows": [/* table data */]
}</div>
            </div>
        </div>

        <div class="endpoint">
            <div class="endpoint-header">
                <span class="method post">POST</span>
                <span class="path">/api/admin/table/:tableName/update</span>
            </div>
            <p class="description">Update data in a specific database table.</p>
            <div class="code-block">
{
    "original": [/* original data */],
    "updated": [/* updated data */]
}</div>
            <div class="response-block">
                <div class="response-title">Response</div>
                <div class="code-block">
{
    "success": true
}</div>
            </div>
        </div>
    </div>

    <script>
        function highlightJSON() {
            document.querySelectorAll('.code-block').forEach(block => {
                let content = block.textContent;
                
                try {
                    const obj = JSON.parse(content);
                    content = JSON.stringify(obj, null, 4);
                } catch (e) {
                    
                }
                
                content = content
                    // Keys
                    .replace(/"([^"]+)":/g, '<span class="key">"$1"</span>:')
                    // Strings
                    .replace(/: ?"([^"]+)"/g, ': <span class="string">"$1"</span>')
                    // Numbers
                    .replace(/: ?(\d+)/g, ': <span class="number">$1</span>')
                    // Booleans
                    .replace(/: ?(true|false)/g, ': <span class="boolean">$1</span>')
                    // Null
                    .replace(/: ?null/g, ': <span class="null">null</span>')
                    // Punctuation
                    .replace(/([{}\[\],])/g, '<span class="punctuation">$1</span>');

                block.innerHTML = content;
            });
        }

        document.addEventListener('DOMContentLoaded', highlightJSON);
    </script>
</body>
</html>