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

# SOAP

> Realiza peticiones SOAP a servicios externos y captura la respuesta en tu flujo

El nodo **SOAP** te permite conectar tu flujo con servicios web SOAP, un protocolo común en sistemas legacy y empresariales. Es un nodo de ejecución real: hace la petición y expone salidas de **éxito** y **error** para continuar el flujo, igual que el nodo API.

<Note>
  El nodo SOAP comparte la infraestructura de credenciales y ejecución con el nodo **[API](/guides/nodos/api)** — si ya conoces ese nodo, la configuración te resultará familiar.
</Note>

## Configuración básica

* **URL** — la dirección del servicio SOAP.
* **Operation Name** — el nombre de la operación SOAP que quieres invocar (texto libre; no se valida contra un WSDL).

<Warning>
  Tanto la URL como el Operation Name son obligatorios — el nodo se marca como inválido si alguno queda vacío.
</Warning>

El método HTTP es siempre **POST**.

## Namespaces

Define los namespaces del envelope SOAP en una tabla reordenable (arrastra para cambiar el orden):

| Campo  | Descripción                                    |
| :----- | :--------------------------------------------- |
| Scope  | `envelope` o `functionName`                    |
| Prefix | Prefijo del namespace (por ejemplo, `soapenv`) |
| URI    | La URI del namespace                           |

Puedes usar variables del workflow al definir el URI.

## Headers

Agrega headers personalizados como pares clave-valor.

<Note>
  El header `Content-Type` se gestiona automáticamente según la versión de SOAP que elijas en Settings, y no se puede editar manualmente.
</Note>

## Body

El cuerpo de la petición se edita en un editor de código libre (JSON o XML). El nodo no construye visualmente el envelope SOAP — el armado final del envelope se resuelve en el motor de ejecución.

## Autenticación

Tres opciones disponibles:

| Método                | Configuración        |
| :-------------------- | :------------------- |
| **Sin autenticación** | Opción por defecto   |
| **Basic Auth**        | Usuario y contraseña |
| **Bearer Token**      | Token de acceso      |

## Settings

* **Versión de SOAP** — `1.1` o `1.2`. Cambiarla reescribe automáticamente el header `Content-Type`.
* **Timeout** — en milisegundos, por defecto `30000` (30s).
* **Transformación de respuesta** — extrae solo la parte de la respuesta que necesitas definiendo un `extractPath` (por ejemplo, `GetUserResponse.Data`).

## Guardar la respuesta

Activa **"Guardar respuesta"** y define un nombre de variable para almacenar la respuesta del servicio SOAP.

### Acceder a la respuesta desde un nodo Código

```javascript theme={null}
let soapResponse = $context.getSoapResponse('miVariable')
soapResponse = soapResponse.json()
```

También puedes leer el request original con `$context.getSoapRequest('miVariable')`. Ambos accesores soportan `.headers()` y `.json()`; `getSoapResponse` además incluye `.status()`.

## Probar la petición

El botón **"Send"** ejecuta la petición y muestra el resultado: código de estado, y pestañas de Body y Headers de la respuesta, con opción de copiar al portapapeles.

## Manejo de errores

El nodo expone dos salidas: **éxito** y **error**. Conecta la salida de error al siguiente paso que deba manejar la falla, sin interrumpir el resto del flujo.
