Enrichment marketplace — erros estruturados
POST /integration-execution/marketplace/enrichment retorna objetos error mais ricos: category, retryable e statusCode opcionais.Criação automática / bulk — tax ID estrito
taxId deve ser apenas o identificador fiscal; valores fusionados com colunas extras são rejeitados com INVALID_TAX_ID.Transações — exchangeRate opcional (fallback)
POST /transactions e batch aceitam exchangeRate opcional por transação. Sem este campo, o comportamento permanece o mesmo (conversão automática).Usado somente quando a conversão automática falha. Semântica: unidades da moeda base por 1 unidade de currency; valor normalizado na base = amount × exchangeRate. rateSource: client-provided.Não conversíveis hoje (sem taxa automática): WLD (Worldcoin), ETH (Ethereum). Envie exchangeRate para valor normalizado na moeda base e regras que dependem de conversão.Ver Criar transação — Conversão de moeda.POST /entities/{entityId}/refresh — escopo unificado e sync seguro
Novos campos opcionais (retrocompatíveis quando omitidos):refreshScope:basic_data|all_active|selected(+providerCodesseselected).preserveName:truemantém o nome; omitido = sync legacy defullNamenormalizado.preserveEntityData: apenas comrefreshScope: "basic_data"—truepreenche vazios ementityData,falsesubstitui; omitido = não alterar ficha.
basic_data sempre só na entidade raiz (sem sócios), independente de depth.Ver Atualizar entidade. Payloads existentes sem esses campos mantêm o comportamento anterior.Aviso GUENO_CROSS_ENTITY_DUPLICATED
Quando Gu1 resolve referências duplicadas do provedor em outra entidade da mesma organização (metadata.kycCrossEntityDuplicates.matches):- Adiciona
GUENO_CROSS_ENTITY_DUPLICATEDawarningsda validação por sessão. - Se o provedor mapeou
approved, Gu1 define o status comoin_review(metadata.guenoCrossEntityDuplicateEscalation). - Não omitível: não pode constar em
omitWarnings(400) e bloqueia autoaprovação por omit.
omitWarnings.Gu1 Biometria (POST /api/kyc/biometric e /api/kyc/biometric/sessions)
Reautenticação após KYC aprovado: verificação por imagem ou sessão com UI hospedada (sessionUrl, iframeAllow, hostedSessionId, webhookUrl opcional, webhooks biometric.session_*, veredito Gu1 com rejectionCode). Produto global_gueno_biometric_kyc. Ver Verificação biométrica e Sessão biométrica.decision sempre inclui pares array + objeto por feature
Ao persistir (sync, webhook, ingest manual), o Gu1 normaliza decision para integradores lerem chaves singulares legacy ou arrays de forma intercambiável:id_verification↔id_verifications[0]liveness↔liveness_checks[0]face_match↔face_matches[0]aml_screening↔aml_screenings[0]ip_analysis↔ip_analyses[0]
array[0] prevalece e o objeto singular é sincronizado. Vale para GET de validação e webhooks KYC (payload.decision).Exemplos Mintlify atualizados com decision completo (sem branding de vendor; mídia como chaves kyc/...). Ver Eventos webhook KYC.Config do motor em POST /entities/{entityId}/analyze
Novo objeto opcional rulesEngineConfig: partialCoverage e omitCoverage (defaults false).Ver Analisar entidade.ejemplar em extractedData
Verificações de DNI argentino podem incluir extractedData.ejemplar (A–D) em validações KYC e registos de ID Verification (GET, sync, webhooks).Com doubleCheckRenaper: true, comparisonResults.ejemplar compara OCR vs RENAPER; mismatch adiciona RENAPER_EJEMPLAR_NOT_MATCH a warnings.Ver campos de extractedData e dupla verificação RENAPER.Dupla verificação RENAPER em validações KYC
ComdoubleCheckRenaper: true, metadata.responseDoubleChecks.renaper inclui comparisonResults, renaperBiometric (quando aplicável) e códigos RENAPER em warnings (ex.: RENAPER_TRAMITE_ID_NOT_MATCH, RENAPER_EXPIRY_NOT_MATCH) sem substituir avisos da verificação OCR KYC.Enforce (rejeição automática): somente se a verificação OCR KYC retornar o estado approved. Em in_review e rejected o chequeo é informativo e grava dados em metadata. POST /api/kyc/validations/{id}/approve a partir de in_review não reexecuta RENAPER.Ver Criar validação KYC e Aprovar validação.Produto marketplace *_check removido
- Removido: códigos
*_check,POST /integration-execution/marketplace/check, triggers/ações de regrascheck_completed/execute_check, e permissões RBACchecks:read/checks:execute. - Use em vez disso: o
*_enrichmentcorrespondente com Executar enrichment. - Compat legacy: payloads de create/import com
checks,executeAllActiveChecksou*_checkemautoExecuteIntegrations.enrichmentssão ignorados no parse.
Códigos estáveis e endpoints JSON de falhas batch
- Falhas por linha com
code+message— Catálogo. CSV inclui colunacode. - JSON:
GET /batch-import/transaction-jobs/{jobId}/failures,GET /batch-import/user-event-jobs/{jobId}/failures,GET /batch-import/entity-jobs/{jobId}/failures— incluemfailures[],jobFailureopcional,skips[]em entidades,truncated/failuresTotal(máx. 500). - CSV: mesmas rotas com sufixo
.csvpara download direto.
Atribuir matrizes de risco na atualização de entidade
PATCH /entities/{id}(ePATCH /entities/by-external-id/{externalId},PATCH /entities/by-tax-id/{taxId}): documentadosriskMatrixIds(string[]) eriskMatrixId(string | string[] | null) — mesma normalização do create. Apenas atribui matrizes; não executa o motor de regras (usar Analisar entidade ou triggers de ciclo de vida).- Mintlify atualizado em
/en/,/es/,/pt/em Atualizar entidade e Atualizar por ID externo.
configRulesExecution na criação de transação
POST /transactions: objeto opcional no bodyconfigRulesExecutioncomnotifications(boolean). Comfalse, a gu1 não envia notificações in-app da avaliação de regras (matriz / status). AçõescreateAlerte investigações permanecem iguais.- Padrão: omitir o objeto mantém o comportamento anterior na maioria das orgs (
notificationsefetivamentetrue). Paytime prod (3bc1f621-27d4-423e-9d64-86680bec2388) usanotifications: falsepor padrão. - Legacy KYT
POST /legacy/kyt/verifyTransaction: mesmo campo no body Gu2; Paytime prodnotifications: falsepor padrão se omitido. - Vale para regras sync e async (
asyncRules).
/en/ e /es/.POST /transactions e lote — campos de contraparte vinculados
Quando origem ou destino fica vinculado a pessoa/empresa (originEntityId / auto-link por external ou tax id), a gu1 sempre sobrescreve as colunas denormalizadas a partir da entidade antes do insert:originTaxId/destinationTaxId←entities.tax_idoriginExternalId/destinationExternalId←entities.external_id
POST /events/user — isNewDevice respeita o valor do integrador
- Se você enviar
isNewDevice: trueoufalse, a gu1 persiste exatamente esse valor (sem sobrescrita no servidor). - Se omitir o campo, a gu1 infere quando há
deviceId+deviceDetails(registro de dispositivos;truese o device for novo oufirstSeenAtestiver nos últimos 5 minutos); caso contráriofalse.
CSV plataforma: attributes.* e entityData.*
- Cabeçalhos com ponto (como transações nativas):
attributes.segment_tag,entityData.income,entityData.tradeName. entityData.<campo>semperson/company→ bucket conformetypeda linha.- Colunas sem prefixo permanecem em
attributes(retrocompat). - Ver Importar entidades (CSV).
Limites documentados (en / es / pt)
- Importações em lote — overview: matriz de arquivos por request, linhas por plano e manual vs automático em entidades.
- Páginas por endpoint com limites (entidades CSV, transações, eventos).
- Consulta limites em runtime:
GET /individual-organization/batch-upload-enabled.
Países na importação bulk (manual vs automático)
- Manual (
manual): qualquer ISO2 válido da plataforma (lote oucountry_code/countrypor linha). Sem pipeline Nosis/CPF. - Automático (
automatic): AR, BR e CL (dados básicos por tax ID, incl. enrichments Chile: ruts.info / BaseAPI). - Vale para
POST /batch-import/import/entities(CSV plataforma e CSV custom commappingId).
POST /batch-import/import/entities — enrichments no manual
- Modo manual multipart alinhado ao hub Manual:
autoExecuteIntegrations,monitoringe matrizes opcionais — sem pipeline Nosis/CPF. - Só CSV (sem enrichments explícitos) → entidade mínima, sem enrichments.
- Colunas CSV de enrichment por linha aplicam no manual;
depthsó no automático.
POST /batch-import/import/entities — padrão manual
- Sem
entityImportMode→manual(entidade mínima; enrichments só se pedidos). - Automático com
entityImportMode=automatic. Resposta202incluiimportMode.
POST /batch-import/import/entities — formato plataforma
mappingIdpassa a ser opcional quando o CSV usa cabeçalhos canônicos do hub (tax_id,type,country_code, … — template automático/manual).- Sem mudança para layouts custom: colunas arbitrárias ainda exigem
mappingId(mapeamento salvo). - CSV simples (
tax_id+typeapenas): enviecountry(ISO2, ex.AR) no form multipart como padrão do lote. - Paridade com transações: formato nativo → sem mapeamento; colunas custom → com mapeamento.
asyncRules ao criar transação
POST /transactions: flag opcionalasyncRulesem query ou body (padrãofalse). ComtrueeexecuteRulesdiferente defalse, a transação é criada na mesma request mas as regras rodam em background via fila de jobs. A resposta HTTP retorna na hora comrulesHit/rulesNoHitvazios, maisasyncRules: trueerulesEvaluationStatus: "queued".- Padrão inalterado: omitir
asyncRulesmantém execução síncrona erulesExecutionSummarycompleto — clientes existentes continuam iguais. - Legacy KYT
POST /legacy/kyt/verifyTransaction: mesmo flag via query ou campo no body Gu2. Paytime prod (3bc1f621-27d4-423e-9d64-86680bec2388) usa async por padrão se omitirem o flag;asyncRules=falseforça sync numa request. - Não vale para batch. Se Redis/fila indisponível, pode retornar 503
ASYNC_RULES_QUEUE_UNAVAILABLE(a transação pode já existir — conferir o body antes de reenviar).
Dupla verificação RENAPER em endpoints KYC standalone
POST /api/kyc/face-match:doubleCheckRenaperopcional (body ou query). Após face match aprovado: RENAPER biométrico + dados. RequerdocumentNumber,gender,personalNumber(fallback de entidade para DNI/gênero). Resposta comresponseDoubleChecks.POST /api/kyc/id-verification: mesmo flag; após OCR approved apenas chequeo dados RENAPER. Falha →declined+ códigos emwarnings.- Credenciais RENAPER da org (igual ao KYC por sessão). Timeout HTTP ≥ 60 s no face-match com double-check.
KYT — triggers separados: mudança de status vs atualização de campos
PATCH …/changeStatusexecuta regras/matrizes com triggerstatus_changed(trigger_transaction_status_changed), nãoupdated.PATCH /transactions/{id}comexecuteRules=truecontinua usandoupdated(trigger_transaction_updated) para alterações de metadata, deviceDetails, channel ou reason.- Migração: reconfigurar regras que rodavam na mudança de status para o novo trigger (Rule Builder: Mudança de status; matrizes:
transaction_status_changed).
Atualização parcial de transação
PATCH /transactions/{id}ePATCH /transactions/external/{externalId}: atualizarmetadata(merge superficial),deviceDetails(merge superficial emdevice_details),channel(nullable) e/oureason(enum). Requertransactions:edit.- Query
executeRules=truereexecuta regras KYT com triggerupdated— não regras de mudança de status. - Auditoria
transaction_updatede webhooktransaction.updatedcom mapachanges(incluideviceDetailsquando aplicável).
Eventos de usuário — has-events por external ID ou tax ID
GET /events/user/entity/has-events(novo): verificação sim/não sem UUID interno. Query params:entity_id,entity_external_idoutax_id(pelo menos um obrigatório). Prioridade:entity_id→entity_external_id→tax_id; tax ID com normalização (caracteres não alfanuméricos removidos).- A resposta inclui
entityIdresolvido para chamar Listar por entidade quandohasEventsfor true. GET /events/user/entity/{entityId}/has-eventscontinua suportado (contrato inalterado).
KYC por sessão — avisos de análise de dispositivo e IP
GET /api/kyc/validations/:id(e rotas de sync/webhook): o arraywarningsagora funde códigosriskdedecision.ip_analyses[].warnings[](e legacydecision.ip_analysis.warnings), além de verificação de documento, liveness, face match e AML.- Oito códigos do provedor (ex.:
PRIVATE_NETWORK_DETECTED,DUPLICATED_DEVICE_FINGERPRINT,IP_ADDRESS_IN_BLOCKLIST). Ver Códigos de aviso KYC — Análise de dispositivo e IP. - Os mesmos códigos são válidos em
omitWarningsemPOST /api/kyc/validationsao autoaprovar sessões emin_review.
warnings armazenado até o próximo sync; consulte novamente ou sincronize para preencher códigos de IP analysis em linhas antigas.ID Verification — extractedData mais completo
POST /api/kyc/id-verificatione auditoria list/get passam a persistir e devolver umextractedDatamais amplo: identidade (personalNumber,taxNumber,placeOfBirth, …),providerStatus,warningMeta(ex.: sessão duplicada), pontuações de qualidade,extraFields,mrz,parsedAddress,barcodesquando o serviço ID Verification da Gu1 os devolve.warningscontinua como array de códigos de risco para i18n; metadados estruturados de duplicado ficam emwarningMetadentro deextractedData.- URLs externas de imagem e base64 não são devolvidas; imagens enviadas estão em imagens ID Verification.
debugProviderResponseapenas em ambientes não produtivos da API Gu1 (payload de verificação sanitizado, sem imagens).
Horário operativo por entidade (global)
- Entidades: campo opcional na raiz
operationalHours(timezoneenum +weekly). Colunaentities.operational_hours. Ver Criar entidade. - Transações: enum
transaction_time_zoneampliado (fusos do Brasil).timeZoneindependente deoperationalHours.transactedAt: gravado em UTC; ISO comZinalterado para clientes atuais; datetime local +timeZoneopcional converte para UTC. - Regras: operadores
outside_entity_operational_hourseinside_entity_operational_hoursemtransactedAt(value:origin|destination).
timeZone em transações
- Banco de dados: Nova coluna nullable
time_zoneemtransactionscom enumtransaction_time_zone(valores IANA comoAmerica/Argentina/Buenos_Aires,UTC, etc.). Registros existentes permanecemnull. - API:
timeZoneopcional emPOST /transactionse criação em lote; retornado emGET /transactions/{id}eGET /transactions/external/{externalId}comostring | null.
validateExistingEntity (criação de transações)
POST /transactions: campo opcionalvalidateExistingEntity(padrãofalse). Comtrue, cada identificador de origem/destino enviado deve existir na org; senão 400INVALID_ENTITY_REFERENCESe a linha não é criada.- Lote (
POST /transactions/batch, upload, JSON): padrão continuatrue. Import permissivo:validateExistingEntity: false. - Legacy KYT
POST /legacy/kyt/verifyTransaction: mesmo campo no body Gu2.
excludeEnrichments na criação de entidades
autoExecuteIntegrations e autoExecuteIntegrationsShareholders aceitam excludeEnrichments: códigos de provedor excluídos do conjunto final de enriquecimentos (inclusive com executeAllActiveEnrichments: true).executeAllActiveChecks e checks não fazem mais parte do contrato público desses objetos; payloads legados que os enviem são ignorados no parse.Ver Criar entidade (automática).Novo: Documentação da Página de Onboarding Hospedada
Documentação completa para a Página de Onboarding Hospedada - a maneira mais rápida de implementar verificação KYC sem código.Novidades
Documentação da Página Hospedada:- ✅ Guia completo de parâmetros de personalização (branding, cores, layout)
- ✅ Configuração de regras de validação (verificação de idade, métodos de captura, detecção de duplicados)
- ✅ Regras de validação de documentos (QR/código de barras, MRZ, datas de validade, vivacidade)
- ✅ Guia de integração passo a passo com exemplos de código
- ✅ Diagrama de fluxo visual mostrando o processo completo
- ✅ Melhores práticas de segurança para gerenciamento de sessões
- ✅ Confirmação de design mobile-responsive
- 📱 Design mobile-responsive para todos os dispositivos
- 🎨 Personalização completa de cores, branding e layout
- 🔒 Diretrizes de segurança abrangentes
- 📊 Diagramas de sequência visuais para clareza
- 🌐 Informações de canal de suporte para alterações de configuração
Idiomas
Toda a documentação disponível em:- 🇺🇸 English
- 🇪🇸 Español
- 🇧🇷 Português
Impacto
- Implementação mais rápida para soluções sem código
- Orientação clara sobre opções de personalização
- Maior conscientização sobre segurança
- Melhor compreensão do fluxo da página hospedada
Refinamento de Páginas KYC Baseado em Feedback do Cliente
Grande melhoria na documentação de KYC baseada em 14 perguntas do feedback de clientes.Novidades
Documentação de Fluxo Completo:- ✅ Tabela comparativa completa: Criação Automática vs Manual
- ✅ Guia completo de configuração de Matriz de Risco com instruções do dashboard
- ✅ Esclarecimento sobre recurso de acionistas (apenas KYB, não KYC)
- ✅ Referência de códigos de provedores com exemplos de uso
- ✅ Seção detalhada de gestão de créditos com custos e fluxos de trabalho
- ✅ Explicação Webhooks vs polling manual
- ✅ Tabela comparativa KYC Completo vs Verificações Individuais
- ✅ Aviso completo sobre segurança de comparação facial para bancos/fintech
- ✅ Tabela melhorada de endpoints API com casos de uso
- ✅ Diagrama de sequência completo mostrando o fluxo completo
- ✅ Esclarecimento Sandbox vs Produção
- ✅ Tratamento de entidades duplicadas com exemplos de código
- ✅ Documentação expandida de integrationCode
- ✅ Campos opcionais marcados com exemplos (attributes, entityData)
- ✅ Exemplos de criação de entidade mínima vs completa
Idiomas
Todas as melhorias disponíveis em:- 🇺🇸 English
- 🇪🇸 Español
- 🇧🇷 Português
Impacto
- 14 perguntas de cliente respondidas inline
- 12 arquivos de documentação atualizados
- 0 links quebrados
- Experiência de onboarding de desenvolvedores melhorada
Documentação Multi-idioma Aprimorada
Estrutura de documentação melhorada com traduções completas em espanhol e português.Mudanças
- Cobertura completa de tradução para KYC, KYB e Monitoramento de Transações
- Terminologia consistente em todos os idiomas
- Exemplos específicos do idioma (CPF para Brasil, DNI para Espanha, etc.)
Idiomas Disponíveis
- Inglês (EN) - Principal
- Espanhol (ES) - Completo
- Português (PT) - Completo
Lançamento da Documentação gu1
Lançamento inicial da documentação API completa.Funcionalidades Principais
- Referência API completa para todos os endpoints
- Guias de casos de uso (KYC, KYB, Monitoramento de Transações)
- Guias de integração de webhooks
- Tutoriais interativos
- Suporte multi-idioma
Componentes
- API de entidades pessoa
- API de entidades empresa
- Fluxos de validação KYC
- Monitoramento de transações
- Motor de regras
- Matrizes de risco
- Alertas e investigações