Saltar al contenido principal

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:
  • hourly
  • daily
  • weekly
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))

Forma de la respuesta

{
  "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."
}