Resumen
Registra manualmente un dispositivo para una entidad específica. Este endpoint te permite agregar información de dispositivo cuando no es capturada automáticamente a través de eventos, útil para migraciones de datos, pruebas o flujos de registro manual.
Registro Automático: En la mayoría de los casos, los dispositivos se registran automáticamente cuando creas eventos de usuario con información del dispositivo. El registro manual típicamente solo es necesario para:
- Migrar datos de dispositivos existentes
- Pruebas y desarrollo
- Rellenar registros históricos de dispositivos
Endpoint
POST https://api.gu1.ai/devices/entity/{entityId}
Autenticación
Requiere una clave API válida en el encabezado Authorization:
Authorization: Bearer YOUR_API_KEY
Parámetros de Ruta
UUID de la entidad a la que se asociará este dispositivo
Cuerpo de la Solicitud
Identificador único para este dispositivo. Debe ser un identificador estable que persista a través de sesiones (ej., huella digital del dispositivo, IMEI, ID de publicidad)
Plataforma del dispositivo. Opciones:
android - Dispositivo Android
ios - Dispositivo iOS
web - Navegador web
Ejemplo: "android"
Nombre del fabricante del dispositivo (ej., “samsung”, “Apple”, “Google”)
Identificador del modelo del dispositivo (ej., “SM-A156M”, “iPhone 15 Pro”, “Pixel 8”)
Nombre de la marca del dispositivo (ej., “samsung”, “Apple”)
Nombre del dispositivo definido por el usuario o nombre del hardware
Versión del sistema operativo (ej., “Android 16”, “iOS 17.2”, “Windows 11”)
Nombre del sistema para dispositivos iOS (ej., “iOS”)
Versión del sistema para dispositivos iOS (ej., “17.2”)
Nombre del navegador para plataforma web (ej., “Chrome”, “Safari”, “Firefox”)
Versión del navegador para plataforma web (ej., “120.0.6099.129”)
Coordenada de latitud geográfica (-90 a 90)Ejemplo: -34.6037
Coordenada de longitud geográfica (-180 a 180)Ejemplo: -58.3816
Nombre de la ciudad (ej., “Buenos Aires”, “Nueva York”, “Londres”)
Estado o provincia (ej., “Buenos Aires”, “California”, “Ontario”)
Nombre del país (ej., “Argentina”, “Estados Unidos”, “Canadá”)
Código de país ISO 3166-1 alpha-2 (ej., “AR”, “US”, “CA”)
Dirección IP (IPv4 o IPv6) desde la cual el dispositivo está accediendoEjemplo: "10.40.64.231"
Si este dispositivo está detectado como un emulador o simulador
Si este dispositivo está rooteado (Android) o jailbreakeado (iOS)
Respuesta
Indica si la solicitud fue exitosa
El objeto del dispositivo creadoUUID interno del dispositivo de gu1
Tu identificador de dispositivo proporcionado
Identificador externo del dispositivo (igual que deviceId)
UUID de la entidad asociada
Plataforma del dispositivo (android, ios, web)
Fabricante del dispositivo
Nombre del sistema operativo
Versión del sistema operativo
Nombre del navegador (solo web)
Versión del navegador (solo web)
Bandera de detección de emulador
Bandera de detección de root/jailbreak
Si el dispositivo está bloqueado
Si el dispositivo está marcado como confiable
Primera vez que se vio el dispositivo (marca de tiempo ISO 8601)
Última vez que se vio el dispositivo (marca de tiempo ISO 8601)
Marca de tiempo de creación del registro del dispositivo
Marca de tiempo de última actualización del registro del dispositivo
Ejemplos
curl -X POST https://api.gu1.ai/devices/entity/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"deviceId": "840e89e4d46efd67",
"platform": "android",
"manufacturer": "samsung",
"model": "SM-A156M",
"brand": "samsung",
"osVersion": "Android 16",
"city": "Buenos Aires",
"region": "Buenos Aires",
"country": "Argentina",
"countryCode": "AR",
"latitude": -34.6037,
"longitude": -58.3816,
"ipAddress": "10.40.64.231"
}'
Ejemplo de Respuesta
{
"success": true,
"device": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"deviceId": "840e89e4d46efd67",
"externalId": "840e89e4d46efd67",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"platform": "android",
"manufacturer": "samsung",
"model": "SM-A156M",
"brand": "samsung",
"osName": "Android",
"osVersion": "Android 16",
"browser": null,
"browserVersion": null,
"latitude": -34.6037,
"longitude": -58.3816,
"city": "Buenos Aires",
"region": "Buenos Aires",
"country": "Argentina",
"countryCode": "AR",
"ipAddress": "10.40.64.231",
"isEmulator": false,
"isRooted": false,
"isBlocked": false,
"isTrusted": false,
"firstSeenAt": "2026-01-30T10:00:00Z",
"lastSeenAt": "2026-01-30T10:00:00Z",
"createdAt": "2026-01-30T10:00:00Z",
"updatedAt": "2026-01-30T10:00:00Z"
}
}
Respuestas de Error
400 Bad Request
{
"success": false,
"error": {
"code": "MISSING_DEVICE_ID",
"message": "Device ID is required"
}
}
401 Unauthorized
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key"
}
}
403 Forbidden
{
"success": false,
"error": {
"code": "FORBIDDEN",
"message": "Insufficient permissions to create devices"
}
}
404 Not Found
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "Entity with ID 550e8400-e29b-41d4-a716-446655440000 not found"
}
}
500 Internal Server Error
{
"success": false,
"error": {
"code": "DEVICE_CREATE_FAILED",
"message": "Failed to create device"
}
}
Casos de Uso
Probar Reglas de Fraude
Crea dispositivos de prueba con características específicas para verificar que tus reglas de detección de fraude funcionen correctamente:
// Crear un dispositivo sospechoso para pruebas
await createDevice({
deviceId: 'test_emulator_001',
platform: 'android',
isEmulator: true,
isRooted: true
});
Migración de Datos
Migra datos históricos de dispositivos desde tu sistema existente:
// Importación masiva de dispositivos desde sistema legacy
for (const legacyDevice of legacyDevices) {
await createDevice({
deviceId: legacyDevice.id,
platform: legacyDevice.platform,
manufacturer: legacyDevice.manufacturer,
model: legacyDevice.model,
city: legacyDevice.location.city,
country: legacyDevice.location.country
});
}
Registro Manual de Dispositivos
Permite a los clientes registrar manualmente sus dispositivos:
// Cliente agrega manualmente un nuevo dispositivo confiable
await createDevice({
deviceId: deviceFingerprint,
platform: 'web',
browser: 'Chrome',
browserVersion: '120.0',
city: userLocation.city,
country: userLocation.country
});
Próximos Pasos