Alarm Management

  • Archive alarms

    Archives (dismisses) alarms in the UniFi Controller. Can archive a specific alarm by ID or archive all current alarms.

    Parameters

    • Optional alarm_id: string

      Optional specific alarm ID to archive. If not provided, archives all alarms

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<boolean>

    Promise resolving to true if alarm archiving was successful

    Throws

    When alarm archiving fails

    Example

    // Archive all alarms
    await statisticsAPI.archive_alarm();

    // Archive specific alarm
    await statisticsAPI.archive_alarm('507f1f77bcf86cd799439011');

    // Archive alarms after reviewing them
    const alarms = await statisticsAPI.list_alarms();
    const criticalAlarms = alarms.filter(alarm => alarm.key === 'EVT_GW_WAN_Disconnected');
    for (const alarm of criticalAlarms) {
    await statisticsAPI.archive_alarm(alarm._id);
    }

    See

    PHP: archive_alarm($alarm_id = '') -> return $this->fetch_results_boolean('/api/s/' . $this->site . '/cmd/evtmgr', $payload);

Constructors

DPI Statistics

  • List DPI stats

    Retrieves Deep Packet Inspection (DPI) statistics showing application usage and traffic patterns across the network.

    Parameters

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of DPI statistics objects

    Throws

    When DPI statistics retrieval fails

    Example

    // Get all DPI stats
    const dpiStats = await statisticsAPI.list_dpi_stats();

    // Find top applications by traffic
    const topApps = dpiStats
    .sort((a, b) => (b.tx_bytes + b.rx_bytes) - (a.tx_bytes + a.rx_bytes))
    .slice(0, 10);

    // Analyze social media usage
    const socialApps = dpiStats.filter(app =>
    app.cat && app.cat.toLowerCase().includes('social')
    );

    See

    PHP: list_dpi_stats() -> return $this->fetch_results('/api/s/' . $this->site . '/stat/dpi');

  • List DPI stats filtered

    Retrieves filtered Deep Packet Inspection (DPI) statistics with specific categorization and filtering options.

    Parameters

    • type: string = 'by_app'

      Type of DPI grouping: 'by_app' or 'by_cat' (default: 'by_app')

    • Optional cat_filter: string

      Optional category filter to limit results

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to filtered DPI statistics

    Throws

    When filtered DPI statistics retrieval fails

    Example

    // Get DPI stats grouped by application
    const appStats = await statisticsAPI.list_dpi_stats_filtered('by_app');

    // Get DPI stats grouped by category
    const catStats = await statisticsAPI.list_dpi_stats_filtered('by_cat');

    // Get stats for specific category
    const socialStats = await statisticsAPI.list_dpi_stats_filtered('by_app', 'Social');

    // Analyze streaming usage
    const streamingStats = await statisticsAPI.list_dpi_stats_filtered('by_app', 'Streaming');
    const totalStreaming = streamingStats.reduce((sum, app) =>
    sum + app.tx_bytes + app.rx_bytes, 0
    );

    See

    PHP: list_dpi_stats_filtered($type = 'by_app', $cat_filter = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/sitedpi', $payload);

Dashboard

  • List dashboard

    Retrieves dashboard statistics and metrics for the UniFi site. Can provide either standard or 5-minute interval statistics.

    Parameters

    • five_minutes: boolean = false

      Whether to use 5-minute intervals instead of standard intervals (default: false)

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to dashboard statistics object

    Throws

    When dashboard statistics retrieval fails

    Example

    // Get standard dashboard stats
    const dashboard = await statisticsAPI.list_dashboard();
    console.log(`Total clients: ${dashboard.num_user}`);
    console.log(`Total devices: ${dashboard.num_ap + dashboard.num_sw + dashboard.num_gw}`);

    // Get high-resolution 5-minute stats
    const detailedDashboard = await statisticsAPI.list_dashboard(true);

    // Monitor network health
    const stats = await statisticsAPI.list_dashboard();
    if (stats.num_disconnected > 0) {
    console.log(`Warning: ${stats.num_disconnected} devices disconnected`);
    }

    See

    PHP: list_dashboard($five_minutes = false) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/dashboard', $payload);

Discovery & Fingerprinting

  • List extension

    Retrieves information about UniFi Controller extensions and add-ons. This includes installed plugins, modules, and additional functionality.

    Parameters

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of extension objects

    Throws

    When extension listing fails

    Example

    // Get all installed extensions
    const extensions = await statisticsAPI.list_extension();

    // Check for specific extensions
    const hasProtect = extensions.some(ext => ext.name.includes('Protect'));
    const hasAccess = extensions.some(ext => ext.name.includes('Access'));

    // List extension details
    extensions.forEach(ext => {
    console.log(`${ext.name} v${ext.version} - ${ext.status}`);
    });

    See

    PHP: list_extension() -> return $this->fetch_results('/api/s/' . $this->site . '/list/extension');

  • List fingerprint devices

    Retrieves device fingerprinting information showing detected device types, operating systems, and other identifying characteristics based on network behavior.

    Parameters

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of fingerprint device objects

    Throws

    When fingerprint device listing fails

    Example

    // Get all device fingerprints
    const fingerprints = await statisticsAPI.list_fingerprint_devices();

    // Analyze device types
    const deviceTypes = fingerprints.reduce((acc, device) => {
    acc[device.dev_cat] = (acc[device.dev_cat] || 0) + 1;
    return acc;
    }, {});

    // Find mobile devices
    const mobileDevices = fingerprints.filter(device =>
    device.dev_cat === 'Mobile' || device.os_name.includes('iOS') || device.os_name.includes('Android')
    );

    // Check for unknown devices
    const unknownDevices = fingerprints.filter(device =>
    device.dev_cat === 'Unknown' || !device.os_name
    );

    See

    • list_extension for controller extensions
    • list_devices for managed device information

    PHP: list_fingerprint_devices() -> return $this->fetch_results('/api/s/' . $this->site . '/stat/fingerprint');

Methods - Statistics & Monitoring

  • Get system information and statistics from the UniFi Controller

    Parameters

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal for request cancellation

    Returns Promise<SystemInfo[]>

    Promise resolving to an array of system information objects

    Description

    Retrieves comprehensive system information including controller version, uptime, memory usage, CPU information, and other system statistics.

    Example

    const sysInfo = await statisticsAPI.stat_sysinfo();
    console.log(`Controller version: ${sysInfo[0].version}`);
    console.log(`Uptime: ${sysInfo[0].uptime} seconds`);
    console.log(`Memory: ${sysInfo[0].mem_total} MB total`);

    See

    Since

    1.0.0

    Remarks

    PHP: stat_sysinfo() -> return $this->fetch_results('/api/s/' . $this->site . '/stat/sysinfo');

Methods - Other

  • Substitutes site placeholder in URL

    Parameters

    • url: string
    • site: string = 'default'

    Returns string

  • Makes a request with site substitution and UniFi OS fallback

    Type Parameters

    • T

    Parameters

    • config: any
    • site: string = 'default'

    Returns Promise<T>

  • List health metrics

    Retrieves health metrics for the UniFi site including subsystem status, connectivity information, and overall site health indicators.

    Parameters

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of health metric objects

    Throws

    When health metrics retrieval fails

    Example

    // Get site health metrics
    const health = await statisticsAPI.list_health();
    console.log(`Site health status: ${health[0].status}`);

    // Check specific subsystems
    const wanHealth = health.find(h => h.subsystem === 'wan');
    const lanHealth = health.find(h => h.subsystem === 'lan');
    const wlanHealth = health.find(h => h.subsystem === 'wlan');

    // Monitor connectivity
    const connectivity = health.filter(h => h.subsystem === 'connectivity');

    See

    PHP: list_health() -> return $this->fetch_results('/api/s/' . $this->site . '/stat/health');

  • Fetch full status information

    Retrieves comprehensive status information from the UniFi Controller. This includes detailed system status, configuration, and operational data.

    Parameters

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to full status object

    Throws

    When full status retrieval fails

    Example

    // Get comprehensive status
    const status = await statisticsAPI.stat_full_status();
    console.log('Full system status:', status);

    // Check specific status components
    if (status.meta && status.meta.rc === 'ok') {
    console.log('System is operating normally');
    }

    See

    PHP: stat_full_status() -> $this->fetch_results_boolean('/status', null, $this->is_unifi_os); return json_decode($this->get_last_results_raw());

  • Check for controller updates

    Checks for available UniFi Controller software updates. Returns information about the latest available controller version.

    Parameters

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to controller update information

    Throws

    When update check fails

    Example

    // Check for controller updates
    const updateInfo = await statisticsAPI.check_controller_update();
    if (updateInfo.latest_version !== updateInfo.current_version) {
    console.log(`Update available: ${updateInfo.latest_version}`);
    }

    See

    PHP: check_controller_update() -> return $this->fetch_results('/api/s/' . $this->site . '/stat/fwupdate/latest-version');

  • Check for firmware updates

    Initiates a check for available firmware updates for all UniFi devices in the site. This triggers the controller to query for new firmware versions.

    Parameters

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<boolean>

    Promise resolving to true if firmware update check was initiated successfully

    Throws

    When firmware update check fails

    Example

    // Check for firmware updates
    await statisticsAPI.check_firmware_update();

    // Then list devices to see available updates
    const devices = await deviceAPI.list_devices();
    const devicesWithUpdates = devices.filter(device => device.upgradable);

    See

    PHP: check_firmware_update() -> return $this->fetch_results_boolean('/api/s/' . $this->site . '/cmd/devmgr', $payload);

  • List events

    Retrieves system events from the UniFi Controller with optional time filtering. Events include device connections, disconnections, configuration changes, and system alerts.

    Parameters

    • historyhours: number = 720

      Number of hours of history to retrieve (default: 720 = 30 days)

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • limit: number = 3000

      Maximum number of events to return (default: 3000)

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of event objects

    Throws

    When events retrieval fails

    Example

    // Get last 24 hours of events
    const events = await statisticsAPI.list_events(24);

    // Get events for specific time range
    const start = Date.now() - (7 * 24 * 60 * 60 * 1000); // 7 days ago
    const end = Date.now();
    const weekEvents = await statisticsAPI.list_events(undefined, start, end);

    // Get recent events with limit
    const recentEvents = await statisticsAPI.list_events(1, undefined, undefined, 100);

    // Filter events by type
    const allEvents = await statisticsAPI.list_events(24);
    const deviceEvents = allEvents.filter(event => event.key === 'EVT_AP_Connected');
    const userEvents = allEvents.filter(event => event.key === 'EVT_LU_Connected');

    See

    PHP: list_events($historyhours = 720, $start = null, $end = null, $limit = 3000) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/event', $payload);

  • List alarms

    Retrieves system alarms from the UniFi Controller. Alarms represent significant events that require attention.

    Parameters

    • payload: any = {}

      Optional filter payload for alarm retrieval

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of alarm objects

    Throws

    When alarms retrieval fails

    Example

    // Get all alarms
    const alarms = await statisticsAPI.list_alarms();
    console.log(`Found ${alarms.length} alarms`);

    // Get alarms with specific filter
    const criticalAlarms = await statisticsAPI.list_alarms({
    archived: false,
    severity: 'critical'
    });

    // Filter alarms by type
    const allAlarms = await statisticsAPI.list_alarms();
    const deviceAlarms = allAlarms.filter(alarm => alarm.key.includes('device'));
    const networkAlarms = allAlarms.filter(alarm => alarm.key.includes('network'));

    See

    PHP: list_alarms($payload = []) -> return $this->fetch_results('/api/s/' . $this->site . '/list/alarm', $payload);

  • Count alarms

    Retrieves the count of alarms, optionally filtered by archived status.

    Parameters

    • Optional archived: boolean

      Optional filter for archived alarms (undefined = all, false = active only)

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to alarm count information

    Throws

    When alarm count retrieval fails

    Example

    // Get total alarm count
    const totalCount = await statisticsAPI.count_alarms();

    // Get active alarms count only
    const activeCount = await statisticsAPI.count_alarms(false);

    console.log(`Active alarms: ${activeCount.count}`);

    See

    list_alarms to get detailed alarm information

    PHP: count_alarms($archived = null) -> return $this->fetch_results('/api/s/' . $this->site . '/cnt/alarm' . $path_suffix);

  • Fetch 5-minute site statistics

    Retrieves 5-minute interval statistics for the entire site. Provides detailed metrics about network usage, performance, and activity.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of 5-minute site statistics

    Throws

    When statistics retrieval fails

    Example

    // Get last 12 hours of 5-minute stats
    const stats = await statisticsAPI.stat_5minutes_site();

    // Get stats for specific time range
    const start = Date.now() - (24 * 60 * 60 * 1000); // 24 hours ago
    const end = Date.now();
    const stats = await statisticsAPI.stat_5minutes_site(start, end);

    // Get specific attributes only
    const stats = await statisticsAPI.stat_5minutes_site(
    undefined,
    undefined,
    ['bytes', 'num_sta', 'time']
    );

    See

    PHP: stat_5minutes_site($start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/5minutes.site', $payload);

  • Fetch 5-minute access point statistics

    Retrieves 5-minute interval statistics for access points. Can get stats for all APs or filter by specific MAC address.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional mac: string

      Optional AP MAC address to filter results

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of 5-minute AP statistics

    Throws

    When statistics retrieval fails

    Example

    // Get 5-minute stats for all APs
    const allApStats = await statisticsAPI.stat_5minutes_aps();

    // Get stats for specific AP
    const apStats = await statisticsAPI.stat_5minutes_aps(
    undefined, undefined, 'aa:bb:cc:dd:ee:ff'
    );

    // Get specific metrics for time range
    const start = Date.now() - (6 * 60 * 60 * 1000); // 6 hours ago
    const stats = await statisticsAPI.stat_5minutes_aps(
    start, Date.now(), undefined, ['bytes', 'num_sta']
    );

    See

    PHP: stat_5minutes_aps($start = null, $end = null, $mac = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/5minutes.ap', $payload);

  • Fetch 5-minute gateway statistics

    Retrieves 5-minute interval statistics for the gateway/router. Provides metrics about WAN/LAN traffic, routing, and gateway performance.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of 5-minute gateway statistics

    Throws

    When statistics retrieval fails

    Example

    // Get recent gateway stats
    const gwStats = await statisticsAPI.stat_5minutes_gateway();

    // Get gateway stats for specific time range
    const start = Date.now() - (12 * 60 * 60 * 1000); // 12 hours ago
    const stats = await statisticsAPI.stat_5minutes_gateway(start, Date.now());

    // Get specific gateway metrics
    const stats = await statisticsAPI.stat_5minutes_gateway(
    undefined, undefined, ['wan-tx_bytes', 'wan-rx_bytes', 'lan-tx_bytes']
    );

    See

    PHP: stat_5minutes_gateway($start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/5minutes.gw', $payload);

  • Fetch 5-minute user statistics

    Retrieves 5-minute interval statistics for users/clients. Can get stats for all users or filter by specific MAC address.

    Parameters

    • Optional mac: string

      Optional client MAC address to filter results

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of 5-minute user statistics

    Throws

    When statistics retrieval fails

    Example

    // Get 5-minute stats for all users
    const allUserStats = await statisticsAPI.stat_5minutes_user();

    // Get stats for specific user
    const userStats = await statisticsAPI.stat_5minutes_user('aa:bb:cc:dd:ee:ff');

    // Get user stats for time range with specific metrics
    const start = Date.now() - (4 * 60 * 60 * 1000); // 4 hours ago
    const stats = await statisticsAPI.stat_5minutes_user(
    'aa:bb:cc:dd:ee:ff', start, Date.now(), ['tx_bytes', 'rx_bytes']
    );

    See

    PHP: stat_5minutes_user($mac = null, $start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/5minutes.user', $payload);

  • Fetch hourly stats for a single access point or all access points

    Retrieves hourly statistics for access points with optional filtering by MAC address.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional mac: string

      Optional AP MAC address to filter results

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of hourly AP statistics

    Throws

    When statistics retrieval fails

    Example

    // Get hourly stats for all APs
    const allApStats = await statisticsAPI.stat_hourly_aps();

    // Get stats for specific AP over last week
    const start = Date.now() - (7 * 24 * 60 * 60 * 1000);
    const apStats = await statisticsAPI.stat_hourly_aps(
    start, Date.now(), 'aa:bb:cc:dd:ee:ff'
    );

    See

    PHP: stat_hourly_aps($start = null, $end = null, $mac = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/hourly.ap', $payload);

  • Fetch hourly gateway stats

    Retrieves hourly statistics for the gateway/router.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of hourly gateway statistics

    Throws

    When statistics retrieval fails

    Example

    // Get hourly gateway stats
    const gwStats = await statisticsAPI.stat_hourly_gateway();

    // Get gateway stats for specific time range
    const start = Date.now() - (48 * 60 * 60 * 1000); // 48 hours ago
    const stats = await statisticsAPI.stat_hourly_gateway(start, Date.now());

    See

    PHP: stat_hourly_gateway($start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/hourly.gw', $payload);

  • Fetch hourly site stats

    Retrieves hourly statistics for the entire site.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of hourly site statistics

    Throws

    When statistics retrieval fails

    Example

    // Get hourly site stats
    const siteStats = await statisticsAPI.stat_hourly_site();

    // Get site stats for last 3 days
    const start = Date.now() - (3 * 24 * 60 * 60 * 1000);
    const stats = await statisticsAPI.stat_hourly_site(start, Date.now());

    See

    PHP: stat_hourly_site($start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/hourly.site', $payload);

  • Fetch hourly user stats

    Retrieves hourly statistics for users/clients.

    Parameters

    • Optional mac: string

      Optional client MAC address to filter results

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of hourly user statistics

    Throws

    When statistics retrieval fails

    Example

    // Get hourly stats for all users
    const allUserStats = await statisticsAPI.stat_hourly_user();

    // Get stats for specific user over last 2 days
    const start = Date.now() - (2 * 24 * 60 * 60 * 1000);
    const userStats = await statisticsAPI.stat_hourly_user(
    'aa:bb:cc:dd:ee:ff', start, Date.now()
    );

    See

    PHP: stat_hourly_user($mac = null, $start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/hourly.user', $payload);

  • Fetch daily stats for a single access point or all access points

    Retrieves daily statistics for access points with optional filtering by MAC address.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional mac: string

      Optional AP MAC address to filter results

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of daily AP statistics

    Throws

    When statistics retrieval fails

    Example

    // Get daily stats for all APs
    const allApStats = await statisticsAPI.stat_daily_aps();

    // Get stats for specific AP over last month
    const start = Date.now() - (30 * 24 * 60 * 60 * 1000);
    const apStats = await statisticsAPI.stat_daily_aps(
    start, Date.now(), 'aa:bb:cc:dd:ee:ff'
    );

    See

    PHP: stat_daily_aps($start = null, $end = null, $mac = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/daily.ap', $payload);

  • Fetch daily gateway stats

    Retrieves daily statistics for the gateway/router.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of daily gateway statistics

    Throws

    When statistics retrieval fails

    Example

    // Get daily gateway stats
    const gwStats = await statisticsAPI.stat_daily_gateway();

    // Get gateway stats for last 2 weeks
    const start = Date.now() - (14 * 24 * 60 * 60 * 1000);
    const stats = await statisticsAPI.stat_daily_gateway(start, Date.now());

    See

    PHP: stat_daily_gateway($start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/daily.gw', $payload);

  • Fetch daily site stats

    Retrieves daily statistics for the entire site.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of daily site statistics

    Throws

    When statistics retrieval fails

    Example

    // Get daily site stats
    const siteStats = await statisticsAPI.stat_daily_site();

    // Get site stats for last month
    const start = Date.now() - (30 * 24 * 60 * 60 * 1000);
    const stats = await statisticsAPI.stat_daily_site(start, Date.now());

    See

    PHP: stat_daily_site($start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/daily.site', $payload);

  • Fetch daily stats for a single user/client device or all user/client devices

    Retrieves daily statistics for users/clients with optional filtering by MAC address.

    Parameters

    • Optional mac: string

      Optional client MAC address to filter results

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of daily user statistics

    Throws

    When statistics retrieval fails

    Example

    // Get daily stats for all users
    const allUserStats = await statisticsAPI.stat_daily_user();

    // Get stats for specific user over last month
    const start = Date.now() - (30 * 24 * 60 * 60 * 1000);
    const userStats = await statisticsAPI.stat_daily_user(
    'aa:bb:cc:dd:ee:ff', start, Date.now()
    );

    See

    PHP: stat_daily_user($mac = null, $start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/daily.user', $payload);

  • Fetch monthly stats for a single access point or all access points

    Retrieves monthly statistics for access points with optional filtering by MAC address.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional mac: string

      Optional AP MAC address to filter results

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of monthly AP statistics

    Throws

    When statistics retrieval fails

    Example

    // Get monthly stats for all APs
    const allApStats = await statisticsAPI.stat_monthly_aps();

    // Get stats for specific AP over last year
    const start = Date.now() - (365 * 24 * 60 * 60 * 1000);
    const apStats = await statisticsAPI.stat_monthly_aps(
    start, Date.now(), 'aa:bb:cc:dd:ee:ff'
    );

    See

    PHP: stat_monthly_aps($start = null, $end = null, $mac = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/monthly.ap', $payload);

  • Fetch monthly gateway stats

    Retrieves monthly statistics for the gateway/router.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of monthly gateway statistics

    Throws

    When statistics retrieval fails

    Example

    // Get monthly gateway stats
    const gwStats = await statisticsAPI.stat_monthly_gateway();

    // Get gateway stats for last 6 months
    const start = Date.now() - (6 * 30 * 24 * 60 * 60 * 1000);
    const stats = await statisticsAPI.stat_monthly_gateway(start, Date.now());

    See

    PHP: stat_monthly_gateway($start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/monthly.gw', $payload);

  • Fetch monthly site stats

    Retrieves monthly statistics for the entire site.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of monthly site statistics

    Throws

    When statistics retrieval fails

    Example

    // Get monthly site stats
    const siteStats = await statisticsAPI.stat_monthly_site();

    // Get site stats for last year
    const start = Date.now() - (365 * 24 * 60 * 60 * 1000);
    const stats = await statisticsAPI.stat_monthly_site(start, Date.now());

    See

    PHP: stat_monthly_site($start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/monthly.site', $payload);

  • Fetch monthly user stats

    Retrieves monthly statistics for users/clients with optional filtering by MAC address.

    Parameters

    • Optional mac: string

      Optional client MAC address to filter results

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional attribs: string[]

      Optional array of specific attributes to retrieve

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of monthly user statistics

    Throws

    When statistics retrieval fails

    Example

    // Get monthly stats for all users
    const allUserStats = await statisticsAPI.stat_monthly_user();

    // Get stats for specific user over last year
    const start = Date.now() - (365 * 24 * 60 * 60 * 1000);
    const userStats = await statisticsAPI.stat_monthly_user(
    'aa:bb:cc:dd:ee:ff', start, Date.now()
    );

    See

    PHP: stat_monthly_user($mac = null, $start = null, $end = null, $attribs = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/monthly.user', $payload);

  • Fetch all users statistics

    Retrieves comprehensive statistics for all users/clients over a specified time period.

    Parameters

    • historyhours: number = 8760

      Number of hours of history to retrieve (default: 8760 = 1 year)

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of all user statistics

    Throws

    When statistics retrieval fails

    Example

    // Get all user stats for last month
    const monthlyStats = await statisticsAPI.stat_allusers(720); // 30 days

    // Get all user stats for last week
    const weeklyStats = await statisticsAPI.stat_allusers(168); // 7 days

    // Get comprehensive yearly stats
    const yearlyStats = await statisticsAPI.stat_allusers(); // Default 1 year

    See

    PHP: stat_allusers($historyhours = 8760) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/alluser', $payload);

  • Fetch details for a single client device

    Retrieves detailed statistics and information for a specific client device.

    Parameters

    • mac: string

      Required MAC address of the client device

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to client device statistics

    Throws

    When MAC address is invalid

    Throws

    When client statistics retrieval fails

    Example

    // Get detailed stats for specific client
    const clientStats = await statisticsAPI.stat_client('aa:bb:cc:dd:ee:ff');
    console.log(`Client: ${clientStats.hostname || clientStats.mac}`);
    console.log(`Total bytes: ${clientStats.tx_bytes + clientStats.rx_bytes}`);

    See

    PHP: stat_client($mac) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/user/' . strtolower(trim($mac)));

  • Fetch authorization events

    Retrieves authentication and authorization events for the site.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of authorization events

    Throws

    When authorization events retrieval fails

    Example

    // Get recent authorization events
    const authEvents = await statisticsAPI.stat_auths();

    // Get auth events for specific time range
    const start = Date.now() - (24 * 60 * 60 * 1000); // 24 hours ago
    const dayAuthEvents = await statisticsAPI.stat_auths(start, Date.now());

    See

    PHP: stat_auths($start = null, $end = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/authorization', $payload);

  • Fetch sessions

    Retrieves user session information with optional filtering.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional mac: string

      Optional client MAC address to filter sessions

    • type: string = 'all'

      Session type filter: 'all', 'guest', or 'user' (default: 'all')

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of session objects

    Throws

    When sessions retrieval fails

    Example

    // Get all recent sessions
    const allSessions = await statisticsAPI.stat_sessions();

    // Get guest sessions only
    const guestSessions = await statisticsAPI.stat_sessions(
    undefined, undefined, undefined, 'guest'
    );

    // Get sessions for specific client
    const clientSessions = await statisticsAPI.stat_sessions(
    undefined, undefined, 'aa:bb:cc:dd:ee:ff'
    );

    See

    PHP: stat_sessions($start = null, $end = null, $mac = null, $type = 'all') -> return $this->fetch_results('/api/s/' . $this->site . '/stat/session', $payload);

  • Fetch IPS events

    Retrieves Intrusion Prevention System (IPS) security events.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • Optional limit: number

      Optional maximum number of events to return

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of IPS event objects

    Throws

    When IPS events retrieval fails

    Example

    // Get recent IPS events
    const ipsEvents = await statisticsAPI.stat_ips_events();

    // Get IPS events for last 24 hours with limit
    const start = Date.now() - (24 * 60 * 60 * 1000);
    const recentEvents = await statisticsAPI.stat_ips_events(start, Date.now(), 100);

    // Analyze security threats
    const events = await statisticsAPI.stat_ips_events();
    const threats = events.filter(event => event.severity === 'high');

    See

    PHP: stat_ips_events($start = null, $end = null, $limit = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/ips/event', $payload);

  • Fetch speed test results

    Retrieves network speed test results performed by the UniFi system.

    Parameters

    • Optional start: number

      Optional start timestamp (Unix timestamp in milliseconds)

    • Optional end: number

      Optional end timestamp (Unix timestamp in milliseconds)

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of speed test result objects

    Throws

    When speed test results retrieval fails

    Example

    // Get recent speed test results
    const speedTests = await statisticsAPI.stat_speedtest_results();

    // Get speed tests for last month
    const start = Date.now() - (30 * 24 * 60 * 60 * 1000);
    const monthlyTests = await statisticsAPI.stat_speedtest_results(start, Date.now());

    // Analyze network performance
    const tests = await statisticsAPI.stat_speedtest_results();
    const avgDownload = tests.reduce((sum, test) => sum + test.download, 0) / tests.length;
    const avgUpload = tests.reduce((sum, test) => sum + test.upload, 0) / tests.length;

    See

    PHP: stat_speedtest_results($start = null, $end = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/report/archive.speedtest', $payload);

  • Fetch payments

    Retrieves payment information for guest access or hotspot services.

    Parameters

    • Optional within: number

      Optional time period in hours to retrieve payments for

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of payment objects

    Throws

    When payments retrieval fails

    Example

    // Get all payments
    const allPayments = await statisticsAPI.stat_payment();

    // Get payments from last 24 hours
    const recentPayments = await statisticsAPI.stat_payment(24);

    // Analyze payment trends
    const payments = await statisticsAPI.stat_payment(720); // Last 30 days
    const totalRevenue = payments.reduce((sum, payment) => sum + payment.amount, 0);

    See

    • stat_voucher for voucher statistics
    • list_guests for guest access information

    PHP: stat_payment($within = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/payment' . $path_suffix);

  • Fetch voucher stats

    Retrieves statistics about guest access vouchers.

    Parameters

    • Optional create_time: number

      Optional creation time filter (Unix timestamp)

    • site: string = 'default'

      Site name (defaults to 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of voucher statistics

    Throws

    When voucher statistics retrieval fails

    Example

    // Get all voucher stats
    const voucherStats = await statisticsAPI.stat_voucher();

    // Get vouchers created after specific time
    const recentTime = Date.now() - (7 * 24 * 60 * 60 * 1000); // 7 days ago
    const recentVouchers = await statisticsAPI.stat_voucher(recentTime);

    // Analyze voucher usage
    const vouchers = await statisticsAPI.stat_voucher();
    const usedVouchers = vouchers.filter(v => v.used > 0);
    const unusedVouchers = vouchers.filter(v => v.used === 0);

    See

    • stat_payment for payment statistics
    • list_guests for guest access information

    PHP: stat_voucher($create_time = null) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/voucher', $payload);

Security Monitoring

  • List rogue APs

    Retrieves a list of rogue (unauthorized) access points detected within the specified time period. Helps identify potential security threats.

    Parameters

    • within: number = 24

      Time period in hours to search for rogue APs (default: 24)

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of rogue access point objects

    Throws

    When rogue AP listing fails

    Example

    // Get rogue APs from last 24 hours
    const rogueAPs = await statisticsAPI.list_rogueaps();

    // Get rogue APs from last week
    const weeklyRogues = await statisticsAPI.list_rogueaps(168); // 7 days

    // Analyze security threats
    const rogues = await statisticsAPI.list_rogueaps();
    const strongSignalRogues = rogues.filter(ap => ap.signal > -50);
    const suspiciousNames = rogues.filter(ap =>
    ap.essid && ap.essid.toLowerCase().includes('free')
    );

    // Check for known rogue APs
    const knownRogues = await statisticsAPI.list_known_rogueaps();
    const newRogues = rogues.filter(rogue =>
    !knownRogues.some(known => known.bssid === rogue.bssid)
    );

    See

    PHP: list_rogueaps($within = 24) -> return $this->fetch_results('/api/s/' . $this->site . '/stat/rogueap', $payload);

  • List known rogue APs

    Retrieves a list of known (whitelisted) rogue access points that have been marked as safe or authorized. These APs won't trigger security alerts.

    Parameters

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of known rogue access point objects

    Throws

    When known rogue AP listing fails

    Example

    // Get all known/whitelisted rogue APs
    const knownRogues = await statisticsAPI.list_known_rogueaps();

    // Check if specific AP is whitelisted
    const targetBSSID = 'aa:bb:cc:dd:ee:ff';
    const isWhitelisted = knownRogues.some(ap => ap.bssid === targetBSSID);

    // Review whitelisted APs
    console.log(`${knownRogues.length} APs are whitelisted`);
    knownRogues.forEach(ap => {
    console.log(`${ap.essid} (${ap.bssid}) - ${ap.note || 'No note'}`);
    });

    See

    PHP: list_known_rogueaps() -> return $this->fetch_results('/api/s/' . $this->site . '/rest/rogueknown');

System Commands

  • Execute command statistics

    Executes specific system commands for statistics management. Currently supports DPI (Deep Packet Inspection) reset operations.

    Parameters

    • command: string

      Required Command to execute (currently only 'reset-dpi' is supported)

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<boolean>

    Promise resolving to true if command execution was successful

    Throws

    When command is invalid or not supported

    Throws

    When command execution fails

    Example

    // Reset DPI statistics
    await statisticsAPI.cmd_stat('reset-dpi');

    // This will clear all DPI data and start fresh collection

    Warning

    This command will reset DPI statistics permanently

    See

    PHP: cmd_stat($command) -> return $this->fetch_results_boolean('/api/s/' . $this->site . '/cmd/stat', $payload);

System Logs

  • Get system log

    Retrieves system log entries from the UniFi Controller. Provides access to system events, errors, and operational messages.

    Parameters

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to array of system log entries

    Throws

    When system log retrieval fails

    Example

    // Get system logs
    const logs = await statisticsAPI.get_system_log();

    // Filter error messages
    const errors = logs.filter(log =>
    log.level === 'error' || log.msg.toLowerCase().includes('error')
    );

    // Find recent critical events
    const recentCritical = logs.filter(log =>
    log.level === 'critical' &&
    Date.now() - log.datetime < (24 * 60 * 60 * 1000) // Last 24 hours
    );

    // Monitor device events
    const deviceEvents = logs.filter(log =>
    log.msg.includes('device') || log.msg.includes('AP')
    );

    See

    PHP: get_system_log() -> return $this->fetch_results('/api/s/' . $this->site . '/stat/log');

System Status

  • Stat status

    Retrieves comprehensive status information for the UniFi site including device states, network health, and system performance metrics.

    Parameters

    • site: string = 'default'

      Site identifier (default: 'default')

    • Optional options: {
          signal?: AbortSignal;
      }

      Optional request configuration

      • Optional signal?: AbortSignal

        Optional AbortSignal to cancel the request

    Returns Promise<any>

    Promise resolving to system status information

    Throws

    When status retrieval fails

    Example

    // Get comprehensive system status
    const status = await statisticsAPI.stat_status();
    console.log(`Controller version: ${status.version}`);
    console.log(`Uptime: ${status.uptime} seconds`);

    // Check for issues
    if (status.num_disconnected > 0) {
    console.log(`${status.num_disconnected} devices are disconnected`);
    }

    // Monitor performance
    console.log(`Memory usage: ${status.mem_used}/${status.mem_total} MB`);
    console.log(`CPU load: ${status.loadavg_1}%`);

    See

    PHP: stat_status() -> return $this->fetch_results('/api/s/' . $this->site . '/stat/status');