Visão Geral
Registre manualmente um dispositivo para uma entidade específica. Este endpoint permite adicionar informações de dispositivo quando não são capturadas automaticamente através de eventos, útil para migrações de dados, testes ou fluxos de registro manual.
Registro Automático: Na maioria dos casos, dispositivos são registrados automaticamente quando você cria eventos de usuário com informações de dispositivo. O registro manual é tipicamente necessário apenas para:
- Migração de dados de dispositivos existentes
- Testes e desenvolvimento
- Preenchimento retroativo de registros históricos de dispositivos
Endpoint
POST https://api.gu1.ai/devices/entity/{entityId}
Autenticação
Requer uma chave de API válida no cabeçalho Authorization:
Authorization: Bearer YOUR_API_KEY
Parâmetros de Caminho
UUID da entidade para associar este dispositivo
Corpo da Requisição
Identificador único para este dispositivo. Deve ser um identificador estável que persiste entre sessões (ex: impressão digital do dispositivo, IMEI, ID de publicidade)
Plataforma do dispositivo. Opções:
android - Dispositivo Android
ios - Dispositivo iOS
web - Navegador web
Exemplo: "android"
Nome do fabricante do dispositivo (ex: “samsung”, “Apple”, “Google”)
Identificador do modelo do dispositivo (ex: “SM-A156M”, “iPhone 15 Pro”, “Pixel 8”)
Nome da marca do dispositivo (ex: “samsung”, “Apple”)
Nome do dispositivo definido pelo usuário ou nome do hardware
Versão do sistema operacional (ex: “Android 16”, “iOS 17.2”, “Windows 11”)
Nome do sistema para dispositivos iOS (ex: “iOS”)
Versão do sistema para dispositivos iOS (ex: “17.2”)
Nome do navegador para plataforma web (ex: “Chrome”, “Safari”, “Firefox”)
Versão do navegador para plataforma web (ex: “120.0.6099.129”)
Coordenada de latitude geográfica (-90 a 90)Exemplo: -34.6037
Coordenada de longitude geográfica (-180 a 180)Exemplo: -58.3816
Nome da cidade (ex: “Buenos Aires”, “Nova York”, “Londres”)
Estado ou província (ex: “Buenos Aires”, “Califórnia”, “Ontário”)
Nome do país (ex: “Argentina”, “Estados Unidos”, “Canadá”)
Código de país ISO 3166-1 alpha-2 (ex: “AR”, “US”, “CA”)
Endereço IP (IPv4 ou IPv6) de onde o dispositivo está acessandoExemplo: "10.40.64.231"
Se este dispositivo foi detectado como emulador ou simulador
Se este dispositivo tem root (Android) ou jailbreak (iOS)
Resposta
Indica se a requisição foi bem-sucedida
O objeto do dispositivo criadoUUID interno do dispositivo no gu1
Seu identificador de dispositivo fornecido
Identificador externo do dispositivo (mesmo que deviceId)
UUID da entidade associada
Plataforma do dispositivo (android, ios, web)
Fabricante do dispositivo
Nome do sistema operacional
Versão do sistema operacional
Nome do navegador (somente web)
Versão do navegador (somente web)
Flag de detecção de emulador
Flag de detecção de root/jailbreak
Se o dispositivo está bloqueado
Se o dispositivo está marcado como confiável
Primeira vez que o dispositivo foi visto (timestamp ISO 8601)
Última vez que o dispositivo foi visto (timestamp ISO 8601)
Timestamp de criação do registro do dispositivo
Timestamp da última atualização do registro do dispositivo
Exemplos
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"
}'
Exemplo de Resposta
{
"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"
}
}
Respostas de Erro
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
Testar Regras de Fraude
Crie dispositivos de teste com características específicas para verificar se suas regras de detecção de fraude funcionam corretamente:
// Criar um dispositivo suspeito para testes
await createDevice({
deviceId: 'test_emulator_001',
platform: 'android',
isEmulator: true,
isRooted: true
});
Migração de Dados
Migre dados históricos de dispositivos do seu sistema existente:
// Importação em massa de dispositivos do sistema legado
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 Dispositivo
Permita que clientes registrem seus dispositivos manualmente:
// Cliente adiciona manualmente um novo dispositivo confiável
await createDevice({
deviceId: deviceFingerprint,
platform: 'web',
browser: 'Chrome',
browserVersion: '120.0',
city: userLocation.city,
country: userLocation.country
});
Próximos Passos