Naar hoofdinhoud gaan

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.

Via de Olostep /v1/monitors endpoint kun je persistente monitors creëren die op een vast schema draaien, paginawijzigingen detecteren en je via e-mail of webhook op de hoogte stellen.
  • Creëer een monitor vanuit een query, een url, of beide
  • Voer controles uit per uur, dagelijks, of wekelijks
  • Verstuur meldingen naar email of webhook_url
  • Lijst, inspecteer, update en verwijder monitors
  • Lees monitor snapshot-gebeurtenissen van privé snapshots

Installatie

# pip install requests

import requests

Creëer een monitor

Creëer een monitor met POST /v1/monitors. De endpoint valideert je invoer, voorziet de monitor, creëert het interne schema en retourneert een actief monitorobject. Minstens één van query of url is vereist. Exact één notificatiedoel is vereist: ofwel email of webhook_url.

Voorbeeld verzoek

import requests
import json

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

payload = {
    "query": "Volg wijzigingen in productprijzen en voorraadinformatie",
    "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))

Reactie

Succesvolle monitorcreatie retourneert HTTP 202 met een monitorobject:
{
  "id": "monitor_n8q2x4m1ak",
  "object": "monitor",
  "status": "active",
  "schedule_id": "schedule_r4h9n2j7",
  "query": "Volg wijzigingen in productprijzen en voorraadinformatie",
  "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
}

Notificatiekanalen

Monitors ondersteunen één kanaal per monitor:
  • email: stel een email veld in
  • webhook: stel een webhook_url veld in
Je kunt niet beide in één verzoek instellen.

Webhook voorbeeld

{
  "query": "Let op wijzigingen in juridische voorwaarden",
  "url": "https://example.com/terms",
  "frequency": "weekly",
  "webhook_url": "https://hooks.example.com/olostep-monitor"
}

Frequenties

Ondersteunde monitorfrequenties zijn:
  • hourly
  • daily
  • weekly
De API leidt automatisch de cron-expressie van het schema af uit de geselecteerde frequentie.

Lijst monitors

Haal alle monitors voor je team op met GET /v1/monitors. Standaard worden verwijderde monitors eruit gefilterd. Gebruik ?include_deleted=true om ze op te nemen.
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"Totaal aantal monitors: {result['count']}")
print(json.dumps(result, indent=2))

Haal een monitor op

Haal een enkele monitor op met GET /v1/monitors/:monitor_id.
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))

Lijst monitorgebeurtenissen

Gebruik GET /v1/monitors/:monitor_id/events om snapshot-gebeurtenissen voor een monitor op te sommen. Deze endpoint ondersteunt paginering:
  • limit (standaard 25, max 100)
  • cursor (ondoorzichtige pagineringstoken van een vorige reactie)
Gebeurtenissen worden van nieuw naar oud geretourneerd. Elk item bevat een kortlevende voorgetekende snapshot_url zodat je privé snapshot-inhoud veilig kunt ophalen.

Voorbeeld

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))

Reactievorm

{
  "data": [
    {
      "id": "run_v7k2p9m3",
      "run_id": "run_v7k2p9m3",
      "created": 1777960800,
      "changed": true,
      "summary": "Prijs gewijzigd van $49 naar $45 en voorraad verplaatst naar lage beschikbaarheid.",
      "snapshot_url": "https://olostep-monitor-snapshot.s3.amazonaws.com/private/key?...signature..."
    }
  ],
  "has_more": false,
  "next_cursor": null
}
Als cursor verkeerd is, retourneert de endpoint:
{
  "error": "Ongeldige cursor."
}

Update een monitor

Update een monitor met POST /v1/monitors/:monitor_id. Ondersteunde updates:
  • metadata (samengevoegd met bestaande metadata; geef lege tekenreekswaarden door om sleutels te verwijderen)
  • frequency (hourly, daily, weekly)
Als je frequency bijwerkt, hercreëert de API intern het monitorschema.

Voorbeeld verzoek

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))

Verwijder een monitor

Verwijder een monitor met DELETE /v1/monitors/:monitor_id. Verwijdering is zacht voor de monitorregel (status wordt deleted) en verwijdert ook interne plannings-/shadow-agent resources die aan die monitor zijn gekoppeld.
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))

Veelvoorkomende validatiefouten

De monitor endpoints geven duidelijke validatiefouten terug voor veelvoorkomende ongeldige verzoeken:
  • Ontbreken van zowel query als url
  • Ontbreken van frequency, of niet-ondersteunde frequentiewaarde
  • Ontbreken van zowel email als webhook_url
  • Zowel email als webhook_url opgeven
  • Ongeldig e-mailformaat
  • Ongeldige webhook URL (moet http of https zijn)
  • Ongeldig monitor_id formaat
Voorbeeldfout:
{
  "error": "'frequency' moet een van de volgende zijn: hourly, daily, weekly."
}