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.
A través del endpoint de Olostep /v1/monitors puedes crear monitores persistentes que se ejecutan en un horario fijo, detectan cambios en páginas y te notifican por correo electrónico o webhook.
- Crea un monitor a partir de un
query, una url, o ambos
- Ejecuta verificaciones cada hora, diariamente o semanalmente
- Envía alertas a
email o webhook_url
- Lista, inspecciona, actualiza y elimina monitores
- Lee eventos de instantáneas de monitores desde instantáneas privadas
Instalación
# pip install requests
import requests
Crear un monitor
Crea un monitor con POST /v1/monitors. El endpoint valida tu entrada, aprovisiona el monitor, crea su horario interno y devuelve un objeto monitor activo.
Se requiere al menos uno de query o url. Se requiere exactamente un objetivo de notificación: ya sea email o webhook_url.
Ejemplo de solicitud
import requests
import json
API_KEY = "<YOUR_API_KEY>"
API_URL = "https://api.olostep.com/v1"
payload = {
"query": "Rastrear cambios en precios de productos e información de 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))
Respuesta
La creación exitosa de un monitor devuelve HTTP 202 con un objeto monitor:
{
"id": "monitor_n8q2x4m1ak",
"object": "monitor",
"status": "active",
"schedule_id": "schedule_r4h9n2j7",
"query": "Rastrear cambios en precios de productos e información de 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
}
Canales de notificación
Los monitores admiten un canal por monitor:
email: establece un campo email
webhook: establece un campo webhook_url
No puedes establecer ambos en una sola solicitud.
Ejemplo de Webhook
{
"query": "Vigilar cambios en términos legales",
"url": "https://example.com/terms",
"frequency": "weekly",
"webhook_url": "https://hooks.example.com/olostep-monitor"
}
Frecuencias
Las frecuencias de monitor admitidas son:
La API deriva automáticamente la expresión cron del horario a partir de la frecuencia seleccionada.
Listar monitores
Recupera todos los monitores para tu equipo con GET /v1/monitors.
Por defecto, los monitores eliminados se filtran. Usa ?include_deleted=true para incluirlos.
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 de monitores: {result['count']}")
print(json.dumps(result, indent=2))
Obtener un monitor
Recupera un monitor individual 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))
Listar eventos de monitor
Usa GET /v1/monitors/:monitor_id/events para listar eventos de instantáneas para un monitor.
Este endpoint admite paginación:
limit (por defecto 25, máx 100)
cursor (token de paginación opaco de una respuesta anterior)
Los eventos se devuelven del más reciente al más antiguo. Cada elemento incluye un snapshot_url pre-firmado de corta duración para que puedas obtener contenido de instantáneas privadas de manera segura.
Ejemplo
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))
{
"data": [
{
"id": "run_v7k2p9m3",
"run_id": "run_v7k2p9m3",
"created": 1777960800,
"changed": true,
"summary": "El precio cambió de $49 a $45 y el stock pasó a baja disponibilidad.",
"snapshot_url": "https://olostep-monitor-snapshot.s3.amazonaws.com/private/key?...signature..."
}
],
"has_more": false,
"next_cursor": null
}
Si cursor está mal formado, el endpoint devuelve:
{
"error": "Cursor inválido."
}
Actualizar un monitor
Actualiza un monitor con POST /v1/monitors/:monitor_id.
Actualizaciones admitidas:
metadata (se fusiona con los metadatos existentes; pasa valores de cadena vacíos para eliminar claves)
frequency (hourly, daily, weekly)
Si actualizas frequency, la API recrea el horario del monitor internamente.
Ejemplo de solicitud
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))
Eliminar un monitor
Elimina un monitor con DELETE /v1/monitors/:monitor_id.
La eliminación es suave para la fila del monitor (status se convierte en deleted) y también elimina los recursos internos de programación/agente sombra vinculados a ese 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))
Errores comunes de validación
Los endpoints de monitor devuelven errores de validación claros para solicitudes inválidas comunes:
- Faltan ambos
query y url
- Falta
frequency, o valor de frecuencia no admitido
- Faltan ambos
email y webhook_url
- Proporcionar ambos
email y webhook_url
- Formato de correo electrónico inválido
- URL de webhook inválida (debe ser
http o https)
- Formato de
monitor_id inválido
Ejemplo de error:
{
"error": "'frequency' debe ser uno de: hourly, daily, weekly."
}