> ## Documentation Index
> Fetch the complete documentation index at: https://developers.insuranceboosters.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tipos de paso

> Acciones disponibles en una automatización: Navegador, JavaScript, HTTP y Esperar.

Cada automatización es una secuencia ordenada de **pasos**. El `actionKey` define qué hace el paso; los demás campos dependen del tipo de acción.

## Flujo de datos entre pasos

1. El trigger entrega un payload (`trigger.body`, y opcionalmente headers/query).
2. Antes de ejecutar un paso, la API resuelve plantillas `{{...}}` dentro de su `input` o, para `browser.use`, dentro de `task`.
3. El paso produce un `output`.
4. Con `capture` puedes copiar campos del resultado a `context` para reutilizarlos después.

Lee [Variables y contexto](/automatizaciones/variables-y-contexto) antes de armar pasos complejos: ahí hay ejemplos completos de **pasar variables entre pasos** con `steps.N.output` y con `capture`/`context`.

### Mini ejemplo: salida del paso 0 → entrada del paso 1

```json theme={null}
{
  "steps": [
    {
      "name": "Normalizar",
      "actionKey": "code.javascript",
      "input": { "referencia": "{{trigger.body.referencia}}" },
      "code": "output = { referencia: String(input.referencia || '').trim() };"
    },
    {
      "name": "Notificar",
      "actionKey": "http.request",
      "input": {
        "method": "POST",
        "url": "https://ejemplo.com/hooks/pago",
        "headers": { "Content-Type": "application/json" },
        "body": { "referencia": "{{steps.0.output.referencia}}" }
      }
    }
  ]
}
```

## Guías por tipo de paso

| Guía                                                                 | `actionKey`       | Cuándo usarla                                                                              |
| -------------------------------------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------ |
| [Agente IA: investigar la web](/automatizaciones/paso-navegador)     | `browser.use`     | Un agente autónomo investiga la web, interactúa con páginas dinámicas o descarga archivos. |
| [Agente IA: automatizar portal](/automatizaciones/paso-agente-guion) | `browser.script`  | Un agente sigue tu guion en un portal conocido: login, reportes, descargas (RPA).          |
| [Ejecutar JavaScript](/automatizaciones/paso-javascript)             | `code.javascript` | Transformar datos, validar, orquestar llamadas o consultar MySQL/SFTP.                     |
| [Solicitud HTTP](/automatizaciones/paso-http)                        | `http.request`    | Llamar un endpoint externo con método, URL, headers y body.                                |
| [Esperar](/automatizaciones/paso-esperar)                            | `system.delay`    | Pausar por una duración o hasta una fecha/hora.                                            |

## Anatomía de un paso

```json theme={null}
{
  "name": "Normalizar referencia",
  "actionKey": "code.javascript",
  "input": {
    "referencia": "{{trigger.body.referencia}}"
  },
  "code": "output = { referencia: String(input.referencia || '').trim() };",
  "capture": {
    "referencia": {
      "from": "response.body",
      "path": "referencia"
    }
  }
}
```

| Campo          | Descripción                                                                        |
| -------------- | ---------------------------------------------------------------------------------- |
| `name`         | Etiqueta legible (opcional, recomendada).                                          |
| `actionKey`    | Tipo de acción.                                                                    |
| `input`        | Datos del paso. Acepta plantillas `{{...}}`.                                       |
| `task`         | Solo en `browser.use`: instrucción para el navegador. Acepta plantillas `{{...}}`. |
| `resultSchema` | Solo en `browser.use`: JSON Schema del output esperado.                            |
| `wait`         | Solo en `browser.use`: retraso inicial, intervalo de consulta y timeout total.     |
| `code`         | En `code.javascript` y `browser.script`: el script a ejecutar.                     |
| `capture`      | Copia campos del resultado a `context`.                                            |
| `timeoutMs`    | Límite opcional de tiempo del paso.                                                |

## Siguiente paso

<Columns cols={2}>
  <Card title="Usar navegador" icon="globe" href="/automatizaciones/paso-navegador">
    Tareas web, schemas de resultado, wait y archivos.
  </Card>

  <Card title="Variables y contexto" icon="braces" href="/automatizaciones/variables-y-contexto">
    Cómo pasar datos del trigger y entre pasos.
  </Card>

  <Card title="Ejecutar JavaScript" icon="code" href="/automatizaciones/paso-javascript">
    Objetos disponibles, `input`/`output` y ejemplos.
  </Card>
</Columns>
