Uso de la API Audit
Descripción de los endpoints de la API Audit disponibles para los clientes
Written By Matias Carcamo
Last updated 6 months ago
La API Audit le permite obtener datos respecto a sus flujos en dVirtualUser para ser consumidos por aplicaciones de terceros
URL Base: https://app.dvirtualuser.com/audit
Autenticación & Autorización
La API requiere el uso de un Token con acceso a los datos históricos de monitoreo sintético para poder ejecutar las consultas correspondientes. Para generar uno debe:
Ingresar a la sección API Tokens desde el menú que se despliega al seleccionar su nombre de usuario y, una vez allí, seleccionar el botón Crear Token

En el diálogo que se abre, especifique Nombre del token, Expiración y marque la casilla del permiso report_api para permitir la consulta de datos históricos. Luego, seleccione Crear

Se almacenará el API Token y podrá copiar su valor directamente con el botón en la columna Token

Luego, todas sus peticiones HTTP deben tener la siguiente cabecera:
Endpoints
Datos de un flujo
Para obtener el ID de un flujo, diríjase a la sección Flujos en el portal web y verifique los detalles del flujo de su interés. Podrá copiar el ID desde la URL resultante:

GET /audit/getDataOfFlow
Obtiene datos históricos de un flujo en particular dado un periodo de tiempo.
Request body
Ejemplo mínimo:
{
"id": "27256943",
"start": 1761252816000,
"end": 1761339216000
}Los parámetros de la petición se detallan a continuación:
Parámetros opcionales:
Response
dVirtualuser retornará un respuesta con la siguiente estructura JSON por defecto:
{
"timezone": "Chile/Continental",
"isProcessing": false,
"processingMessage": "OK",
"queryToken": "1767620926806_RAND:458.99506886446653",
"queryTime": 1767620926806,
"apiMessage": "OK",
"id": 627344,
"start": 1761252816000,
"end": 1761339216000,
"addScreenshots": true,
"addUserExperience": true,
"addHistory": true,
"addUptime": true,
"addTrend": true,
"trendUnitNames": "responseTime",
"generalMetrics": {
"simulationData": [
{
"stepName": "01 - Nuevo paso",
"result": "OK",
"simulations": 287
}
]
},
"userExperience": {
"apiMessage": "OK",
"apdexData": [
{
"id": 3151069,
"robotId": 627344,
"date": "2025-10-24T14:50:29.919-03:00",
"step": "01 - Nuevo paso",
"ok": 0,
"warning": 269,
"critical": 17,
"unknown": 0
},
{
"id": 3151070,
"robotId": 627344,
"date": "2025-10-24T14:50:29.919-03:00",
"step": "_total",
"ok": 0,
"warning": 269,
"critical": 17,
"unknown": 0
}
]
},
"history": {
"apiMessage": "OK",
"errors": [],
"customErrors": [
{
"id": 6736,
"keyId": 2499330,
"key": "responseTime:01 - Nuevo paso",
"start": "2025-10-24T14:45:13.805-03:00",
"description": "Valor actual: 52.74 (s). Umbral 30.0 (s) superado.",
"status": "WARNING",
"stepId": 1155818,
"end": "2025-10-24T15:26:01.195-03:00",
"consecutiveFlows": 8,
"robotId": 627344,
"robotDescription": "",
"robotName": "robot_37",
"server": "DPA Test",
"stepName": "01 - Nuevo paso",
"code": 200,
"stepScreenshot": "group_37--robot_37--01_-_Nuevo_paso",
"groupName": "group_37",
"groupDescription": "01 - test",
"tags": null,
"screenshotBase64": null
},
...
]
},
"uptime": {
"apiMessage": "OK",
"uptimeData": [
{
"robotUptimeFactor": 1.0,
"groupUptimeFactor": 0.5,
"id": 89424,
"robotId": 627344,
"start": "2025-10-23T17:53:36-03:00",
"end": "2025-10-24T10:14:10.03-03:00",
"status": "UP",
"message": "OK",
"isFalsePositive": false
},
...
]
},
"trend": {
"apiMessage": "OK",
"trendData": [
{
"date": "2025-10-23T14:57:00-03:00",
"robotId": 627344,
"stepName": "01 - Nuevo paso",
"robotName": "robot_37",
"server": null,
"description": "01 - test",
"unitName": "responseTime",
"unitValue": 53589.0
},
...
]
},
"paramsAsString": "[ id = 627344, start = 1761252816000, end = 1761339216000 ]"
}
Las propiedades se detallan a continuación:
Main (Object):
timezone,id,start,end,addScreenshots,addUserExperience,addHistory,addUptimeyaddTrendretornan sus valores por defecto o aquellos establecidos en el cuerpo de la petición HTTP, según corresponda.
generalMetrics (Object):
simulationData [Objects in Array]:
userExperience (Object):
apdexData [Objects in Array]:
history (Object):
errors [Objects in Array]:
customErrors [Objects in Array]:
uptime (Object):
uptimeData [Objects in Array]:
trend (Object):
trendData [Objects in Array]:
Datos de cliente
GET /audit/getClient
Obtiene un arreglo que contiene información de todos los robots/flujos asociados al cliente con el API Token entregado. No necesita un request body.
Response
dVirtualUser retornará una respuesta con una estructura JSON como la siguiente:
{
"flows": [
{
"id": 2609,
"client": 1018,
"groupId": 2609,
"userExpData": "",
"key": "test_gpu:test_gpu",
"groupDescription": "",
"isSmart": false,
"iaEnabled": false,
"videoRecording": false,
"tags": [],
"location": "",
"maintenance": 0,
"autoMaintenance": 0,
"flowCreatedAt": "2025-12-31T14:20:18.820+00:00",
"environment": "production",
"integrations": []
},
{
"id": 72478,
"client": 1018,
"groupId": 72478,
"userExpData": "",
"key": "listener_1234:listener_1234",
"groupDescription": "",
"isSmart": false,
"iaEnabled": false,
"videoRecording": false,
"tags": [],
"location": "",
"maintenance": 0,
"autoMaintenance": 0,
"flowCreatedAt": "2025-12-31T14:06:16.576+00:00",
"environment": "production",
"integrations": []
},
...
]
}El objeto respuesta puede incluir otros campos como
client,clientName,robotStats,probeServersyusers, pero aparecerán con valornull.
Las propiedades se detallan a continuación:
Main (Object):
flows [Objects in Array]:
integrations [Objects in Array]:
Datos históricos de cliente
GET /audit/getHistoricClientData
Resumen de data histórica de cliente dada una ventana de tiempo especificada.
Request body
Example:
{
"start": 1756743104000,
"end": 1761339216000
}Los parámetros de la petición se detallan a continuación:
Response
dVirtualUser retornará una respuesta con una estructura JSON como la siguiente:
{
"onDemandCalls": [
{
"apiAccessKey": "HwMqdtSLpTWL8thXXMJ*****6dS7cu6pwpJqbCDSEMDAu"
},
{
"apiAccessKey": "HwMqdtSLpTWL8thXXMS*****7e4Ln3nPY5Ar/zKx6dS7c"
},
...
],
"executedSteps": [
{
"groupName": "group_25",
"executedSteps": 40708
},
{
"groupName": "group_1",
"executedSteps": 2390
},
...
],
"executedActions": [
{
"groupName": "group_25",
"executedActions": 61062
},
{
"groupName": "group_1",
"executedActions": 2390
},
...
]
}Las propiedades se detallan a continuación:
Main (Object):
onDemandCalls [Objects in Array]:
executedSteps [Objects in Array]:
executedActions [Objects in Array]:
Conteo de alertas de cliente
GET /audit/getClientAlertCount
Obtiene cantidad de flujos ejecutados por el cliente y el estado de los mismos (exitoso/fallido) en una ventana de tiempo dada.
Request body
Los tiempos de inicio y final de la ventana de tiempo pueden entregarse como timestamp en milisegundos, o como fecha calendario en el formato
yyyy-MM-dd
Ejemplo 1:
{
"start": 1756743104000,
"end": 1761339216000
}En detalle:
Ejemplo 2:
{
"dateStart": "2025-09-01",
"dateEnd": "2025-10-24"
}En detalle:
Si se especifica la ventana de tiempo con ambos formatos en el mismo request, la fecha calendario (
dateStartydateEnd) toma precedencia
Parámetros opcionales:
Response
dVirtualUser retornará una respuesta con una estructura JSON como la siguiente:
{
"summary": {
"ok": 11865,
"critical": 50353,
"total": 62218
},
"flows": [
{
"groupDescription": "Mobile IOS",
"robotId": 586467,
"ok": 0,
"critical": 20,
"total": 20,
"lastDate": "2025-09-23T03:00:00.000+00:00",
"clientId": 1018
},
{
"groupDescription": "Login",
"robotId": 391281,
"ok": 5932,
"critical": 9838,
"total": 15770,
"lastDate": "2025-09-24T03:00:00.000+00:00",
"clientId": 1018
},
...
]
}summary (Object):
flows [Objects in Array]: