Cron Jobs

Automatiza peticiones HTTP con workflows programados, bloques anidados y notificaciones de error.

Crear un Cron Job

Tipos de bloques

Variables entre pasos

Usa {{variable}} en URLs y bodies. Extrae valores de respuestas con extract_variables en bloques HTTP.

Notificaciones

En errores se puede notificar por email, webhook y avisos in-app. Al alcanzar el límite de errores consecutivos, el job se pausa automáticamente.

Frecuencia y límites

Importar / Exportar

Exporta un workflow individual desde su menú de acciones o una carpeta completa (con subcarpetas) desde el menú de la carpeta. El import acepta workflows individuales, bundles de carpeta e incluso un array JSON con varios workflows. Los archivos usan schema_version: 1.

{
  "schema_version": 1,
  "name": "Sincronizar catálogo",
  "description": "Obtiene el token y sincroniza el catálogo",
  "schedule": "*/5 * * * *",
  "timezone": "UTC",
  "environment_id": null,
  "source": "wizard",
  "settings": {
    "interval_seconds": null,
    "error_limit": 5,
    "notify_email": true,
    "notify_webhook_url": null,
    "prevent_overlap": true,
    "max_runs": null
  },
  "blocks": [
    {
      "type": "http_request",
      "name": "Login",
      "is_enabled": true,
      "max_retries": 0,
      "config": {
        "mode": "inline",
        "method": "POST",
        "url": "https://api.ejemplo.com/auth/login",
        "headers": [{ "key": "Content-Type", "value": "application/json" }],
        "params": [],
        "body_type": "raw",
        "body": { "raw": "{\"email\":\"sistema@ejemplo.com\",\"password\":\"secreto\"}" },
        "auth_type": "none",
        "auth_data": [],
        "extract_variables": [
          { "key": "access_token", "source": "body", "path": "token" }
        ]
      },
      "children": [],
      "else_children": []
    },
    {
      "type": "condition",
      "name": "¿La respuesta fue 200?",
      "is_enabled": true,
      "max_retries": 0,
      "config": {
        "logic": "and",
        "rules": [{ "source": "status_code", "operator": "equals", "value": "200" }]
      },
      "children": [
        {
          "type": "http_request",
          "name": "Sync catálogo",
          "is_enabled": true,
          "max_retries": 2,
          "config": {
            "mode": "inline",
            "method": "GET",
            "url": "https://api.ejemplo.com/catalogos/sync",
            "headers": [{ "key": "Authorization", "value": "Bearer {{access_token}}" }],
            "params": [],
            "body_type": "none",
            "body": [],
            "auth_type": "none",
            "auth_data": []
          },
          "children": [],
          "else_children": []
        }
      ],
      "else_children": [
        {
          "type": "delay",
          "name": "Esperar 60s",
          "is_enabled": true,
          "max_retries": 0,
          "config": { "seconds": 60 },
          "children": [],
          "else_children": []
        }
      ]
    }
  ]
}

Los exploded blocks http_request pueden usar mode: "reference" con collection_id y request_id para ejecutar un request guardado en una colección. Si al importar ya existe una carpeta o workflow con el mismo nombre, GetMan agrega un sufijo "(2)", "(3)", etc.

Bundle de carpeta: al exportar una carpeta se genera un bundle ("type": "cron_folder_bundle") que recrea carpetas, subcarpetas y todos los workflows. Consulta los ejemplos completos de workflow y bundle en la guía de Importar / Exportar.

Deploy en servidor

# Crontab (cada 30 s para intervalos de 30 segundos)
* * * * * cd /var/www/getman && php artisan schedule:run >> /dev/null 2>&1
* * * * * sleep 30 && cd /var/www/getman && php artisan schedule:run >> /dev/null 2>&1

# Cola (solo si QUEUE_CONNECTION=database)
php artisan queue:work database --sleep=3 --tries=1

# .env recomendado en servidor
QUEUE_CONNECTION=sync