Python SDK for the Hyperping uptime monitoring and incident management API
Project description
hyperping
Python SDK for the Hyperping uptime monitoring and incident management API.
Installation
Requires Python 3.11+.
pip install hyperping
# or
uv add hyperping
Quick Start
from hyperping import HyperpingClient, IncidentCreate, LocalizedText
with HyperpingClient(api_key="sk_...") as client:
# List all monitors
monitors = client.list_monitors()
for m in monitors:
print(f"{m.name}: {'down' if m.down else 'up'}")
# Open an incident
incident = client.create_incident(
IncidentCreate(
title=LocalizedText(en="Service degradation"),
text=LocalizedText(en="Investigating elevated error rates"),
statuspages=["sp_your_uuid"],
)
)
# Resolve it
client.resolve_incident(incident.uuid, "All systems operational")
Authentication
Pass your API key directly or via environment variable:
import os
from hyperping import HyperpingClient
# Constructor param
client = HyperpingClient(api_key="sk_...")
# From environment
client = HyperpingClient(api_key=os.environ["HYPERPING_API_KEY"])
Resources
Monitors
monitors = client.list_monitors()
monitor = client.get_monitor("mon_uuid")
created = client.create_monitor(MonitorCreate(name="API", url="https://api.example.com"))
client.pause_monitor("mon_uuid")
client.resume_monitor("mon_uuid")
client.delete_monitor("mon_uuid")
# Reports
reports = client.get_all_reports(period="30d")
report = client.get_monitor_report("mon_uuid", period="7d")
Incidents
incidents = client.list_incidents()
incident = client.get_incident("inci_uuid")
created = client.create_incident(IncidentCreate(...))
client.add_incident_update("inci_uuid", AddIncidentUpdateRequest(...))
client.resolve_incident("inci_uuid", "Fixed")
client.delete_incident("inci_uuid")
Maintenance Windows
windows = client.list_maintenance()
window = client.get_maintenance("mw_uuid")
created = client.create_maintenance(MaintenanceCreate(...))
client.update_maintenance("mw_uuid", MaintenanceUpdate(name="New name"))
client.delete_maintenance("mw_uuid")
# Helpers
active = client.get_active_maintenance()
in_maint = client.is_monitor_in_maintenance("mon_uuid")
Outages
outages = client.list_outages()
client.acknowledge_outage("out_uuid", message="On it")
client.resolve_outage("out_uuid", message="Fixed")
client.escalate_outage("out_uuid")
Status Pages
pages = client.list_status_pages(search="prod")
page = client.get_status_page("sp_uuid")
created = client.create_status_page(StatusPageCreate(name="Prod", subdomain="prod-status"))
client.update_status_page("sp_uuid", StatusPageUpdate(name="Production Status"))
client.delete_status_page("sp_uuid")
# Subscribers
subs = client.list_subscribers("sp_uuid")
sub = client.add_subscriber("sp_uuid", "user@example.com")
client.remove_subscriber("sp_uuid", sub.id)
Error Handling
from hyperping import (
HyperpingAPIError,
HyperpingAuthError,
HyperpingNotFoundError,
HyperpingRateLimitError,
HyperpingValidationError,
)
try:
monitor = client.get_monitor("mon_uuid")
except HyperpingNotFoundError:
print("Monitor not found")
except HyperpingRateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after}s")
except HyperpingAuthError:
print("Invalid API key")
except HyperpingAPIError as e:
print(f"API error [{e.status_code}]: {e.message}")
print(f"Request ID: {e.request_id}")
Retries and Circuit Breaker
The SDK retries automatically on transient errors (5xx, 429) with exponential backoff and jitter. A circuit breaker prevents cascading failures.
from hyperping import HyperpingClient
from hyperping.client import RetryConfig, CircuitBreakerConfig
client = HyperpingClient(
api_key="sk_...",
retry_config=RetryConfig(
max_retries=3,
initial_delay=1.0,
max_delay=30.0,
backoff_factor=2.0,
),
circuit_breaker_config=CircuitBreakerConfig(
failure_threshold=5,
recovery_timeout=60.0,
),
)
Type Safety
This package ships a py.typed marker (PEP 561) and is fully typed. Works out of the box with mypy and pyright.
Contributing
See CONTRIBUTING.md.
License
MIT — see LICENSE.
Maintained by
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hyperping-1.0.1.tar.gz.
File metadata
- Download URL: hyperping-1.0.1.tar.gz
- Upload date:
- Size: 45.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
612cd845371a4469c4e0f64c3a95bd57bbe5c3268abfc4547b9d525e41c56b82
|
|
| MD5 |
6131413f91c3e43c4096cc899b11725b
|
|
| BLAKE2b-256 |
5eb6f5ec76897418305fae85cafa34850f26629ad43dee8b2d93e582618c222f
|
Provenance
The following attestation bundles were made for hyperping-1.0.1.tar.gz:
Publisher:
publish.yml on develeap/hyperping-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hyperping-1.0.1.tar.gz -
Subject digest:
612cd845371a4469c4e0f64c3a95bd57bbe5c3268abfc4547b9d525e41c56b82 - Sigstore transparency entry: 1238794708
- Sigstore integration time:
-
Permalink:
develeap/hyperping-python@039b42fb401d0f0d3cee61ad4f4db9184c71b6db -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/develeap
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@039b42fb401d0f0d3cee61ad4f4db9184c71b6db -
Trigger Event:
push
-
Statement type:
File details
Details for the file hyperping-1.0.1-py3-none-any.whl.
File metadata
- Download URL: hyperping-1.0.1-py3-none-any.whl
- Upload date:
- Size: 38.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e518d02d0952c536995715e5fb2edf7a411ab69d5357a450ffa4a6b6b98cf0c9
|
|
| MD5 |
6acda2d99abddd0e320f8539d5a2a2b5
|
|
| BLAKE2b-256 |
05501d9282d91f7c0dfd4f9298041c3c9dd0b39c13ae9a16f953a0feec564a67
|
Provenance
The following attestation bundles were made for hyperping-1.0.1-py3-none-any.whl:
Publisher:
publish.yml on develeap/hyperping-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hyperping-1.0.1-py3-none-any.whl -
Subject digest:
e518d02d0952c536995715e5fb2edf7a411ab69d5357a450ffa4a6b6b98cf0c9 - Sigstore transparency entry: 1238794750
- Sigstore integration time:
-
Permalink:
develeap/hyperping-python@039b42fb401d0f0d3cee61ad4f4db9184c71b6db -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/develeap
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@039b42fb401d0f0d3cee61ad4f4db9184c71b6db -
Trigger Event:
push
-
Statement type: