Skip to main content

Library for communicating with the BetterStack Uptime API

Project description

Python Betterstack-Uptime

coverage

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

betterstack_uptime-2.0.1.tar.gz (47.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

betterstack_uptime-2.0.1-py3-none-any.whl (31.1 kB view details)

Uploaded Python 3

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

Hashes for betterstack_uptime-2.0.1.tar.gz
Algorithm Hash digest
SHA256 4fa53a8cb114296e934b8cbe3b87dedabe32679b5b01080b10cf23dafcc416cb
MD5 9ac35301451d5a49900ae7456dc86198
BLAKE2b-256 d3df1b420413a51e893948fc5d2dffb557d906917952b86c4702848a712143fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for betterstack_uptime-2.0.1.tar.gz:

Publisher: publish-package.yml on iwink/python-betterstack-uptime

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file betterstack_uptime-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for betterstack_uptime-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 db385bb1cca8dbeafd84a6e80a795c45d1541565769339e64be385cdfbaaa28f
MD5 0a0bad2d30250f88e23aa116c8968dbc
BLAKE2b-256 64fb4a76ff6a9b76c25c5b0f964801a50e4977c9ef52bac69cca2b090915204b

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page