Presets de reportes
curl --request GET \
--url http://api.gu1.ai/report-presets \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--header 'X-Organization-ID: <x-organization-id>' \
--data '
{
"name": "<string>",
"description": "<string>",
"templateCode": "<string>",
"params": {},
"delivery": "<string>",
"recipientEmails": [
"<string>"
],
"format": "<string>"
}
'import requests
url = "http://api.gu1.ai/report-presets"
payload = {
"name": "<string>",
"description": "<string>",
"templateCode": "<string>",
"params": {},
"delivery": "<string>",
"recipientEmails": ["<string>"],
"format": "<string>"
}
headers = {
"Authorization": "<authorization>",
"X-Organization-ID": "<x-organization-id>",
"Content-Type": "application/json"
}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
Authorization: '<authorization>',
'X-Organization-ID': '<x-organization-id>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
description: '<string>',
templateCode: '<string>',
params: {},
delivery: '<string>',
recipientEmails: ['<string>'],
format: '<string>'
})
};
fetch('http://api.gu1.ai/report-presets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "http://api.gu1.ai/report-presets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'templateCode' => '<string>',
'params' => [
],
'delivery' => '<string>',
'recipientEmails' => [
'<string>'
],
'format' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json",
"X-Organization-ID: <x-organization-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://api.gu1.ai/report-presets"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"templateCode\": \"<string>\",\n \"params\": {},\n \"delivery\": \"<string>\",\n \"recipientEmails\": [\n \"<string>\"\n ],\n \"format\": \"<string>\"\n}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("X-Organization-ID", "<x-organization-id>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://api.gu1.ai/report-presets")
.header("Authorization", "<authorization>")
.header("X-Organization-ID", "<x-organization-id>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"templateCode\": \"<string>\",\n \"params\": {},\n \"delivery\": \"<string>\",\n \"recipientEmails\": [\n \"<string>\"\n ],\n \"format\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/report-presets")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
request["X-Organization-ID"] = '<x-organization-id>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"templateCode\": \"<string>\",\n \"params\": {},\n \"delivery\": \"<string>\",\n \"recipientEmails\": [\n \"<string>\"\n ],\n \"format\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyPresets de reportes
Guardá configuraciones editables de plantillas Gu1 por organización para descarga en un clic y automatizaciones send_report.
GET
/
report-presets
Presets de reportes
curl --request GET \
--url http://api.gu1.ai/report-presets \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--header 'X-Organization-ID: <x-organization-id>' \
--data '
{
"name": "<string>",
"description": "<string>",
"templateCode": "<string>",
"params": {},
"delivery": "<string>",
"recipientEmails": [
"<string>"
],
"format": "<string>"
}
'import requests
url = "http://api.gu1.ai/report-presets"
payload = {
"name": "<string>",
"description": "<string>",
"templateCode": "<string>",
"params": {},
"delivery": "<string>",
"recipientEmails": ["<string>"],
"format": "<string>"
}
headers = {
"Authorization": "<authorization>",
"X-Organization-ID": "<x-organization-id>",
"Content-Type": "application/json"
}
response = requests.get(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
Authorization: '<authorization>',
'X-Organization-ID': '<x-organization-id>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
description: '<string>',
templateCode: '<string>',
params: {},
delivery: '<string>',
recipientEmails: ['<string>'],
format: '<string>'
})
};
fetch('http://api.gu1.ai/report-presets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "http://api.gu1.ai/report-presets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'templateCode' => '<string>',
'params' => [
],
'delivery' => '<string>',
'recipientEmails' => [
'<string>'
],
'format' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json",
"X-Organization-ID: <x-organization-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://api.gu1.ai/report-presets"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"templateCode\": \"<string>\",\n \"params\": {},\n \"delivery\": \"<string>\",\n \"recipientEmails\": [\n \"<string>\"\n ],\n \"format\": \"<string>\"\n}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("X-Organization-ID", "<x-organization-id>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://api.gu1.ai/report-presets")
.header("Authorization", "<authorization>")
.header("X-Organization-ID", "<x-organization-id>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"templateCode\": \"<string>\",\n \"params\": {},\n \"delivery\": \"<string>\",\n \"recipientEmails\": [\n \"<string>\"\n ],\n \"format\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/report-presets")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
request["X-Organization-ID"] = '<x-organization-id>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"templateCode\": \"<string>\",\n \"params\": {},\n \"delivery\": \"<string>\",\n \"recipientEmails\": [\n \"<string>\"\n ],\n \"format\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyOverview
Un preset de reporte guarda una configuración de plantilla de reportes Gu1 para tu organización (name + templateCode + params). Tras crearlo podés editar name, description y params; el templateCode queda fijo. También podés listar, obtener, ejecutar o eliminar.
| Método | Path | Uso |
|---|---|---|
GET | /report-presets | Listar presets de la org |
GET | /report-presets/{id} | Detalle |
POST | /report-presets | Crear (nombre + plantilla + params) |
PATCH | /report-presets/{id} | Actualizar nombre, descripción y/o params |
DELETE | /report-presets/{id} | Eliminación definitiva |
POST | /report-presets/{id}/run | Ejecutar con params guardados (download o email) |
jobId). Descargá después desde Reportería Descargables / Jobs de exportación de reportes. Los params pueden incluir emailLocale, format (csv / pdf / xlsx según plantilla) y otros campos (lookbackDays, ruleIds, filters).
Autenticación y tenant
string
required
Bearer YOUR_API_KEY — ver Autenticación.Permisos
| Endpoint | Permiso granular |
|---|---|
GET list / get | reports:read |
POST create / run, PATCH, DELETE | reports:export |
Crear
POST http://api.gu1.ai/report-presets
string
required
Nombre visible (1–120 caracteres). Debe ser único en la organización (sin distinguir mayúsculas).
string
Nota opcional para tu equipo (máx. 500 caracteres).
string
required
Código del catálogo Gu1 (por ejemplo
alerts_by_rules).object
Params de la plantilla (
lookbackDays, ruleIds, emailLocale, format, filters, etc.). Validados contra la plantilla.paramsSummary legible (nombres de reglas, ventana) para la UI. Al ejecutar, se usan los UUID vivos de params; reglas inexistentes las omite el runner.
Ejemplo
{
"name": "Total cuentas CBU/CVU",
"description": "Revisión operativa mensual",
"templateCode": "alerts_by_rules",
"params": {
"lookbackDays": 30,
"ruleIds": ["aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"]
}
}
Respuesta 201
{
"success": true,
"preset": {
"id": "…",
"organizationId": "…",
"name": "Total cuentas CBU/CVU",
"templateCode": "alerts_by_rules",
"params": { "lookbackDays": 30, "ruleIds": ["…"] },
"paramsSummary": {
"lookbackDays": 30,
"ruleLabels": ["Total de cuentas"],
"lines": ["Últimos 30 días", "Reglas: Total de cuentas"]
},
"createdAt": "2026-08-06T12:00:00.000Z"
}
}
Errores
| Código | Status | Significado |
|---|---|---|
REPORT_TEMPLATE_NOT_FOUND | 400 | templateCode desconocido |
REPORT_PRESET_NAME_EXISTS | 409 | Nombre duplicado en la org |
REPORT_PRESET_LIMIT | 400 | Tope de 50 alcanzado |
REPORT_PRESET_NOT_FOUND | 404 | Id desconocido para esta org |
Actualizar
PATCH http://api.gu1.ai/report-presets/{id}
name, description o params es obligatorio. No se puede cambiar templateCode. Los params se revalidan contra la plantilla existente.
string
Nuevo nombre (1–120). Debe seguir siendo único en la org.
string
Nueva descripción (máx. 500) o
null para limpiar.object
Params completos a persistir (reemplazo, no merge parcial de claves omitidas).
Ejecutar
POST http://api.gu1.ai/report-presets/{id}/run
POST /report-templates/{code}/run con los params guardados.
string
download (default) o email.string[]
Obligatorio cuando
delivery es email.string
Opcional:
csv, xlsx o pdf (debe estar soportado por la plantilla). Si se omite, usa params.format o el default de la plantilla.presetId). Siempre encola un job en segundo plano. Consultá o descargá vía Jobs de exportación de reportes.
Automatizaciones
En Reportería, Programar abre el builder conreportPresetId (canónico). Usá la acción send_report / Generar reporte con reportPresetId y opcionalmente sendEmail + recipientEmails; el legacy reportTemplateCode + params sigue funcionando.Was this page helpful?