Usar la API de Lookup en DQE One Standalone

Support DQE
Support DQE
  • Actualización

Una vez que haya indexado registros con un proceso Index Records (vea Create and launch a process in DQE One Standalone), sus propias aplicaciones pueden consultar ese índice en tiempo real mediante una pequeña API REST — para impulsar una búsqueda con autocompletado, o para comprobar si existe un duplicado antes de crear un nuevo registro.

Autenticación

Los 4 endpoints siguientes usan las mismas credenciales que el servidor MCP y el resto de la API REST de DQE One Standalone: HTTP Basic Auth con el email de su cuenta y su token de API.

# Linux / macOS
echo -n "you@example.com:your_api_token" | base64
# Windows PowerShell
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("you@example.com:your_api_token"))

Encuentre o regenere su token en My Account > API Token. Envíelo como Authorization: Basic <valor base64> en cada solicitud.

Use las credenciales de una cuenta real y existente — una cabecera bien formada que haga referencia a un email que no existe actualmente devuelve un error del servidor en lugar de una respuesta "no autorizado" limpia.

Estos endpoints también permiten solicitudes de origen cruzado, por lo que puede llamarlos directamente desde un navegador (por ejemplo, para crear un cuadro de búsqueda en tiempo real). Si lo hace, tenga en cuenta que su token de API sería entonces visible para cualquiera que inspeccione la página — para cualquier uso más allá de una herramienta interna de confianza, llame a estos endpoints desde su propio backend y mantenga el token en el servidor.

Qué endpoint usar

Endpoint Qué hace Úselo para
GET /api/searchRecords Búsqueda de texto literal/fonética en todos los campos indexados — sin reglas de coincidencia de duplicados implicadas Búsqueda con autocompletado
POST /api/lookupRecords Todos los registros candidatos cuyos datos podrían coincidir con los suyos, usando las reglas de coincidencia de su RuleSet — sin puntuar ni clasificar Mostrar una lista de posibles coincidencias para que una persona la revise
POST /api/lookupGolden La única mejor coincidencia, con una puntuación de certeza, usando el mismo motor de coincidencias que Unify Process Comprobación de duplicados en tiempo real antes de crear un registro

GET /api/searchGolden también existe y toma los mismos parámetros que searchRecords — pero actualmente ejecuta exactamente la misma búsqueda literal/fonética, no una búsqueda de coincidencia de duplicados. A pesar de su nombre, no devuelve un registro golden ni aplica ninguna regla de coincidencia. Use lookupGolden para eso.

Identificar qué índice consultar

Cada endpoint necesita saber los datos de qué proceso Index Records debe buscar. Proporcione uno de los dos:

  • pid — el id del proceso Index Records.
  • recordType — el nombre del objeto/tabla que indexa (por ejemplo, un nombre de objeto de Salesforce o Dynamics). Standalone lo resuelve al proceso Index Records publicado, no archivado, creado más recientemente que indexa ese objeto — si ninguno coincide, obtendrá un error en lugar de recurrir silenciosamente a otra cosa.

Si no se proporciona ninguno de los dos, la solicitud falla con {"status":"error","error":"Either 'pid' or 'recordType' must be provided"}.

GET /api/searchRecords

Parámetros (cadena de consulta):

Parámetro Obligatorio Descripción
search Sí El texto a buscar
pid / recordType Uno de los dos Qué índice consultar

Devuelve un array JSON de registros coincidentes — cada uno es el conjunto completo de campos almacenados en el momento de la indexación, limitado a 50 resultados (sin paginación). No hay puntuación de distancia: un registro coincide con uno de los niveles de búsqueda siguientes, o no coincide en absoluto.

Standalone prueba cada nivel en orden y se detiene en cuanto uno de ellos devuelve suficientes resultados:

  1. Una coincidencia exacta de una palabra completa.
  2. Una coincidencia parcial/por prefijo (útil mientras la persona todavía está escribiendo).
  3. Una coincidencia fonética en francés.
  4. Una coincidencia fonética genérica.

En la práctica, esto significa que un término de búsqueda corto o ligeramente mal escrito puede seguir mostrando el registro correcto — pero también significa que una búsqueda puede, de vez en cuando, devolver un registro fonéticamente similar que no es el que buscaba (por ejemplo, buscar "Dupont" puede también mostrar "Dupond").

