Visão Geral
Atualiza os atributos e dados de uma entidade existente. Este endpoint aciona automaticamente uma reavaliação da pontuação de risco da entidade 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 Authorization:
Authorization: Bearer YOUR_API_KEY
Parâmetros de Caminho
O ID gu1 da entidade a ser atualizada
Corpo da Requisição
Todos os campos do schema de criação estĆ£o disponĆveis, exceto type (o tipo de entidade nĆ£o pode ser alterado). Todos os campos sĆ£o opcionais - inclua apenas os campos que deseja atualizar.
Atualizar o nome de exibição da entidade
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 do tipo (mescla com entityData existente)
Resposta
O objeto da entidade atualizada 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 entidade antes da atualização (para auditoria/comparação)
Comportamento
Quando vocĆŖ atualiza uma entidade, o sistema automaticamente:
- Registra a alteração no log de eventos da entidade com um snapshot antes/depois
- Aciona reavaliação para recalcular a pontuação de risco com base nos novos dados
- Emite evento em tempo real para notificar clientes conectados sobre a atualização
- Mantém trilha de auditoria para fins de conformidade e revisão
Exemplos
Atualizar Renda de 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/660e9511-f39c-52e5-b827-557766551111 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entityData": {
"company": {
"employeeCount": 75,
"revenue": 7500000
}
},
"attributes": {
"partnershipTier": "platinum",
"monthlyVolume": 500000
}
}'
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 Transação
curl -X PATCH http://api.gu1.ai/entities/770f0622-g40d-63f6-c938-668877662222 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entityData": {
"transaction": {
"status": "reviewed",
"flagged": false
}
}
}'
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": "[email protected]",
"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"]
}
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 concluir a verificação KYC, atualizar a entidade
const response = await fetch(`http://api.gu1.ai/entities/${entityId}`, {
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(entity_id, new_data):
response = requests.patch(
f'http://api.gu1.ai/entities/{entity_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()
Resolução de Transação
// Marcar uma transação sinalizada como resolvida após investigação
async function resolveTransaction(txnId, resolution) {
const response = await fetch(`http://api.gu1.ai/entities/${txnId}`, {
method: 'PATCH',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
entityData: {
transaction: {
status: 'resolved',
flagged: false
}
},
attributes: {
resolutionDate: new Date().toISOString(),
resolutionNotes: resolution,
reviewedBy: 'compliance_team'
}
})
});
return response.json();
}
Melhores PrƔticas
- Atualizações Parciais: Envie apenas os campos que deseja alterar - não é necessÔrio enviar a entidade inteira
- Monitorar Reavaliações: Verifique o ID da avaliação retornado para acompanhar o recÔlculo da pontuação de risco
- Trilha de Auditoria: Use o
previousEntity na resposta para manter o histórico de alterações
- 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