Source code for pykada.classic_alarms
"""
Classic Alarms API client and functional wrappers for pykada.
The :class:`ClassicAlarmsClient` provides access to alarm device inventory
and alarm site information through Verkada's Classic Alarms API.
"""
from typeguard import typechecked
from typing import Dict, Any, List
from pykada.endpoints import ALARMS_DEVICES_ENDPOINT, ALARMS_SITES_ENDPOINT
from pykada.verkada_client import BaseClient
from pykada.verkada_requests import *
[docs]
class ClassicAlarmsClient(BaseClient):
"""
Client for interacting with Verkada's Classic Alarms API.
This client provides methods to retrieve alarm devices and site information.
"""
@typechecked
def __init__(self,
api_key: Optional[str] = None,
token_manager: Optional[VerkadaTokenManager] = None):
super().__init__(api_key, token_manager)
[docs]
@typechecked
def get_alarm_devices(self, site_id: str, device_ids: Optional[List[str]] = None) -> \
Dict[str, Any]:
"""
Retrieve alarm devices for a given site.
Gets information about all devices in an alarm site specified by site_id.
Optionally, a subset of devices can be returned by providing a list of device IDs.
:param site_id: The unique identifier for the site. (Required)
:param device_ids: Optional list of device unique identifiers to filter the results.
:return: JSON response containing device information.
:raises ValueError: If site_id is an empty string.
"""
if not site_id or not site_id.strip():
raise ValueError("site_id must be a non-empty string")
params: Dict[str, Any] = {"site_id": site_id}
if device_ids:
params["device_ids"] = ",".join(device_ids)
return self.request_manager.get(ALARMS_DEVICES_ENDPOINT, params=params)
# ---------------------------------------------------------------------------
# Module-level default client — shared across all functional wrappers.
# ---------------------------------------------------------------------------
_default_alarms_client: Optional[ClassicAlarmsClient] = None
def _get_default_client() -> ClassicAlarmsClient:
global _default_alarms_client
if _default_alarms_client is None:
_default_alarms_client = ClassicAlarmsClient()
return _default_alarms_client
[docs]
@typechecked
def get_alarm_devices(site_id: str, device_ids: Optional[List[str]] = None):
"""
Retrieve alarm devices for a given site.
Gets information about all devices in an alarm site specified by site_id.
Optionally, a subset of devices can be returned by providing a list of device IDs.
:param site_id: The unique identifier for the site. (Required)
:param device_ids: Optional list of device unique identifiers to filter the results.
:return: JSON response containing device information.
:raises ValueError: If site_id is an empty string.
---
**Note:** This is a functional wrapper for its equivalent method in the ClassicAlarmsClient. It creates a new client instance on every call, making it best for single, convenient operations. For making multiple API calls, instantiate and use an ClassicAlarmsClient object directly for better performance.
"""
return _get_default_client().get_alarm_devices(site_id, device_ids)