Crear
curl --request POST \
--url http://api.gu1.ai/devices/entity/{entityId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"deviceId": "<string>",
"entityType": "<string>",
"entityExternalId": "<string>",
"entityTaxId": "<string>",
"platform": "<string>",
"manufacturer": "<string>",
"model": "<string>",
"brand": "<string>",
"deviceName": "<string>",
"osVersion": "<string>",
"systemName": "<string>",
"systemVersion": "<string>",
"browser": "<string>",
"browserVersion": "<string>",
"latitude": 123,
"longitude": 123,
"city": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"ipAddress": "<string>",
"isEmulator": true,
"isRooted": true
}
'import requests
url = "http://api.gu1.ai/devices/entity/{entityId}"
payload = {
"deviceId": "<string>",
"entityType": "<string>",
"entityExternalId": "<string>",
"entityTaxId": "<string>",
"platform": "<string>",
"manufacturer": "<string>",
"model": "<string>",
"brand": "<string>",
"deviceName": "<string>",
"osVersion": "<string>",
"systemName": "<string>",
"systemVersion": "<string>",
"browser": "<string>",
"browserVersion": "<string>",
"latitude": 123,
"longitude": 123,
"city": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"ipAddress": "<string>",
"isEmulator": True,
"isRooted": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
deviceId: '<string>',
entityType: '<string>',
entityExternalId: '<string>',
entityTaxId: '<string>',
platform: '<string>',
manufacturer: '<string>',
model: '<string>',
brand: '<string>',
deviceName: '<string>',
osVersion: '<string>',
systemName: '<string>',
systemVersion: '<string>',
browser: '<string>',
browserVersion: '<string>',
latitude: 123,
longitude: 123,
city: '<string>',
region: '<string>',
country: '<string>',
countryCode: '<string>',
ipAddress: '<string>',
isEmulator: true,
isRooted: true
})
};
fetch('http://api.gu1.ai/devices/entity/{entityId}', 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/devices/entity/{entityId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'deviceId' => '<string>',
'entityType' => '<string>',
'entityExternalId' => '<string>',
'entityTaxId' => '<string>',
'platform' => '<string>',
'manufacturer' => '<string>',
'model' => '<string>',
'brand' => '<string>',
'deviceName' => '<string>',
'osVersion' => '<string>',
'systemName' => '<string>',
'systemVersion' => '<string>',
'browser' => '<string>',
'browserVersion' => '<string>',
'latitude' => 123,
'longitude' => 123,
'city' => '<string>',
'region' => '<string>',
'country' => '<string>',
'countryCode' => '<string>',
'ipAddress' => '<string>',
'isEmulator' => true,
'isRooted' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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/devices/entity/{entityId}"
payload := strings.NewReader("{\n \"deviceId\": \"<string>\",\n \"entityType\": \"<string>\",\n \"entityExternalId\": \"<string>\",\n \"entityTaxId\": \"<string>\",\n \"platform\": \"<string>\",\n \"manufacturer\": \"<string>\",\n \"model\": \"<string>\",\n \"brand\": \"<string>\",\n \"deviceName\": \"<string>\",\n \"osVersion\": \"<string>\",\n \"systemName\": \"<string>\",\n \"systemVersion\": \"<string>\",\n \"browser\": \"<string>\",\n \"browserVersion\": \"<string>\",\n \"latitude\": 123,\n \"longitude\": 123,\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"isEmulator\": true,\n \"isRooted\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("http://api.gu1.ai/devices/entity/{entityId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"deviceId\": \"<string>\",\n \"entityType\": \"<string>\",\n \"entityExternalId\": \"<string>\",\n \"entityTaxId\": \"<string>\",\n \"platform\": \"<string>\",\n \"manufacturer\": \"<string>\",\n \"model\": \"<string>\",\n \"brand\": \"<string>\",\n \"deviceName\": \"<string>\",\n \"osVersion\": \"<string>\",\n \"systemName\": \"<string>\",\n \"systemVersion\": \"<string>\",\n \"browser\": \"<string>\",\n \"browserVersion\": \"<string>\",\n \"latitude\": 123,\n \"longitude\": 123,\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"isEmulator\": true,\n \"isRooted\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/devices/entity/{entityId}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"deviceId\": \"<string>\",\n \"entityType\": \"<string>\",\n \"entityExternalId\": \"<string>\",\n \"entityTaxId\": \"<string>\",\n \"platform\": \"<string>\",\n \"manufacturer\": \"<string>\",\n \"model\": \"<string>\",\n \"brand\": \"<string>\",\n \"deviceName\": \"<string>\",\n \"osVersion\": \"<string>\",\n \"systemName\": \"<string>\",\n \"systemVersion\": \"<string>\",\n \"browser\": \"<string>\",\n \"browserVersion\": \"<string>\",\n \"latitude\": 123,\n \"longitude\": 123,\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"isEmulator\": true,\n \"isRooted\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"device": {
"device.id": "<string>",
"device.deviceId": "<string>",
"device.externalId": "<string>",
"device.entityId": "<string>",
"device.entityExternalId": "<string>",
"device.entityTaxId": "<string>",
"device.platform": "<string>",
"device.manufacturer": "<string>",
"device.model": "<string>",
"device.brand": "<string>",
"device.deviceName": "<string>",
"device.deviceDetails": {},
"device.osName": "<string>",
"device.osVersion": "<string>",
"device.browser": "<string>",
"device.browserVersion": "<string>",
"device.latitude": 123,
"device.longitude": 123,
"device.city": "<string>",
"device.region": "<string>",
"device.country": "<string>",
"device.countryCode": "<string>",
"device.ipAddress": "<string>",
"device.isEmulator": true,
"device.isRooted": true,
"device.isBlocked": true,
"device.isTrusted": true,
"device.firstSeenAt": "<string>",
"device.lastSeenAt": "<string>",
"device.createdAt": "<string>",
"device.updatedAt": "<string>"
}
}Referencia API
Registrar un dispositivo para una entidad
Registrar un dispositivo para una entidad — para fingerprinting de dispositivos y prevención de fraude en gu1, con ejemplos para create.
POST
/
devices
/
entity
/
{entityId}
Crear
curl --request POST \
--url http://api.gu1.ai/devices/entity/{entityId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"deviceId": "<string>",
"entityType": "<string>",
"entityExternalId": "<string>",
"entityTaxId": "<string>",
"platform": "<string>",
"manufacturer": "<string>",
"model": "<string>",
"brand": "<string>",
"deviceName": "<string>",
"osVersion": "<string>",
"systemName": "<string>",
"systemVersion": "<string>",
"browser": "<string>",
"browserVersion": "<string>",
"latitude": 123,
"longitude": 123,
"city": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"ipAddress": "<string>",
"isEmulator": true,
"isRooted": true
}
'import requests
url = "http://api.gu1.ai/devices/entity/{entityId}"
payload = {
"deviceId": "<string>",
"entityType": "<string>",
"entityExternalId": "<string>",
"entityTaxId": "<string>",
"platform": "<string>",
"manufacturer": "<string>",
"model": "<string>",
"brand": "<string>",
"deviceName": "<string>",
"osVersion": "<string>",
"systemName": "<string>",
"systemVersion": "<string>",
"browser": "<string>",
"browserVersion": "<string>",
"latitude": 123,
"longitude": 123,
"city": "<string>",
"region": "<string>",
"country": "<string>",
"countryCode": "<string>",
"ipAddress": "<string>",
"isEmulator": True,
"isRooted": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
deviceId: '<string>',
entityType: '<string>',
entityExternalId: '<string>',
entityTaxId: '<string>',
platform: '<string>',
manufacturer: '<string>',
model: '<string>',
brand: '<string>',
deviceName: '<string>',
osVersion: '<string>',
systemName: '<string>',
systemVersion: '<string>',
browser: '<string>',
browserVersion: '<string>',
latitude: 123,
longitude: 123,
city: '<string>',
region: '<string>',
country: '<string>',
countryCode: '<string>',
ipAddress: '<string>',
isEmulator: true,
isRooted: true
})
};
fetch('http://api.gu1.ai/devices/entity/{entityId}', 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/devices/entity/{entityId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'deviceId' => '<string>',
'entityType' => '<string>',
'entityExternalId' => '<string>',
'entityTaxId' => '<string>',
'platform' => '<string>',
'manufacturer' => '<string>',
'model' => '<string>',
'brand' => '<string>',
'deviceName' => '<string>',
'osVersion' => '<string>',
'systemName' => '<string>',
'systemVersion' => '<string>',
'browser' => '<string>',
'browserVersion' => '<string>',
'latitude' => 123,
'longitude' => 123,
'city' => '<string>',
'region' => '<string>',
'country' => '<string>',
'countryCode' => '<string>',
'ipAddress' => '<string>',
'isEmulator' => true,
'isRooted' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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/devices/entity/{entityId}"
payload := strings.NewReader("{\n \"deviceId\": \"<string>\",\n \"entityType\": \"<string>\",\n \"entityExternalId\": \"<string>\",\n \"entityTaxId\": \"<string>\",\n \"platform\": \"<string>\",\n \"manufacturer\": \"<string>\",\n \"model\": \"<string>\",\n \"brand\": \"<string>\",\n \"deviceName\": \"<string>\",\n \"osVersion\": \"<string>\",\n \"systemName\": \"<string>\",\n \"systemVersion\": \"<string>\",\n \"browser\": \"<string>\",\n \"browserVersion\": \"<string>\",\n \"latitude\": 123,\n \"longitude\": 123,\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"isEmulator\": true,\n \"isRooted\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("http://api.gu1.ai/devices/entity/{entityId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"deviceId\": \"<string>\",\n \"entityType\": \"<string>\",\n \"entityExternalId\": \"<string>\",\n \"entityTaxId\": \"<string>\",\n \"platform\": \"<string>\",\n \"manufacturer\": \"<string>\",\n \"model\": \"<string>\",\n \"brand\": \"<string>\",\n \"deviceName\": \"<string>\",\n \"osVersion\": \"<string>\",\n \"systemName\": \"<string>\",\n \"systemVersion\": \"<string>\",\n \"browser\": \"<string>\",\n \"browserVersion\": \"<string>\",\n \"latitude\": 123,\n \"longitude\": 123,\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"isEmulator\": true,\n \"isRooted\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://api.gu1.ai/devices/entity/{entityId}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"deviceId\": \"<string>\",\n \"entityType\": \"<string>\",\n \"entityExternalId\": \"<string>\",\n \"entityTaxId\": \"<string>\",\n \"platform\": \"<string>\",\n \"manufacturer\": \"<string>\",\n \"model\": \"<string>\",\n \"brand\": \"<string>\",\n \"deviceName\": \"<string>\",\n \"osVersion\": \"<string>\",\n \"systemName\": \"<string>\",\n \"systemVersion\": \"<string>\",\n \"browser\": \"<string>\",\n \"browserVersion\": \"<string>\",\n \"latitude\": 123,\n \"longitude\": 123,\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\",\n \"countryCode\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"isEmulator\": true,\n \"isRooted\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"device": {
"device.id": "<string>",
"device.deviceId": "<string>",
"device.externalId": "<string>",
"device.entityId": "<string>",
"device.entityExternalId": "<string>",
"device.entityTaxId": "<string>",
"device.platform": "<string>",
"device.manufacturer": "<string>",
"device.model": "<string>",
"device.brand": "<string>",
"device.deviceName": "<string>",
"device.deviceDetails": {},
"device.osName": "<string>",
"device.osVersion": "<string>",
"device.browser": "<string>",
"device.browserVersion": "<string>",
"device.latitude": 123,
"device.longitude": 123,
"device.city": "<string>",
"device.region": "<string>",
"device.country": "<string>",
"device.countryCode": "<string>",
"device.ipAddress": "<string>",
"device.isEmulator": true,
"device.isRooted": true,
"device.isBlocked": true,
"device.isTrusted": true,
"device.firstSeenAt": "<string>",
"device.lastSeenAt": "<string>",
"device.createdAt": "<string>",
"device.updatedAt": "<string>"
}
}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
string
required
UUID de la entidad a la que se asociará este dispositivo
Cuerpo de la Solicitud
string
required
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)
string
Tipo de entidad para auditoría. Opciones:
person, company. Por defecto: "person"string
ID externo de la entidad (identificador de tu sistema). Se guarda desnormalizado en el dispositivo para consultas.
string
Tax ID de la entidad (ej., CUIT, CPF). Se guarda desnormalizado en el dispositivo para consultas.
string
Plataforma del dispositivo. Opciones:
android- Dispositivo Androidios- Dispositivo iOSweb- Navegador web
"android"string
Nombre del fabricante del dispositivo (ej., “samsung”, “Apple”, “Google”)
string
Identificador del modelo del dispositivo (ej., “SM-A156M”, “iPhone 15 Pro”, “Pixel 8”)
string
Nombre de la marca del dispositivo (ej., “samsung”, “Apple”)
string
Nombre del dispositivo definido por el usuario o nombre del hardware
string
Versión del sistema operativo (ej., “Android 16”, “iOS 17.2”, “Windows 11”)
string
Nombre del sistema para dispositivos iOS (ej., “iOS”)
string
Versión del sistema para dispositivos iOS (ej., “17.2”)
string
Nombre del navegador para plataforma web (ej., “Chrome”, “Safari”, “Firefox”)
string
Versión del navegador para plataforma web (ej., “120.0.6099.129”)
number
Coordenada de latitud geográfica (-90 a 90)Ejemplo:
-34.6037number
Coordenada de longitud geográfica (-180 a 180)Ejemplo:
-58.3816string
Nombre de la ciudad (ej., “Buenos Aires”, “Nueva York”, “Londres”)
string
Estado o provincia (ej., “Buenos Aires”, “California”, “Ontario”)
string
Nombre del país (ej., “Argentina”, “Estados Unidos”, “Canadá”)
string
Código de país ISO 3166-1 alpha-2 (ej., “AR”, “US”, “CA”)
string
Dirección IP (IPv4 o IPv6) desde la cual el dispositivo está accediendoEjemplo:
"10.40.64.231"boolean
default:"false"
Si este dispositivo está detectado como un emulador o simulador
boolean
default:"false"
Si este dispositivo está rooteado (Android) o jailbreakeado (iOS)
Respuesta
boolean
Indica si la solicitud fue exitosa
object
El objeto del dispositivo creado
string
UUID interno del dispositivo de gu1
string
Tu identificador de dispositivo proporcionado
string
Identificador externo del dispositivo (igual que deviceId)
string
UUID de la entidad asociada
string
ID externo de la entidad (desnormalizado)
string
Tax ID de la entidad (desnormalizado)
string
Plataforma del dispositivo (android, ios, web)
string
Fabricante del dispositivo
string
Modelo del dispositivo
string
Marca del dispositivo
string
Nombre del dispositivo definido por el usuario o nombre del hardware
object
Metadatos adicionales del dispositivo (objeto JSON). Por plataforma: Android (hardware, buildId, sdkVersion), iOS (systemName, identifierForVendor), Web (userAgent, etc.)
string
Nombre del sistema operativo
string
Versión del sistema operativo
string
Nombre del navegador (solo web)
string
Versión del navegador (solo web)
number
Latitud geográfica
number
Longitud geográfica
string
Nombre de la ciudad
string
Estado/provincia
string
Nombre del país
string
Código de país ISO
string
Dirección IP
boolean
Bandera de detección de emulador
boolean
Bandera de detección de root/jailbreak
boolean
Si el dispositivo está bloqueado
boolean
Si el dispositivo está marcado como confiable
string
Primera vez que se vio el dispositivo (marca de tiempo ISO 8601)
string
Última vez que se vio el dispositivo (marca de tiempo ISO 8601)
string
Marca de tiempo de creación del registro del dispositivo
string
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"
}'
const response = await fetch('https://api.gu1.ai/devices/entity/550e8400-e29b-41d4-a716-446655440000', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
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'
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://api.gu1.ai/devices/entity/550e8400-e29b-41d4-a716-446655440000',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'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'
}
)
data = response.json()
print(data)
Ejemplo de Respuesta
{
"success": true,
"device": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"deviceId": "840e89e4d46efd67",
"externalId": "840e89e4d46efd67",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"entityExternalId": null,
"entityTaxId": null,
"deviceName": null,
"deviceDetails": {},
"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
Listar Dispositivos
Consultar dispositivos de una entidad
API de Eventos
Auto-registrar dispositivos vía eventos
Was this page helpful?