# Plugin de requests

# Introducción

Está definido como un plugin de servidor, para comprobacion de APIs y a su vez es capaz de realizar peticiones HTTP (GET, POST, PUT) y así integrar de forma sencilla el sistema de alertas con cualquier API.

<span dir="ltr" role="presentation">**Tipo**: Plugin de servidor</span>

# Matriz de compatibilidad

Desarrollado en python 3.8. Se distribuye el binario compilado que no requiere dependencias extra.

# Pre requisitos

Para poder ejecutar el plugin es necesario:

- Pandora FMS Data Server habilitado.
- Pandora FMS Plugin Server habilitado.

# Configuración

El plugin se ejecuta definiendo los parámetros correspondientes:

```
usage: pandora_api_requests  [-h] -u URL [-m {get,post,put,patch,delete,option}] [-hd HEADERS] [-d DATA] [--ssl SSL] [-md {requests,server_plugin}] [--comparison-value COMPARISON_VALUE] [--condition {is_equal_to,is_not_equal_to,is_greater_than,is_less_than,contains,does_not_contain,matches_regex,is_null,is_not_null}]
                        [--down_codes DOWN_CODES [DOWN_CODES ...]] [-v] [--json-path JSON_PATH]

Opciones:
  -u, --url             La URL a la que se enviará la solicitud HTTP. (Ejemplo: http://127.0.0.1)
  -m, --method          {get,post,put,patch,delete,option}
                        El método HTTP que se utilizará (GET, POST, PUT, PATH, DELETE).
  -hd, --headers        Parámetros de valores clave de encabezados en pares de claves separados por comas. (Ejemplo: «Authorization=Bearer abc123token,Content-Type=application/json,X-Request-ID=123456»)
  -d, --data            Parámetros de datos clave-valor en pares clave separados por comas. (Ejemplo: «title=foo,body=bar,userId=1»)
  --ssl SSL             Protocolo de seguridad de Internet
  -md, --mode           {requests,server_plugin} Devuelve la salida para el complemento del servidor; si se elige request, devuelve la salida para el complemento de solicitud
  --comparison-value    El valor con el que comparar el campo filtrado en el json.
  --condition    {is_equal_to,is_not_equal_to,is_greater_than,is_less_than,contains,does_not_contain,matches_regex,is_null,is_not_null}
                 Si se cumple la condición, el valor será crítico (0).
                Condición: is_equal_to | is_not_equal_to | is_greater_than | is_less_than | contains | does_not_contain | matches_regex | is_null | is_not_null
  --down_codes DOWN_CODES [DOWN_CODES ...]
                        Lista de códigos de estado separados por espacios (sin comillas) Ejemplo: --down-codes 404 400
  -v, --verbosity       Añade un indicador para comprobar el valor sin procesar de la respuesta en el terminal
  --json-path           Palabra para buscar en el json
```

El unico campo obligatorio para la ejecucion es la **url** de la solicitud.

El modo **requests** esta por defecto en la ejecucion asi como el metodo **GET,** al ejecutar el modo **requests** solo se imprimira el json resultante mientras que al utilizar el modo **server\_plugin** imprimira **1** si la ejecucion fue correcta y 0 si no cumplio con la comparacion o fallo la peticion.

Hay una excepción: si se trata de ejecutar la acción de modo **server\_plugin** con el método **delete**, este no es permitido.

# Ejecución manual

Versión binaria:

```bash
./pandora_api_requests -u <url objetivo> -m <método> -hd <encabezado de la petición> -d <datos de la petición> -md <modo de las solicitudes> --comparison-value <El valor a comparar> --condition <Si coincide con la condición, el valor> --down_codes <código de estado a comparar> -v <verbosidad mostrar valor sin procesar en la terminal> --json-path <Palabra a buscar en el json>
```

el plugin se maneja dependiendo de modo **requests** para devolver la respuesta JSON sin procesar o el código de estado de forma simple y el modo **server\_plugin** diseñado para la integración.

Modo **requests**:

```
./pandora_api_requests -u https://jsonplaceholder.typicode.com/posts/1 -m get -md requests -v
```

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/image.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/image.png)

Modo **server\_plugin:**

```bash
./pandora_api_requests -u https://jsonplaceholder.typicode.com/posts/1 -m get -md server_plugin --json-path "$.userId"  --condition "is_equal_to" --comparison-value "1" -v
```

[![Screenshot 2025-10-06 123735.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/screenshot-2025-10-06-123735.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/screenshot-2025-10-06-123735.png)