Ejemplo:

curl -G "https://your-standalone-url/api/searchRecords" \
  --data-urlencode "search=Dupont" \
  --data-urlencode "recordType=Contact" \
  -H "Authorization: Basic <valor base64>"

POST /api/lookupRecords

Cuerpo: un objeto JSON de pares campo/valor sobre los que buscar coincidencias, más pid o recordType (en el cuerpo o como parámetros de consulta), por ejemplo:

{
  "pid": 12,
  "LastName": "Dupont",
  "Email": "a@b.com"
}

Ejemplo:

curl -X POST "https://your-standalone-url/api/lookupRecords" \
  -H "Authorization: Basic <valor base64>" \
  -H "Content-Type: application/json" \
  -d '{"recordType": "Contact", "LastName": "Dupont", "Email": "a@b.com"}'

Devuelve un array JSON de todos los registros candidatos que las reglas de coincidencia de su RuleSet consideran una posible coincidencia — sin límite en el número de resultados y sin clasificación/puntuación por registro. Trátelo como una lista reducida para que usted mismo la afine, no como una respuesta final.

POST /api/lookupGolden — comprobación de duplicados en tiempo real

Mismo cuerpo de solicitud que lookupRecords. Este es el único endpoint que aplica una puntuación completa — reutiliza los mismos algoritmos de coincidencia y los ajustes de Threshold configurados en la pestaña Matching de su RuleSet.

curl -X POST "https://your-standalone-url/api/lookupGolden" \
  -H "Authorization: Basic <valor base64>" \
  -H "Content-Type: application/json" \
  -d '{"recordType": "Contact", "LastName": "Dupont", "Email": "a@b.com"}'

Respuesta, si se encuentra una coincidencia:

{
  "certainty": 0.92,
  "matched_by": "Name + Email",
  "record": { "LastName": "Dupont", "Email": "a@b.com", ... }
}
  • certainty — una puntuación de 0 a 1 (1 = coincidencia exacta), derivada de la puntuación de distancia de la regla de coincidencia.
  • matched_by — el nombre de la regla de coincidencia que produjo la mejor puntuación.
  • record — el registro indexado completo. Si su proceso Index Records tiene un campo Parent Id configurado, este es el padre del registro coincidente en lugar de la propia coincidencia.

Si nada coincide lo suficientemente cerca como para satisfacer el Threshold de alguna regla, la respuesta es un objeto vacío {} — trátelo como "no se encontró ningún duplicado".

Mantener el índice actualizado

No hay indexación incremental — cada vez que se ejecuta el proceso Index Records, reconstruye por completo su índice desde cero. Para mantener los resultados actualizados:

  • Vuelva a ejecutar el proceso manualmente, o prográmelo (vea Schedule a process in DQE One Standalone) — la frecuencia mínima disponible es cada 15 minutos.
  • Cambiar las reglas de coincidencia del RuleSet surte efecto de inmediato en estos 4 endpoints sin necesidad de volver a ejecutar nada — pero esto solo afecta a cómo se puntúan las futuras consultas, no a los datos ya indexados.

Gestión de errores

Casi todos los errores — un pid/recordType ausente, un recordType desconocido, un cuerpo de solicitud malformado — se devuelven como una respuesta HTTP 200 normal con {"status":"error","error":"..."} en el cuerpo. El único caso que devuelve un estado HTTP distinto es el fallo de autenticación (401). Compruebe siempre el cuerpo de la respuesta, no solo el código de estado HTTP.

Límites

  • searchRecords/searchGolden devuelven como máximo 50 resultados, sin paginación — reduzca su término de búsqueda si necesita ver más.
  • No hay limitación de velocidad integrada en ninguno de estos 4 endpoints. Si los llama desde una integración de alto tráfico (por ejemplo, un cuadro de búsqueda de cara al público), añada su propia limitación en su lado en lugar de confiar en que DQE One Standalone se proteja a sí mismo.

Artículos relacionados

Relacionada con

¿Fue útil este artículo?

Usuarios a los que les pareció útil: 0 de 0