"""Create a fully-configured HTTP monitor with regions and a status-code assertion. Run with: OPENSTATUS_API_KEY=... uv run python examples/create_monitor.py """ from __future__ import annotations import sys from openstatus import OpenstatusClient from openstatus._gen.openstatus.monitor.v1.assertions_pb2 import ( NumberComparator, StatusCodeAssertion, ) from openstatus._gen.openstatus.monitor.v1.http_monitor_pb2 import ( HTTPMethod, HTTPMonitor, ) from openstatus._gen.openstatus.monitor.v1.monitor_pb2 import ( Periodicity, Region, ) from openstatus._gen.openstatus.monitor.v1.service_pb2 import CreateHTTPMonitorRequest def main() -> None: monitor = HTTPMonitor( name="OpenStatus Example", description="Created by the openstatus python SDK example.", url="https://www.openstatus.dev", method=HTTPMethod.HTTP_METHOD_GET, periodicity=Periodicity.PERIODICITY_10M, regions=[Region.REGION_FLY_AMS, Region.REGION_FLY_FRA, Region.REGION_FLY_IAD], active=True, status_code_assertions=[ StatusCodeAssertion( comparator=NumberComparator.NUMBER_COMPARATOR_EQUAL, target=200, ), ], ) with OpenstatusClient() as client: response = client.monitor.v1.MonitorService.create_http_monitor( CreateHTTPMonitorRequest(monitor=monitor) ) print(f"Created HTTP monitor id={response.monitor.id} name={response.monitor.name}") if __name__ == "__main__": try: main() except KeyboardInterrupt: sys.exit(130)