Zum Hauptinhalt springen

Documentation Index

Fetch the complete documentation index at: https://docs.olostep.com/llms.txt

Use this file to discover all available pages before exploring further.

Über den Olostep /v1/monitors Endpunkt kannst du persistente Monitore erstellen, die nach einem festen Zeitplan laufen, Seitenänderungen erkennen und dich per E-Mail oder Webhook benachrichtigen.
  • Erstelle einen Monitor aus einer query, einer url oder beidem
  • Führe Überprüfungen stündlich, täglich oder wöchentlich durch
  • Sende Benachrichtigungen entweder an email oder webhook_url
  • Liste, inspiziere, aktualisiere und lösche Monitore
  • Lies Monitor-Snapshot-Ereignisse aus privaten Snapshots

Installation

# pip install requests

import requests

Erstelle einen Monitor

Erstelle einen Monitor mit POST /v1/monitors. Der Endpunkt validiert deine Eingaben, stellt den Monitor bereit, erstellt seinen internen Zeitplan und gibt ein aktives Monitorobjekt zurück. Mindestens eine von query oder url ist erforderlich. Genau ein Benachrichtigungsziel ist erforderlich: entweder email oder webhook_url.

Beispielanfrage

import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

payload = {
    "query": "Verfolge Änderungen in der Produktpreisgestaltung und Lagerinformationen",
    "url": "https://example.com/products/widget-pro",
    "frequency": "daily",
    "email": "alerts@example.com",
    "metadata": {
        "product_id": "widget-pro",
        "team": "growth"
    }
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(f"{API_URL}/monitors", headers=headers, json=payload)
print(response.status_code)
print(json.dumps(response.json(), indent=2))

Antwort

Erfolgreiche Monitorkreation gibt HTTP 202 mit einem Monitorobjekt zurück:
{
  "id": "monitor_n8q2x4m1ak",
  "object": "monitor",
  "status": "active",
  "schedule_id": "schedule_r4h9n2j7",
  "query": "Verfolge Änderungen in der Produktpreisgestaltung und Lagerinformationen",
  "url": "https://example.com/products/widget-pro",
  "frequency": "daily",
  "cron_expression": "0 0 * * ? *",
  "notification_channel": "email",
  "notification_target": "alerts@example.com",
  "metadata": {
    "product_id": "widget-pro",
    "team": "growth"
  },
  "created": 1745673871,
  "updated": 1745673871
}

Benachrichtigungskanäle

Monitore unterstützen einen Kanal pro Monitor:
  • email: setze ein email Feld
  • webhook: setze ein webhook_url Feld
Du kannst nicht beide in einer Anfrage setzen.

Webhook-Beispiel

{
  "query": "Beobachte Änderungen in den rechtlichen Bedingungen",
  "url": "https://example.com/terms",
  "frequency": "weekly",
  "webhook_url": "https://hooks.example.com/olostep-monitor"
}

Frequenzen

Unterstützte Monitorfrequenzen sind:
  • hourly
  • daily
  • weekly
Die API leitet den Zeitplan-Cron-Ausdruck automatisch aus der gewählten Frequenz ab.

Liste Monitore

Rufe alle Monitore für dein Team mit GET /v1/monitors ab. Standardmäßig werden gelöschte Monitore herausgefiltert. Verwende ?include_deleted=true, um sie einzuschließen.
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.get(f"{API_URL}/monitors", headers=headers)
result = response.json()
print(f"Gesamtanzahl Monitore: {result['count']}")
print(json.dumps(result, indent=2))

Hole einen Monitor

Rufe einen einzelnen Monitor mit GET /v1/monitors/:monitor_id ab.
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"
MONITOR_ID = "monitor_n8q2x4m1ak"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.get(f"{API_URL}/monitors/{MONITOR_ID}", headers=headers)
print(json.dumps(response.json(), indent=2))

Liste Monitor-Ereignisse

Verwende GET /v1/monitors/:monitor_id/events, um Snapshot-Ereignisse für einen Monitor aufzulisten. Dieser Endpunkt unterstützt Paginierung:
  • limit (Standard 25, max 100)
  • cursor (undurchsichtiger Paginierungstoken aus einer vorherigen Antwort)
Ereignisse werden neueste zuerst zurückgegeben. Jedes Element enthält eine kurzlebige, vorab signierte snapshot_url, damit du private Snapshot-Inhalte sicher abrufen kannst.

Beispiel

import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"
MONITOR_ID = "monitor_n8q2x4m1ak"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.get(
    f"{API_URL}/monitors/{MONITOR_ID}/events?limit=10",
    headers=headers
)
print(json.dumps(response.json(), indent=2))

Antwortformat

{
  "data": [
    {
      "id": "run_v7k2p9m3",
      "run_id": "run_v7k2p9m3",
      "created": 1777960800,
      "changed": true,
      "summary": "Preis änderte sich von $49 auf $45 und Lagerbestand ging auf niedrige Verfügbarkeit.",
      "snapshot_url": "https://olostep-monitor-snapshot.s3.amazonaws.com/private/key?...signature..."
    }
  ],
  "has_more": false,
  "next_cursor": null
}
Wenn cursor fehlerhaft ist, gibt der Endpunkt zurück:
{
  "error": "Ungültiger Cursor."
}

Aktualisiere einen Monitor

Aktualisiere einen Monitor mit POST /v1/monitors/:monitor_id. Unterstützte Aktualisierungen:
  • metadata (wird mit vorhandenen Metadaten zusammengeführt; leere Zeichenfolgenwerte übergeben, um Schlüssel zu löschen)
  • frequency (hourly, daily, weekly)
Wenn du frequency aktualisierst, erstellt die API den Monitor-Zeitplan intern neu.

Beispielanfrage

import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"
MONITOR_ID = "monitor_n8q2x4m1ak"

payload = {
    "frequency": "hourly",
    "metadata": {
        "owner": "ops-team",
        "deprecated_field": ""
    }
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(
    f"{API_URL}/monitors/{MONITOR_ID}",
    headers=headers,
    json=payload
)
print(json.dumps(response.json(), indent=2))

Lösche einen Monitor

Lösche einen Monitor mit DELETE /v1/monitors/:monitor_id. Das Löschen ist weich für die Monitorzeile (status wird deleted) und entfernt auch interne Planungs-/Schattenagenten-Ressourcen, die mit diesem Monitor verbunden sind.
import requests
import json

API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"
MONITOR_ID = "monitor_n8q2x4m1ak"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.delete(f"{API_URL}/monitors/{MONITOR_ID}", headers=headers)
print(json.dumps(response.json(), indent=2))

Häufige Validierungsfehler

Die Monitor-Endpunkte geben klare Validierungsfehler für häufige ungültige Anfragen zurück:
  • Fehlen von sowohl query als auch url
  • Fehlen von frequency oder nicht unterstützter Frequenzwert
  • Fehlen von sowohl email als auch webhook_url
  • Bereitstellung von sowohl email als auch webhook_url
  • Ungültiges E-Mail-Format
  • Ungültige Webhook-URL (muss http oder https sein)
  • Ungültiges monitor_id Format
Beispiel Fehler:
{
  "error": "'frequency' muss eine der folgenden sein: hourly, daily, weekly."
}