curl --request GET \
--url https://api.ugps.io/api/activity-log \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ugps.io/api/activity-log"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ugps.io/api/activity-log', 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 => "https://api.ugps.io/api/activity-log",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ugps.io/api/activity-log"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ugps.io/api/activity-log")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ugps.io/api/activity-log")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"items": [
{
"_id": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"domain": {
"key": "<string>",
"label": "<string>"
},
"actionType": {
"key": "<string>",
"label": "<string>"
},
"channel": "web",
"status": "success",
"failureReason": "<string>",
"actor": {
"type": "user",
"userId": "<string>",
"name": "<string>",
"email": "<string>",
"ugps": {
"userId": "<string>",
"name": "<string>"
},
"apiKey": {
"id": "<string>",
"name": "<string>",
"prefix": "<string>"
}
},
"target": {
"entityType": "<string>",
"entityId": "<string>",
"label": "<string>"
},
"metadata": {},
"changes": [
{
"field": "<string>",
"before": "<unknown>",
"after": "<unknown>"
}
]
}
],
"total": 123,
"totalCapped": true,
"hasMore": true,
"nextCursor": "<string>"
}
}{
"error": "Token inválido o expirado"
}{
"error": "No tiene permisos para realizar esta acción"
}{
"message": "Error interno del servidor"
}Listar eventos de actividad del cliente
Obtiene el registro de eventos de actividad del cliente autenticado, del más reciente al más antiguo, con el total del filtro (contado hasta 10.000) y paginación por cursor.
Filtrado automático: Solo retorna eventos del clientId del usuario autenticado y
nunca los eventos internos de UGPS (audience: internal).
Permisos requeridos: access_activity_log
curl --request GET \
--url https://api.ugps.io/api/activity-log \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ugps.io/api/activity-log"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ugps.io/api/activity-log', 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 => "https://api.ugps.io/api/activity-log",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ugps.io/api/activity-log"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ugps.io/api/activity-log")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ugps.io/api/activity-log")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"items": [
{
"_id": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"domain": {
"key": "<string>",
"label": "<string>"
},
"actionType": {
"key": "<string>",
"label": "<string>"
},
"channel": "web",
"status": "success",
"failureReason": "<string>",
"actor": {
"type": "user",
"userId": "<string>",
"name": "<string>",
"email": "<string>",
"ugps": {
"userId": "<string>",
"name": "<string>"
},
"apiKey": {
"id": "<string>",
"name": "<string>",
"prefix": "<string>"
}
},
"target": {
"entityType": "<string>",
"entityId": "<string>",
"label": "<string>"
},
"metadata": {},
"changes": [
{
"field": "<string>",
"before": "<unknown>",
"after": "<unknown>"
}
]
}
],
"total": 123,
"totalCapped": true,
"hasMore": true,
"nextCursor": "<string>"
}
}{
"error": "Token inválido o expirado"
}{
"error": "No tiene permisos para realizar esta acción"
}{
"message": "Error interno del servidor"
}Authorizations
Token de sesión Better Auth o API token (atk_...) en el header Authorization: Bearer <token>. Los JWT legacy ya no son válidos.
Query Parameters
Cantidad de eventos por página
x <= 100Cursor de la página siguiente (nextCursor de la respuesta anterior)
Fecha de inicio del filtro
Fecha de fin del filtro
Texto libre sobre el usuario, la acción y la entidad, sin distinguir mayúsculas ni tildes. Busca en todo el período, no sólo en la página.
Canales, separados por coma. web incluye los eventos guardados sin canal.
web, app, portal, api_key, mcp, system Módulos del catálogo de actividad, separados por coma
Acciones del catálogo de actividad, separadas por coma
Usuarios de la empresa que actuaron, separados por coma
Resultado del evento, separado por coma
success, failure 
