> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/input-output/communication/rest-api-request.md).

# REST API - Request

Bloque unificado de solicitud REST para llamar APIs web. Configura `Method`, `Headers`, `Query Params` y `Payload`. Elige tiempo de ejecución Async (no bloqueante) o Sync (espera la respuesta). Opcionalmente extrae un valor de la respuesta JSON usando una ruta tipo con puntos/índices (dotted/array path).

## 📥 Entradas <a href="#inputs" id="inputs"></a>

`Enable` Booleano opcional para ejecutar la solicitud. Cuando es False el bloque puede omitir el envío de la petición (por defecto True).

`Server Address` URL o endpoint a llamar (requerido).

`Headers` Cabeceras opcionales como diccionario o string JSON.

`Query Params` Parámetros de consulta opcionales como diccionario o string JSON.

`Payload` Cuerpo opcional de la solicitud (se enviará según el `Body Mode` seleccionado).

`Response Path` Ruta de texto opcional usada para extraer un valor de la respuesta JSON (ejemplos: data.items\[0].id o items\[2]).

(aquí los sockets son entradas)

## 📤 Salidas <a href="#outputs" id="outputs"></a>

`OK` Booleano que es True cuando la respuesta HTTP indica éxito.

`Status Code` Código de estado HTTP devuelto por el servidor.

`Error` Mensaje de error para problemas de red/HTTP o errores de parseo.

`Response Text` Cuerpo de la respuesta en texto sin procesar.

`Response JSON` Objeto JSON parseado cuando está disponible (si no, None).

`Response Headers` Mapa con las cabeceras de la respuesta.

`Elapsed (ms)` Duración de la solicitud en milisegundos.

`Extracted Data` Valor resuelto desde `Response JSON` usando `Response Path` (o None si no se encuentra).

(aquí los sockets son salidas)

## 🕹️ Controles <a href="#controls" id="controls"></a>

`Method` Elige el método HTTP: GET / POST / PUT / PATCH / DELETE.

`Body Mode` Elige cómo enviar el `Payload`: json / form / raw.

`Runtime Mode` Elige el modo de ejecución: Async (no bloqueante, mantiene el último resultado) o Sync (espera la respuesta).

`Timeout (s)` Tiempo de espera en segundos para las solicitudes (valores inválidos vuelven a un valor seguro por defecto).

`Verify SSL` Habilitar o deshabilitar la verificación del certificado TLS (deshabilitar solo en entornos de prueba de confianza).

## ⚙️ Cómo funciona <a href="#how-it-works" id="how-it-works"></a>

* Cuando `Enable` es true, el bloque construye la petición usando `Server Address`, `Headers`, `Query Params` y `Payload` junto con el `Method` y el `Body Mode` elegidos.
* En modo `Sync` el bloque espera hasta que la petición HTTP se complete y devuelve el resultado fresco en el mismo ciclo de evaluación.
* En modo `Async` el bloque envía la petición sin bloquear; el bloque mantiene el último resultado completado y actualiza las salidas cuando la petición en segundo plano finaliza.
* Una ruta de extracción JSON proporcionada en `Response Path` se resuelve en `Extracted Data` si está presente; una ruta vacía no realiza extracción.
* En errores HTTP o de red, el bloque expone un mensaje en `Error` y marcará el resultado del bloque como inválido para facilitar la detección de fallos.

## 📝 Uso <a href="#usage" id="usage"></a>

1. Pon `Server Address` con el endpoint de tu API.
2. Proporciona opcionalmente `Headers` y `Query Params` como diccionarios o strings JSON.
3. Inserta el cuerpo de la petición en `Payload` y elige `Body Mode` (usa json para payloads estructurados).
4. Elige `Runtime Mode`:
   * Usa `Async` para evitar bloquear tu escenario (útil para interfaces o pipelines continuos).
   * Usa `Sync` cuando necesites la respuesta inmediatamente en la misma ejecución.
5. (Opcional) Añade un `Response Path` para extraer un valor anidado del JSON de respuesta y usarlo en lógica posterior.
6. Dispara la llamada poniendo `Enable` en True o alimentando un trigger booleano desde otros bloques.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Prepara payloads JSON con el bloque `Data to JSON` antes de pasarlos a `Payload` para una estructura más limpia y menos errores de formato.
* Usa `Parse Data Dictionary` tras `Response JSON` si prefieres acceder y enrutar campos de la respuesta de forma visual.
* Registra respuestas o resultados periódicos con `CSV Export` para mantener un historial con marcas temporales de las respuestas del API.
* Para depuración, conecta `Error` o `Response Text` a `Debug Input` para imprimir o inspeccionar salidas inesperadas.
* Combina con `Logic Input` o `Rising Edge` para controlar exactamente cuándo se envían las peticiones (por ejemplo, enviar solo una vez por evento).

(here suggested blocks are from the provided list)

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* Server Address vacío o inválido: asegúrate de que `Server Address` sea una URL completa (incluye protocolo si es necesario).
* La petición expira: aumenta `Timeout (s)` o verifica la conectividad de red con el servidor.
* Errores de verificación SSL en entornos de prueba: desactiva temporalmente `Verify SSL` solo si confías en el destino.
* Parseo JSON inesperado: inspecciona primero `Response Text`; usa un payload válido en JSON y pon `Body Mode` en `json` cuando envíes datos estructurados.
* No hay datos extraídos: verifica la estructura inspeccionando `Response JSON` y ajusta `Response Path` usando notación de puntos/índices (ej. items\[0].id).

## 🔒 Privacidad y seguridad <a href="#privacy-and-safety" id="privacy-and-safety"></a>

Ten cuidado con datos sensibles en `Headers` o `Payload` (claves de API, contraseñas). Al registrar respuestas o exportar datos, asegúrate de redactar los campos sensibles.

## 🧭 Ejemplos de flujos <a href="#examples" id="examples"></a>

* Envía periódicamente datos de sensores a un servicio web y registra conteos de éxito/fallo con `CSV Export`.
* Publica un objeto JSON estructurado creado por `Data to JSON` y luego alimenta `Extracted Data` en un flujo de decisión (`Logic Input` / umbrales).
* Usa `Debug Input` para inspeccionar errores del servidor durante el desarrollo antes de pasar al registro en producción.
