Visão Geral
Atualiza atributos e dados de uma pessoa existente. Este endpoint aciona automaticamente uma reavaliação da pontuação de risco da pessoa e emite eventos de atualização em tempo real.
Endpoint
PATCH http://api.gu1.ai/entities/{id}
Autenticação
Requer uma chave de API válida no cabeçalho de autorização:
Authorization: Bearer YOUR_API_KEY
Parâmetros de Caminho
O ID do gu1 da pessoa a atualizar
Corpo da Requisição
Todos os campos são opcionais - inclua apenas os campos que deseja atualizar.
Atualizar o nome de exibição da pessoa
Atualizar seu identificador externo
Atualizar número de identificação fiscal
Atualizar código de país ISO 3166-1 alpha-2
Atualizar atributos personalizados (mescla com atributos existentes)
Atualizar dados específicos da pessoa (mescla com entityData existente)
Atualizar status da pessoa. Status disponíveis:
pending - Estado inicial, aguardando processamento
under_review - Em revisão manual
active - Aprovado e ativo
suspended - Temporariamente suspenso (requer reason)
blocked - Bloqueado permanentemente (requer reason)
rejected - Rejeitado durante a integração (requer reason)
Nota: Mudanças de status para suspended, blocked ou rejected requerem um campo reason para fins de auditoria.
Obrigatório ao alterar o status para suspended, blocked ou rejected. Fornece trilha de auditoria para mudanças de status.
UUID da matriz de risco a ser associada com esta pessoa. Atualiza quais regras são usadas para avaliação de risco.
Resposta
O objeto pessoa atualizado com todos os valores atuais
Avaliação recém-criada acionada pela atualização
id - ID da avaliação
entityId - ID da entidade
decision - “PENDING” (aguardando processamento)
evaluationType - “SYSTEM”
reasons - Array com “Re-evaluation triggered by attribute change”
O estado da pessoa antes da atualização (para auditoria/comparação)
Comportamento
Quando você atualiza uma pessoa, o sistema automaticamente:
- Registra a mudança no log de eventos da entidade com um snapshot antes/depois
- Aciona reavaliação para recalcular a pontuação de risco com base em novos dados
- Emite evento em tempo real para notificar clientes conectados da atualização
- Mantém trilha de auditoria para conformidade e fins de revisão
Exemplos
Atualizar Renda e Ocupação da Pessoa
curl -X PATCH http://api.gu1.ai/entities/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entityData": {
"person": {
"income": 95000,
"occupation": "Senior Software Engineer"
}
}
}'
curl -X PATCH http://api.gu1.ai/entities/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entityData": {
"person": {
"email": "new.email@example.com",
"phone": "+54 11 9876-5432",
"address": "Av. Libertador 2500, Buenos Aires"
}
}
}'
Atualizar Apenas Atributos Personalizados
curl -X PATCH http://api.gu1.ai/entities/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"attributes": {
"accountTier": "premium",
"loyaltyPoints": 15000,
"lastLoginDate": "2024-10-03T14:00:00Z"
}
}'
Atualizar Status da Pessoa
curl -X PATCH http://api.gu1.ai/entities/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "suspended",
"reason": "Suspicious activity detected - pending investigation"
}'
Exemplo de Resposta
{
"entity": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"externalId": "customer_12345",
"organizationId": "8e2f89ab-c216-4eb4-90eb-ca5d44499aaa",
"type": "person",
"name": "María González",
"taxId": "20-12345678-9",
"countryCode": "AR",
"riskScore": 22,
"riskFactors": [...],
"status": "active",
"kycVerified": true,
"entityData": {
"person": {
"firstName": "María",
"lastName": "González",
"dateOfBirth": "1985-03-15",
"nationality": "AR",
"occupation": "Senior Software Engineer",
"income": 95000
}
},
"attributes": {
"email": "maria.gonzalez@example.com",
"phone": "+54 11 1234-5678",
"accountTier": "premium"
},
"createdAt": "2024-10-03T14:30:00.000Z",
"updatedAt": "2024-10-03T16:45:00.000Z",
"deletedAt": null
},
"evaluation": {
"id": "eval_new_123",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"decision": "PENDING",
"evaluationType": "SYSTEM",
"reasons": ["Re-evaluation triggered by attribute change"],
"rules": [],
"entitySnapshot": {...}
},
"previousEntity": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"entityData": {
"person": {
"occupation": "Software Engineer",
"income": 85000
}
},
"updatedAt": "2024-10-03T14:35:00.000Z"
}
}
Respostas de Erro
404 Not Found
{
"error": "Entity not found"
}
400 Bad Request - Dados Inválidos
{
"error": "Validation failed",
"details": ["Invalid country code format"]
}
400 Bad Request - Motivo Ausente para Mudança de Status
{
"error": "Changing status to 'suspended' requires a reason for audit purposes."
}
401 Unauthorized
{
"error": "Invalid or missing API key"
}
500 Internal Server Error
{
"error": "Failed to update entity"
}
Casos de Uso
Atualizar Após Verificação KYC
// Após completar a verificação KYC, atualizar a pessoa
const response = await fetch(`http://api.gu1.ai/entities/${personId}`, {
method: 'PATCH',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
attributes: {
kycVerified: true,
kycVerificationDate: new Date().toISOString(),
kycProvider: 'manual_review'
}
})
});
Enriquecimento Progressivo de Perfil
# Enriquecer perfil do cliente conforme mais informações ficam disponíveis
def update_customer_info(person_id, new_data):
response = requests.patch(
f'http://api.gu1.ai/entities/{person_id}',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'entityData': {
'person': new_data
},
'attributes': {
'lastDataUpdate': datetime.now().isoformat(),
'dataCompleteness': calculate_completeness(new_data)
}
}
)
return response.json()
Melhores Práticas
- Atualizações Parciais: Envie apenas os campos que deseja alterar - não é necessário enviar a pessoa inteira
- Monitorar Reavaliações: Verifique o ID de avaliação retornado para rastrear o recálculo da pontuação de risco
- Trilha de Auditoria: Use o
previousEntity na resposta para manter o histórico de mudanças
- Sincronização em Tempo Real: Atualizações emitem eventos WebSocket para sincronização de UI em tempo real
- Idempotência: Seguro para tentar novamente - atualizações com os mesmos dados não criarão eventos duplicados
Próximos Passos