Library for communicating with the BetterStack Uptime API
Project description
Python Betterstack-Uptime
betterstack-uptime is a library written in python that can assist in dealing with the Betterstack Uptime API. This is done by converting API endpoints into python objects, and translating the attributes from the API into variables.
Current endpoints implemented
Monitoring
- Monitors
- Monitor SLA
- Monitor Groups
- Heartbeats
- Heartbeat Groups
- Incidents
Status Pages
- Status Pages
- Status Page Sections
- Status Page Resources
- Status Page Groups
On-call & Escalations
- On-Call Calendars
- On-Call Events
- Escalation Policies (v3 API)
If you need another endpoint, feel free to extend the BaseAPIObject class and implement it!
betterstack-uptime is free and open source software, you are free to use it, share it, modify it and share the modifications with the world.
Getting Started
Requirements
You will need the following software:
python >= 3.10
Python 3.10+ is required for type hint syntax support.
Installing
Run the following command to install the package
pip install betterstack-uptime
Usage
Just some quick boilerplate code to get you started
Get all instances
from betterstack.uptime import UptimeAPI
from betterstack.uptime.objects import Monitor
api = UptimeAPI("yourtokenhere")
monitors = Monitor.get_all_instances(api=api)
for monitor in monitors:
print(monitor.url)
Working with Status Pages
from betterstack.uptime import UptimeAPI
from betterstack.uptime.objects import StatusPage
api = UptimeAPI("yourtokenhere")
# Get all status pages
for status_page in StatusPage.get_all_instances(api):
print(f"{status_page.company_name}: {status_page.aggregate_state}")
# Lazy-loaded sections and resources
for section in status_page.sections:
print(f" Section: {section.name}")
for resource in status_page.resources:
print(f" Resource: {resource.public_name} - {resource.status}")
Working with On-Call Calendars
from betterstack.uptime import UptimeAPI
from betterstack.uptime.objects import OnCallCalendar
api = UptimeAPI("yourtokenhere")
# Get all on-call calendars
for calendar in OnCallCalendar.get_all_instances(api):
print(f"{calendar.team_name}: {calendar.name}")
# Get current on-call users
for user in calendar.on_call_users:
print(f" On-call: {user.get('meta', {}).get('email')}")
# Create a rotation
calendar.create_rotation(
users=["alice@example.com", "bob@example.com"],
rotation_length=1,
rotation_period="week",
start_rotations_at="2025-01-01T00:00:00Z",
end_rotations_at="2025-12-31T23:59:59Z",
)
Working with Escalation Policies
from betterstack.uptime import UptimeAPI
from betterstack.uptime.objects import EscalationPolicy, PolicyStep
api = UptimeAPI("yourtokenhere")
# Get all escalation policies (uses v3 API)
for policy in EscalationPolicy.get_all_instances(api):
print(f"{policy.name}: {len(policy.steps)} steps")
# Create a new policy with helper class
steps = [
PolicyStep(
step_type="escalation",
wait_before=0,
urgency_id=123456,
step_members=[{"type": "current_on_call"}],
).to_dict(),
PolicyStep(
step_type="escalation",
wait_before=600, # 10 minutes
urgency_id=123456,
step_members=[{"type": "entire_team"}],
).to_dict(),
]
Documentation
Full documentation is available at https://iwink.github.io/python-betterstack-uptime/
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to me.
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
Authors
- Wouter Mellema - Initial work - wmellema
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the LICENSE.md file for details
Project details
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 betterstack_uptime-2.0.1.tar.gz.
File metadata
- Download URL: betterstack_uptime-2.0.1.tar.gz
- Upload date:
- Size: 47.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fa53a8cb114296e934b8cbe3b87dedabe32679b5b01080b10cf23dafcc416cb
|
|
| MD5 |
9ac35301451d5a49900ae7456dc86198
|
|
| BLAKE2b-256 |
d3df1b420413a51e893948fc5d2dffb557d906917952b86c4702848a712143fb
|
Provenance
The following attestation bundles were made for betterstack_uptime-2.0.1.tar.gz:
Publisher:
publish-package.yml on iwink/python-betterstack-uptime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
betterstack_uptime-2.0.1.tar.gz -
Subject digest:
4fa53a8cb114296e934b8cbe3b87dedabe32679b5b01080b10cf23dafcc416cb - Sigstore transparency entry: 1082310730
- Sigstore integration time:
-
Permalink:
iwink/python-betterstack-uptime@012be076233931783f86645776f3d3a8b15d2ff4 -
Branch / Tag:
refs/tags/2.0.1 - Owner: https://github.com/iwink
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@012be076233931783f86645776f3d3a8b15d2ff4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file betterstack_uptime-2.0.1-py3-none-any.whl.
File metadata
- Download URL: betterstack_uptime-2.0.1-py3-none-any.whl
- Upload date:
- Size: 31.1 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 |
db385bb1cca8dbeafd84a6e80a795c45d1541565769339e64be385cdfbaaa28f
|
|
| MD5 |
0a0bad2d30250f88e23aa116c8968dbc
|
|
| BLAKE2b-256 |
64fb4a76ff6a9b76c25c5b0f964801a50e4977c9ef52bac69cca2b090915204b
|
Provenance
The following attestation bundles were made for betterstack_uptime-2.0.1-py3-none-any.whl:
Publisher:
publish-package.yml on iwink/python-betterstack-uptime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
betterstack_uptime-2.0.1-py3-none-any.whl -
Subject digest:
db385bb1cca8dbeafd84a6e80a795c45d1541565769339e64be385cdfbaaa28f - Sigstore transparency entry: 1082310756
- Sigstore integration time:
-
Permalink:
iwink/python-betterstack-uptime@012be076233931783f86645776f3d3a8b15d2ff4 -
Branch / Tag:
refs/tags/2.0.1 - Owner: https://github.com/iwink
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@012be076233931783f86645776f3d3a8b15d2ff4 -
Trigger Event:
release
-
Statement type: