diff --git a/src/healthchecks_io/client/_abstract.py b/src/healthchecks_io/client/_abstract.py index 9797263..527223d 100644 --- a/src/healthchecks_io/client/_abstract.py +++ b/src/healthchecks_io/client/_abstract.py @@ -60,6 +60,123 @@ class AbstractClient(ABC): """Calls the API's /checks/ endpoint to get a list of checks.""" pass + @abstractmethod + def get_check(self, check_id: str) -> checks.Check: # pragma: no cover + """Get a single check by id. + + check_id can either be a check uuid if using a read/write api key + or a unique key if using a read only api key. + + Args: + check_id (str): check's uuid or unique id + + Returns: + checks.Check: the check + + Raises: + HCAPIAuthError: Raised when status_code == 401 or 403 + HCAPIError: Raised when status_code is 5xx + CheckNotFoundError: Raised when status_code is 404 + """ + pass + + @abstractmethod + def pause_check(self, check_id: str) -> checks.Check: # pragma: no cover + """Disables monitoring for a check without removing it. + + The check goes into a "paused" state. + You can resume monitoring of the check by pinging it. + + check_id must be a uuid, not a unique id + + Args: + check_id (str): check's uuid + + Returns: + checks.Check: the check just paused + + Raises: + HCAPIAuthError: Raised when status_code == 401 or 403 + HCAPIError: Raised when status_code is 5xx + CheckNotFoundError: Raised when status_code is 404 + + """ + pass + + @abstractmethod + def delete_check(self, check_id: str) -> checks.Check: # pragma: no cover + """Permanently deletes the check from the user's account. + + check_id must be a uuid, not a unique id + + Args: + check_id (str): check's uuid + + Returns: + checks.Check: the check just deleted + + Raises: + HCAPIAuthError: Raised when status_code == 401 or 403 + HCAPIError: Raised when status_code is 5xx + CheckNotFoundError: Raised when status_code is 404 + + """ + pass + + @abstractmethod + def get_check_pings( + self, check_id: str + ) -> List[checks.CheckPings]: # pragma: no cover + """Returns a list of pings this check has received. + + This endpoint returns pings in reverse order (most recent first), + and the total number of returned pings depends on the account's + billing plan: 100 for free accounts, 1000 for paid accounts. + + Args: + check_id (str): check's uuid + + Returns: + List[checks.CheckPings]: list of pings this check has received + + Raises: + HCAPIAuthError: Raised when status_code == 401 or 403 + HCAPIError: Raised when status_code is 5xx + CheckNotFoundError: Raised when status_code is 404 + + """ + pass + + @abstractmethod + def get_check_flips( + self, + check_id: str, + seconds: Optional[int] = None, + start: Optional[int] = None, + end: Optional[int] = None, + ) -> List[checks.CheckStatuses]: # pragma: no cover + """Returns a list of "flips" this check has experienced. + + A flip is a change of status (from "down" to "up," or from "up" to "down"). + + Raises: + HCAPIAuthError: Raised when status_code == 401 or 403 + HCAPIError: Raised when status_code is 5xx + CheckNotFoundError: Raised when status_code is 404 + BadAPIRequestError: Raised when status_code is 400 + + Args: + check_id (str): check uuid + seconds (Optional[int], optional): Returns the flips from the last value seconds. Defaults to None. + start (Optional[int], optional): Returns flips that are newer than the specified UNIX timestamp.. Defaults to None. + end (Optional[int], optional): Returns flips that are older than the specified UNIX timestamp.. Defaults to None. + + Returns: + List[checks.CheckStatuses]: List of status flips for this check + + """ + pass + def _get_api_request_url( self, path: str, params: Optional[Dict[str, str]] = None ) -> str: