🌐 Módulo: api

🇪🇸 Descripción

El módulo api permite realizar peticiones HTTP declarativas desde un host remoto, compatible con APIs REST (GET, POST, PUT, DELETE) y servicios SOAP (POST con cuerpo XML). Es útil para consultar servicios, enviar datos, validar integraciones o automatizar flujos externos.

La ejecución se realiza vía SSH y puede usar sudo si se requiere (become=true). El módulo permite parsear la respuesta como json o xml si se indica.


🧩 Argumentos disponibles

Clave Descripción
method Método HTTP: get, post, put, delete, soap
url URL completa del servicio a consultar
headers Cabeceras HTTP separadas por coma (ej. Content-Type:application/json)
body Cuerpo de la petición (JSON, XML, texto plano)
output Ruta local donde guardar la respuesta (opcional)
parse Tipo de parseo: json, xml o vacío para texto plano
become Si se requiere sudo, usar become=true

▶️ Ejemplos de uso

🔎 Consulta REST con parseo JSON

tasks:
  - name: Obtener datos de usuario
    module: api
    args:
      method: get
      url: https://jsonplaceholder.typicode.com/users/1
      headers: Accept:application/json
      parse: json

🧪 Consulta SOAP con cuerpo XML

tasks:
  - name: Consulta SOAP de prueba
    module: api
    args:
      method: soap
      url: http://demo.mockable.io/soap
      headers: Content-Type:text/xml
      body: |
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
          <soapenv:Body>
            <ns:getStatus xmlns:ns="http://demo.mockable.io/soap"/>
          </soapenv:Body>
        </soapenv:Envelope>        
      parse: xml

🧠 Trazas esperadas (--debug)

🌐 [api] Ejecutando GET → https://jsonplaceholder.typicode.com/users/1
[api] Respuesta JSON parseada correctamente

🌐 [api] Ejecutando POST → http://demo.mockable.io/soap
📦 [api] Cuerpo enviado:
<soapenv:Envelope>...</soapenv:Envelope>
[api] Respuesta XML formateada correctamente

📜 Changelog

Consulta el historial de cambios en changelog/api.md