{
    "name": "SIP Account REST API (PostgreSQL)",
    "version": "1.5.0",
    "database": "asteriskdb (PostgreSQL)",
    "status": "online",
    "schemas_in_database": {
        "sip_accounts": "SIP Account configuration table with REST API",
        "manager_next": "Asterisk manager queue table schema",
        "agent_live": "Live agent active sessions table schema",
        "conference": "Conference rooms allocation table schema"
    },
    "endpoints": [
        {
            "name": "Agent Login API",
            "base_url": "/api/agent_login.php",
            "methods": [
                "POST"
            ],
            "payload": {
                "extension": "VARCHAR(50) NOT NULL (Required, e.g. 7000 or PJSIP/7000)",
                "agent_user": "VARCHAR(100) (Optional, e.g. agent001)",
                "status": "VARCHAR(50) (Optional, default: READY)",
                "server_ip": "VARCHAR(50) (Optional, default: 127.0.0.1)",
                "campaign_id": "VARCHAR(50) (Optional)"
            }
        },
        {
            "name": "Agent Logout API",
            "base_url": "/api/agent_logout.php",
            "methods": [
                "POST",
                "DELETE"
            ],
            "payload": {
                "extension": "VARCHAR(50) NOT NULL (Required, e.g. 7000)"
            }
        },
        {
            "name": "Agent Live API (Unified)",
            "base_url": "/api/agent_live.php",
            "methods": [
                "GET",
                "POST",
                "DELETE"
            ],
            "query_parameters": [
                "extension",
                "id"
            ],
            "payload": {
                "action": "VARCHAR(20) (Optional: login | logout, default: login)",
                "extension": "VARCHAR(50) NOT NULL for login/logout"
            }
        },
        {
            "name": "SIP Accounts API",
            "base_url": "/api/sip_accounts.php",
            "methods": [
                "GET",
                "POST",
                "PUT",
                "DELETE"
            ],
            "query_parameters": [
                "id",
                "search",
                "status",
                "protocol"
            ],
            "schema": {
                "id": "SERIAL PRIMARY KEY",
                "extension": "VARCHAR(50) UNIQUE NOT NULL",
                "service_ip": "VARCHAR(255) NOT NULL",
                "pass": "VARCHAR(255) NOT NULL",
                "status": "VARCHAR(50) (active | registered | inactive | unregistered)",
                "protocol": "VARCHAR(20) (PJSIP | SIP | EXTERNAL | IAX2)"
            }
        },
        {
            "name": "SIP Session API",
            "base_url": "/api/sip_session.php",
            "methods": [
                "GET",
                "POST"
            ],
            "query_parameters": [
                "id",
                "limit"
            ],
            "payload": {
                "conference_number": "VARCHAR(50) NOT NULL (Required)",
                "sip_account": "VARCHAR(20) (Optional, e.g. 1001)",
                "server_ip": "VARCHAR(15) (Optional, default: 127.0.0.1)",
                "action": "VARCHAR(20) (Optional, default: Originate)",
                "status": "VARCHAR(20) (Optional, default: NEW)"
            }
        },
        {
            "name": "Manual Call API",
            "base_url": "/api/manual_call.php",
            "methods": [
                "POST"
            ],
            "payload": {
                "agentid": "VARCHAR(50) NOT NULL (Required, e.g. agent001 or 7000)",
                "phone_number": "VARCHAR(50) NOT NULL (Required, e.g. 9876543210)",
                "conference_number": "VARCHAR(50) (Optional, e.g. 8600001)",
                "callerid": "VARCHAR(20) (Optional, Auto-generated unique M260805... format if omitted)",
                "server_ip": "VARCHAR(15) (Optional, default: 127.0.0.1)",
                "context": "VARCHAR(50) (Optional, default: default)",
                "action": "VARCHAR(20) (Optional, default: Originate)"
            }
        },
        {
            "name": "Agent Auto Call API",
            "base_url": "/api/agent_auto_call.php",
            "methods": [
                "GET",
                "POST"
            ],
            "payload": {
                "agentid": "VARCHAR(50) NOT NULL (Required, e.g. agent001 or 7000)",
                "phone_numbers": "ARRAY or String (Required, e.g. [\"9876543210\", \"9876543211\"] or \"9876543210, 9876543211\")",
                "conference_number": "VARCHAR(50) (Optional, e.g. 8600001)",
                "server_ip": "VARCHAR(15) (Optional, default: 127.0.0.1)",
                "context": "VARCHAR(50) (Optional, default: default)",
                "action": "VARCHAR(20) (Optional, default: Originate)"
            }
        },
        {
            "name": "Hangup Call API",
            "base_url": "/api/hangupcall.php",
            "methods": [
                "POST"
            ],
            "payload": {
                "callerid": "VARCHAR(50) NOT NULL (Required, e.g. S260731073526660136 or 7000)",
                "sip_account": "VARCHAR(50) (Optional, alias for callerid)"
            }
        }
    ]
}