Schedule management via REST API.
Demonstrates creating, listing, updating, enabling/disabling, manually triggering, and deleting schedules.
1"""Schedule management via REST API.23Demonstrates creating, listing, updating, enabling/disabling,4manually triggering, and deleting schedules.56Prerequisites:7 pip install kern-ai[scheduler] httpx89Usage:10 # First, start the server:11 python cookbook/05_agent_os/scheduler/basic_schedule.py1213 # Then run this script:14 python cookbook/05_agent_os/scheduler/schedule_management.py15"""1617import httpx1819# ---------------------------------------------------------------------------20# Create Example21# ---------------------------------------------------------------------------2223BASE_URL = "http://localhost:7777"242526def main():27 client = httpx.Client(base_url=BASE_URL, timeout=30)2829 # 1. Create a schedule30 print("--- Creating schedule ---")31 resp = client.post(32 "/schedules",33 json={34 "name": "hourly-greeting",35 "cron_expr": "0 * * * *",36 "endpoint": "/agents/greeter/runs",37 "payload": {"message": "Hourly check-in"},38 "timezone": "UTC",39 "max_retries": 2,40 "retry_delay_seconds": 30,41 },42 )43 print(f" Status: {resp.status_code}")44 schedule = resp.json()45 schedule_id = schedule["id"]46 print(f" ID: {schedule_id}")47 print(f" Next run at: {schedule['next_run_at']}")48 print()4950 # 2. List all schedules51 print("--- Listing schedules ---")52 resp = client.get("/schedules")53 schedules = resp.json()54 for s in schedules:55 print(f" {s['name']} (enabled={s['enabled']}, next_run={s['next_run_at']})")56 print()5758 # 3. Update the schedule59 print("--- Updating schedule ---")60 resp = client.patch(61 f"/schedules/{schedule_id}",62 json={"description": "Runs every hour on the hour", "max_retries": 3},63 )64 print(f" Updated description: {resp.json()['description']}")65 print()6667 # 4. Disable the schedule68 print("--- Disabling schedule ---")69 resp = client.post(f"/schedules/{schedule_id}/disable")70 print(f" Enabled: {resp.json()['enabled']}")71 print()7273 # 5. Re-enable the schedule74 print("--- Enabling schedule ---")75 resp = client.post(f"/schedules/{schedule_id}/enable")76 print(f" Enabled: {resp.json()['enabled']}")77 print(f" Next run at: {resp.json()['next_run_at']}")78 print()7980 # 6. Manually trigger81 print("--- Triggering schedule ---")82 resp = client.post(f"/schedules/{schedule_id}/trigger")83 print(f" Trigger status: {resp.status_code}")84 print(f" Run: {resp.json()}")85 print()8687 # 7. View run history88 print("--- Run history ---")89 resp = client.get(f"/schedules/{schedule_id}/runs")90 runs = resp.json()91 print(f" Total runs: {len(runs)}")92 for run in runs:93 print(94 f" attempt={run['attempt']} status={run['status']} triggered_at={run['triggered_at']}"95 )96 print()9798 # 8. Delete the schedule99 print("--- Deleting schedule ---")100 resp = client.delete(f"/schedules/{schedule_id}")101 print(f" Delete status: {resp.status_code}")102103 # Verify deletion104 resp = client.get(f"/schedules/{schedule_id}")105 print(f" Get after delete: {resp.status_code} (expected 404)")106107108# ---------------------------------------------------------------------------109# Run Example110# ---------------------------------------------------------------------------111112if __name__ == "__main__":113 main()Run the Example
1# Clone and setup repo2git clone https://github.com/kern-ai/kern.git3cd kern/cookbook/05_agent_os/scheduler45# Create and activate virtual environment6./scripts/demo_setup.sh7source .venvs/demo/bin/activate89python schedule_management.py