Verifying matches
Learn how to simulate and explain matching behavior between two entities using configured or custom match rules.
Use the verify matches API operation to simulate how two entities would match based on your match rules. You can provide either URIs of existing tenant entities or raw JSON definitions in the request. The operation supports default match rules from your configuration, specific match rule URIs via query parameters, or custom ad hoc rules defined directly in the request body. This makes it useful for rule tuning, diagnostics, and understanding match outcomes.
- Match tokens
- Match attributes
When both attribute values come from the same crosswalk, they may be treated as operational values (OV) during in-memory match document generation. This can result in different match behavior than in persisted tenant data. To better reflect actual tenant logic, use entity URIs and set documentsFromDatabase to true
in your request.
- intersection: This field must not be empty.
- matched: This field is
true
if matched by both documents and tokens; otherwise, it isfalse
. - matchedByDocuments: This field is
true
if matched by documents; otherwise, it isfalse
.
Request
POST {TenantURL}/entities/_verifyMatches
The specification of this operation is available on the Developer Portal.
Name | Required | Description | Examples | |
---|---|---|---|---|
Headers | CustomerTenant | Yes | Customer Tenant ID. | |
DataTenant | Yes | Data Tenant ID. | ||
URI Parameters | rules | Optional | A comma-separated list of match group URIs. If omitted, the default match groups are used. You can also define custom rules directly in the request body using the matchGroups parameter. |
|
show | Optional |
Determines the information that will be available in a response. The user can assign the following values:
| If show is set to full, the output has the following format:
| |
documentsFromDatabase | Optional | The default value is false. If set to true, for existing entities, their actual documents from database will be used for explanation. If set to false, the documents will be regenerated for explanation (expected behavior). | ||
checkOvercollisionedTokens | Optional | The default value is true . When it is true , the operation checks if the match token phrases are marked as overcollisioned in the database. If yes, the match token phrases are represented as overcollisioned and removed from the intersection list. If set to false , the tokens list might contain overcollisioned tokens. | ||
time | Optional | If this parameter is specified, it returns the match document and the match token phrases built for the entity according to the entity state and business configuration state at the specified time. If you specify the time parameter, then the db parameter is ignored and effectively set to false . When the time parameter is specified, the operation results may show some discrepancy based on the following:
| ||
Body | Yes | A pair of entities to be matched. |
|
Request
Get the match explanation for each matching group.
Example
POST /Abc/entities/_verifyMatches
{
"first":{
"type":"configuration/entityTypes/HCP",
"attributes":{
"LastName":[
{
"value":"Stark"
}
],
"FirstName":[
{
"value":"Ronald"
}
],
"Address":[
{
"value":{
"City":[
{
"value":"winterfell"
}
],
"StateProvince":[
{
"value":"north"
}
],
"Country":[
{
"value":"westeros"
}
]
}
}
]
},
"crosswalks":[
{
"type":"configuration/sources/TWITTER",
"value":"test1"
}
]
},
"second":{
"uri":"entities/03w0bJo"
},
"matchGroups":[
{
"uri":"configuration/entityTypes/HCP/matchGroups/RelevanceBasedRule",
"label":"Automatic on load Addresses",
"type":"relevance_based",
"useOvOnly":"false",
"rule":{
"exact":[
"configuration/entityTypes/HCP/attributes/FirstName",
"configuration/entityTypes/HCP/attributes/LastName"
],
"weights":[
{
"attribute":"configuration/entityTypes/HCP/attributes/FirstName",
"weight":"1"
},
{
"attribute":"configuration/entityTypes/HCP/attributes/LastName",
"weight":"1"
}
],
"actionThresholds":[
{
"type":"potential_match",
"threshold":"0.6-1.0"
}
]
}
},
{
"uri":"configuration/entityTypes/HCP/matchGroups/RelevanceExactFirstName",
"label":"Will be bypassed",
"type":"relevance_based",
"useOvOnly":"false",
"rule":{
"exact":[
"configuration/entityTypes/HCP/attributes/FirstName"
],
"weights":[
{
"attribute":"configuration/entityTypes/HCP/attributes/FirstName",
"weight":"1"
}
],
"actionThresholds":[
{
"type":"potential_match",
"threshold":"0.6-1.0"
}
]
}
},
{
"uri":"configuration/entityTypes/HCP/matchGroups/SuspectExactMiddleName",
"label":"Exact middle name",
"type":"suspect",
"useOvOnly":"false",
"rule":{
"exact":[
"configuration/entityTypes/HCP/attributes/MiddleName"
]
}
}
]
}
Response
{
"summary": [
"There are common match tokens. These entities are considered as match candidates and will be checked according to the list of common applicable match rules.",
"There are bypassed rules for the given entity type. Bypassed match rules do not participate in the matching process.",
"No manually set 'not-matches' are found for the entities"
],
"matchTokensSummary": {
"firstTotal": 1,
"secondTotal": 1,
"common": [
"ronald:stark"
]
},
"applicableMatchGroups": {
"first": [
"configuration/entityTypes/HCP/matchGroups/RelevanceBasedRule",
"configuration/entityTypes/HCP/matchGroups/RelevanceExactFirstName"
],
"second": [
"configuration/entityTypes/HCP/matchGroups/RelevanceBasedRule",
"configuration/entityTypes/HCP/matchGroups/RelevanceExactFirstName"
],
"both": [
"configuration/entityTypes/HCP/matchGroups/RelevanceBasedRule",
"configuration/entityTypes/HCP/matchGroups/RelevanceExactFirstName"
],
"bypassed": [
"configuration/entityTypes/HCP/matchGroups/RelevanceExactFirstName"
]
},
"rules": {
"configuration/entityTypes/HCP/matchGroups/RelevanceBasedRule": {
"label": "Automatic on load Addresses",
"matched": true,
"matchAction": "POTENTIAL_MATCH",
"matchedByDocuments": true,
"bypassed": false,
"relevance": 1.0,
"useOvOnly": false,
"matchTokens": {
"first": {
"foundInMatchTables": false,
"tokens": [
"ronald:stark"
],
"tokensGenerated": 1
},
"second": {
"foundInMatchTables": false,
"tokens": [
"ronald:stark"
],
"tokensGenerated": 1
},
"intersection": {
"tokens": [
"ronald:stark"
]
}
},
"rule": {
"relevance": 1.0,
"and": [
{
"exact": {
"FirstName": {
"ignoreInToken": false,
"relevance": 1.0
},
"LastName": {
"ignoreInToken": false,
"relevance": 1.0
}
},
"relevance": 1.0
}
]
}
},
"configuration/entityTypes/HCP/matchGroups/RelevanceExactFirstName": {
"label": "Will be bypassed",
"matched": false,
"matchAction": "POTENTIAL_MATCH",
"matchedByDocuments": true,
"bypassed": true,
"relevance": 1.0,
"useOvOnly": false,
"matchTokens": {
"first": {
"foundInMatchTables": false,
"tokens": [
"ronald"
],
"tokensGenerated": 1
},
"second": {
"foundInMatchTables": false,
"tokens": [
"ronald"
],
"tokensGenerated": 1
},
"intersection": {
"tokens": [
"ronald"
]
}
},
"rule": {
"relevance": 1.0,
"and": [
{
"exact": {
"FirstName": {
"ignoreInToken": false,
"relevance": 1.0
}
},
"relevance": 1.0
}
]
}
},
"configuration/entityTypes/HCP/matchGroups/SuspectExactMiddleName": {
"label": "Exact middle name",
"matched": false,
"matchedByDocuments": false,
"bypassed": false,
"useOvOnly": false,
"matchTokens": {
"first": {
"foundInMatchTables": true,
"tokensGenerated": 0
},
"second": {
"foundInMatchTables": true,
"tokensGenerated": 0
},
"intersection": {}
},
"rule": {
"and": [
{
"exact": {
"MiddleName": {
"match": false,
"ignoreInToken": false
}
}
}
]
},
"manualMatches": {
"notMatches": {
"03w0bJo": [
{
"id": "02Yae1",
"updatedTime": 1699463284016,
"updatedBy": "User"
}
]
},
"asMatches": {
"03w0bJo": [
{
"id": "01oRn9",
"updatedTime": 1699463274839,
"updatedBy": "User"
}
]
},
"effectiveNotMatches": {
"03w0bJo": [
"02Yae1"
]
},
"effectiveAsMatches": {
"03w0bJo": [
"01oRn9"
]
}
}
}
}
}
Field | Description |
---|---|
foundInMatchTables | Indicates whether C* MATCH_TOKENS CF contains all the listed tokens. |
tokens | Provides a list of all the match tokens generated for the match rules configured for the entity type. |
intersection | Provides a list of common tokens for the entities. |
setAsNotMatch | Indicates that the entities are marked as "Not a Match". |
alreadySubscribed | Shows that the CT entity is already subscribed to the DT entity |
label | Displays the description of the match rule |
useOvOnly | Displays the OV strategy chosen for the match rule. |
ignoreInToken | Excludes the particular attribute from the match token. |
summary | Contains information, for the checked entities, on:
|
matchTokensSummary | Contains the following details:
|
applicableMatchGroups | Displays the list of match rules applicable to the first , second , or both entities in the request body. Also, displays the bypassed rules if they exist.Note: If a rule is bypassed, the matched field will always be false. |
manualMatches | Displays information when any of the entities in the request body are manually set asMatches , or as notMatches . |