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.
Attraverso l’endpoint /v1/monitors di Olostep puoi creare monitor persistenti che funzionano su un programma fisso, rilevano le modifiche delle pagine e ti notificano tramite email o webhook.
- Crea un monitor da un
query, un url, o entrambi
- Esegui controlli ogni ora, giornalmente o settimanalmente
- Invia avvisi a
email o webhook_url
- Elenca, ispeziona, aggiorna e elimina monitor
- Leggi eventi snapshot del monitor da snapshot privati
Installazione
# pip install requests
import requests
Crea un monitor
Crea un monitor con POST /v1/monitors. L’endpoint convalida il tuo input, fornisce il monitor, crea il suo programma interno e restituisce un oggetto monitor attivo.
È richiesto almeno uno tra query o url. È richiesto esattamente un target di notifica: o email o webhook_url.
Esempio di richiesta
import requests
import json
API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"
payload = {
"query": "Traccia le modifiche nei prezzi dei prodotti e nelle informazioni di stock",
"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))
Risposta
La creazione del monitor avvenuta con successo restituisce HTTP 202 con un oggetto monitor:
{
"id": "monitor_n8q2x4m1ak",
"object": "monitor",
"status": "active",
"schedule_id": "schedule_r4h9n2j7",
"query": "Traccia le modifiche nei prezzi dei prodotti e nelle informazioni di stock",
"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
}
Canali di notifica
I monitor supportano un canale per monitor:
email: imposta un campo email
webhook: imposta un campo webhook_url
Non puoi impostare entrambi in una richiesta.
Esempio di Webhook
{
"query": "Osserva le modifiche nei termini legali",
"url": "https://example.com/terms",
"frequency": "weekly",
"webhook_url": "https://hooks.example.com/olostep-monitor"
}
Frequenze
Le frequenze supportate per i monitor sono:
L’API deriva automaticamente l’espressione cron del programma dalla frequenza selezionata.
Elenca i monitor
Recupera tutti i monitor per il tuo team con GET /v1/monitors.
Per impostazione predefinita, i monitor eliminati sono filtrati. Usa ?include_deleted=true per includerli.
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"Total monitors: {result['count']}")
print(json.dumps(result, indent=2))
Ottieni un monitor
Recupera un singolo monitor con 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))
Elenca gli eventi del monitor
Usa GET /v1/monitors/:monitor_id/events per elencare gli eventi snapshot per un monitor.
Questo endpoint supporta la paginazione:
limit (predefinito 25, massimo 100)
cursor (token di paginazione opaco da una risposta precedente)
Gli eventi sono restituiti dal più recente. Ogni elemento include un snapshot_url pre-firmato a breve termine in modo da poter recuperare in modo sicuro il contenuto dello snapshot privato.
Esempio
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))
Forma della risposta
{
"data": [
{
"id": "run_v7k2p9m3",
"run_id": "run_v7k2p9m3",
"created": 1777960800,
"changed": true,
"summary": "Il prezzo è cambiato da $49 a $45 e lo stock è passato a bassa disponibilità.",
"snapshot_url": "https://olostep-monitor-snapshot.s3.amazonaws.com/private/key?...signature..."
}
],
"has_more": false,
"next_cursor": null
}
Se cursor è malformato, l’endpoint restituisce:
{
"error": "Invalid cursor."
}
Aggiorna un monitor
Aggiorna un monitor con POST /v1/monitors/:monitor_id.
Aggiornamenti supportati:
metadata (unito con i metadati esistenti; passa valori di stringa vuoti per eliminare le chiavi)
frequency (hourly, daily, weekly)
Se aggiorni frequency, l’API ricrea internamente il programma del monitor.
Esempio di richiesta
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))
Elimina un monitor
Elimina un monitor con DELETE /v1/monitors/:monitor_id.
L’eliminazione è soft per la riga del monitor (status diventa deleted) e rimuove anche le risorse di scheduling/agent-ombra interne legate a quel monitor.
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))
Errori comuni di validazione
Gli endpoint del monitor restituiscono errori di validazione chiari per richieste non valide comuni:
- Mancano entrambi
query e url
- Mancanza di
frequency, o valore di frequenza non supportato
- Mancano entrambi
email e webhook_url
- Fornire entrambi
email e webhook_url
- Formato email non valido
- URL webhook non valido (deve essere
http o https)
- Formato
monitor_id non valido
Esempio di errore:
{
"error": "'frequency' deve essere uno di: hourly, daily, weekly."
}