Skip to content

Data Matching API (3)

This API provides services for executing Business Partner Duplicate Matching process.

Download OpenAPI description
Languages
Servers
Production

https://api.cdq.com/data-matching/rest/

Analytics

Provides functionalities for generating and polling data matching reports. These endpoints support creating reports and checking their status, ensuring comprehensive analytics for data matching activities.

Operations

Business Partner

Provides functionalities for managing business partners. These endpoints support matching business partners against data matching definitions, ensuring comprehensive analytics for data matching activities.

Data Matching

Provides functionalities for managing Data Matching Definitions, which are configurations for matching jobs to identify duplicates or link records across data sources. These endpoints support creating, reading, updating, and deleting these configurations.

Operations

Create Data Matching Definition

Request

Create a new Data Matching Definition with the given configuration.

Configuration example:

  <?xml version="1.0" standalone="no" ?>
  <duke>
      <object class="no.priv.garshol.duke.comparators.QGramComparator" name="NameComparator">
          <param name="formula" value="DICE"/>
          <param name="q" value="3"/>
      </object>
      <schema>
          <threshold>0.7</threshold>
          <property type="ignore">
              <name>STORAGE_ID</name>
          </property>
          <property type="ignore">
              <name>DATA_SOURCE_ID</name>
          </property>
          <property type="id">
              <name>BUSINESS_PARTNER_ID</name>
          </property>
          <property lookup="required">
              <name>COUNTRY_SHORTNAME</name>
              <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
              <low>0.0</low>
              <high>0.5</high>
          </property>
          <property lookup="true">
              <name>NAME</name>
              <comparator>NameComparator</comparator>
              <low>0.1</low>
              <high>0.9</high>
          </property>
      </schema>
      <database class="no.priv.garshol.duke.databases.LuceneDatabase">
          <param name="max-search-hits" value="100"/>
          <param name="min-relevance" value="0.9"/>
          <param name="fuzzy-search" value="true"/>
          <param name="boost-mode" value="INDEX"/>
      </database>

      <data-source class="cdq.cdl.matching.datasource.MatchingDataSource">
          <column
                  cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner" name="businessPartner.address.country.shortName" property="COUNTRY_SHORTNAME"/>
          <column
                  cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"
                  configProperty="COUNTRY_SHORTNAME" name="businessPartner.names[0].value" property="NAME"/>
      </data-source>
  </duke>
Security
apiKey
Bodyapplication/jsonrequired
namestring<= 30 charactersrequired

A human-readable Name for the Data Matching Definition instance.

Example: "Custom Matching Definition Name"
typestring(MatchingType)required

Type of the matching configuration.

Enum ValueDescription
DEDUPLICATION

The matching configuration is used to identify duplicates in a storage.

LINKAGE

The matching configuration is used to identify links between records in different storages.

Example: "DEDUPLICATION"
xmlDukeConfigurationstringrequired

Holds the Duke XML configuration for data matching.

Example: "<duke>...</duke>"
reportConfigurationobject(ReportConfiguration)

Configuration for generating reports related to the Data Matching Definition.

goldenRecordConfigurationobject(GoldenRecordConfiguration)

Configuration for creating Golden Records in the context of Data Matching.

workspaceobject(Workspace)

Collaboration space to share/configure configurations.

curl -i -X POST \
  https://api.cdq.com/data-matching/rest/datamatchingdefinitions \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "name": "Custom Matching Definition Name",
    "type": "DEDUPLICATION",
    "xmlDukeConfiguration": "<duke>...</duke>",
    "reportConfiguration": {
      "header": [
        {
          "attributeJsonPath": "attributeJsonPath",
          "columnName": "External ID"
        }
      ]
    },
    "goldenRecordConfiguration": {
      "decisionStrategy": {
        "root": {
          "rule": {
            "type": "HAS_VALUE",
            "jsonPath": "attributeJsonPath",
            "valueType": "TEXT",
            "expectedValues": [
              "expectedValue"
            ]
          },
          "yesBranch": {},
          "noBranch": {}
        }
      },
      "creationStrategy": {
        "type": "CONSTANT",
        "protectedAttributes": [
          "External ID"
        ],
        "recordExclusionRules": [
          {
            "type": "HAS_VALUE",
            "jsonPath": "attributeJsonPath",
            "valueType": "TEXT",
            "expectedValues": [
              "expectedValue"
            ]
          }
        ],
        "attributeEnhancementRules": [
          {
            "attributes": [
              "External ID"
            ],
            "constraintChain": {
              "constraints": [
                {
                  "expectedValues": []
                }
              ],
              "allRecordsShouldMatch": "true",
              "constraintChainType": "AND"
            },
            "creationType": "CONSTANT",
            "creationConstant": "constantValue",
            "executionType": "SET",
            "fallbackExecutionType": "SET"
          }
        ]
      }
    },
    "workspace": {
      "id": "c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4"
    }
  }'

Responses

OK

Bodyapplication/json
idstring(DataMatchingDefinitionId)

Id of the data matching definition.

Example: "6461e6113b1865304b3038b6"
namestring<= 30 characters

A human-readable name for the Data Matching Definition instance.

Example: "Custom Matching Definition Name"
creatorUsernamestring(UserId)

Unique ID of a user.

Example: "johndoe"
creatorOrganizationstring(OrganizationId)

Uniquely identifying ID of the organization.

Example: "cdq_monitor"
createdAtstring(CreatedAt)

Date of creation (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
lastModifiedAtstring(ModifiedAt)

Date of modification (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
typestring(MatchingType)

Type of the matching configuration.

Enum ValueDescription
DEDUPLICATION

The matching configuration is used to identify duplicates in a storage.

LINKAGE

The matching configuration is used to identify links between records in different storages.

Example: "DEDUPLICATION"
xmlDukeConfigurationstring

Holds the Duke XML configuration for data matching.

Example: "<duke>...</duke>"
reportConfigurationobject(ReportConfiguration)

Configuration for generating reports related to the Data Matching Definition.

goldenRecordConfigurationobject(GoldenRecordConfiguration)

Configuration for creating Golden Records in the context of Data Matching.

workspaceobject(Workspace)

Collaboration space to share/configure configurations.

Response
application/json
{ "id": "6461e6113b1865304b3038b6", "name": "Custom Matching Definition Name", "creatorUsername": "johndoe", "creatorOrganization": "cdq_monitor", "createdAt": "2025-08-15T11:08:26Z", "lastModifiedAt": "2025-08-15T11:08:26Z", "type": "DEDUPLICATION", "xmlDukeConfiguration": "<duke>...</duke>", "reportConfiguration": { "header": [] }, "goldenRecordConfiguration": { "decisionStrategy": {}, "creationStrategy": {} }, "workspace": { "id": "c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4" } }

List Data Matching Definitions

Request

Read a page of existing Data Matching Definitions.

Security
apiKey
Query
pageinteger(int32)>= 0

Number of the retrieved result page.

Default 0
Example: page=1
pageSizeinteger(int32)>= 1

Maximum number of items to be returned in the result page.

Default 20
Example: pageSize=20
matchingTypestring(MatchingType)

Type of the matching configuration.

Enum ValueDescription
DEDUPLICATION

The matching configuration is used to identify duplicates in a storage.

LINKAGE

The matching configuration is used to identify links between records in different storages.

Example: matchingType=DEDUPLICATION
workspaceIdstring(WorkspaceId)

ID of the workspace.

Example: workspaceId=c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4
curl -i -X GET \
  https://api.cdq.com/data-matching/rest/datamatchingdefinitions \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
pageinteger(Page)>= 0

Current page number.

Default 0
Example: "1"
pageSizeinteger(PageSize)[ 1 .. 1000 ]

Number of items per page.

Default 10
Example: "100"
numberOfPagesinteger(int32)

The number of pages available.

Example: "3"
totalinteger(PageTotal)

Total number of items which can be paged.

Example: "67"
valuesArray of objects(DataMatchingDefinition)

List of Data Matching Definitions.

Response
application/json
{ "page": "1", "pageSize": "100", "numberOfPages": "3", "total": "67", "values": [ {} ] }

Read Data Matching Definition

Request

Read an existing Data Matching Definition by its ID.

Security
apiKey
Path
idstring(DataMatchingDefinitionId)required

ID of the Data Matching Definition.

Example: 6461e6113b1865304b3038b6
curl -i -X GET \
  https://api.cdq.com/data-matching/rest/datamatchingdefinitions/6461e6113b1865304b3038b6 \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
idstring(DataMatchingDefinitionId)

Id of the data matching definition.

Example: "6461e6113b1865304b3038b6"
namestring<= 30 characters

A human-readable name for the Data Matching Definition instance.

Example: "Custom Matching Definition Name"
creatorUsernamestring(UserId)

Unique ID of a user.

Example: "johndoe"
creatorOrganizationstring(OrganizationId)

Uniquely identifying ID of the organization.

Example: "cdq_monitor"
createdAtstring(CreatedAt)

Date of creation (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
lastModifiedAtstring(ModifiedAt)

Date of modification (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
typestring(MatchingType)

Type of the matching configuration.

Enum ValueDescription
DEDUPLICATION

The matching configuration is used to identify duplicates in a storage.

LINKAGE

The matching configuration is used to identify links between records in different storages.

Example: "DEDUPLICATION"
xmlDukeConfigurationstring

Holds the Duke XML configuration for data matching.

Example: "<duke>...</duke>"
reportConfigurationobject(ReportConfiguration)

Configuration for generating reports related to the Data Matching Definition.

goldenRecordConfigurationobject(GoldenRecordConfiguration)

Configuration for creating Golden Records in the context of Data Matching.

workspaceobject(Workspace)

Collaboration space to share/configure configurations.

Response
application/json
{ "id": "6461e6113b1865304b3038b6", "name": "Custom Matching Definition Name", "creatorUsername": "johndoe", "creatorOrganization": "cdq_monitor", "createdAt": "2025-08-15T11:08:26Z", "lastModifiedAt": "2025-08-15T11:08:26Z", "type": "DEDUPLICATION", "xmlDukeConfiguration": "<duke>...</duke>", "reportConfiguration": { "header": [] }, "goldenRecordConfiguration": { "decisionStrategy": {}, "creationStrategy": {} }, "workspace": { "id": "c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4" } }

Update Data Matching Definition

Request

Update an existing Data Matching Definition with the given configuration.

Security
apiKey
Path
idstring(DataMatchingDefinitionId)required

ID of the Data Matching Definition.

Example: 6461e6113b1865304b3038b6
Bodyapplication/jsonrequired
namestring<= 30 charactersrequired

A human-readable name for the Data Matching Definition instance.

Example: "Custom Matching Definition Name"
typestring(MatchingType)required

Type of the matching configuration.

Enum ValueDescription
DEDUPLICATION

The matching configuration is used to identify duplicates in a storage.

LINKAGE

The matching configuration is used to identify links between records in different storages.

Example: "DEDUPLICATION"
xmlDukeConfigurationstringrequired

Holds the Duke XML configuration for data matching.

Example: "<duke>...</duke>"
reportConfigurationobject(ReportConfiguration)

Configuration for generating reports related to the Data Matching Definition.

goldenRecordConfigurationobject(GoldenRecordConfiguration)

Configuration for creating Golden Records in the context of Data Matching.

workspaceobject(Workspace)

Collaboration space to share/configure configurations.

curl -i -X PUT \
  https://api.cdq.com/data-matching/rest/datamatchingdefinitions/6461e6113b1865304b3038b6 \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "name": "Custom Matching Definition Name",
    "type": "DEDUPLICATION",
    "xmlDukeConfiguration": "<duke>...</duke>",
    "reportConfiguration": {
      "header": [
        {
          "attributeJsonPath": "attributeJsonPath",
          "columnName": "External ID"
        }
      ]
    },
    "goldenRecordConfiguration": {
      "decisionStrategy": {
        "root": {
          "rule": {
            "type": "HAS_VALUE",
            "jsonPath": "attributeJsonPath",
            "valueType": "TEXT",
            "expectedValues": [
              "expectedValue"
            ]
          },
          "yesBranch": {},
          "noBranch": {}
        }
      },
      "creationStrategy": {
        "type": "CONSTANT",
        "protectedAttributes": [
          "External ID"
        ],
        "recordExclusionRules": [
          {
            "type": "HAS_VALUE",
            "jsonPath": "attributeJsonPath",
            "valueType": "TEXT",
            "expectedValues": [
              "expectedValue"
            ]
          }
        ],
        "attributeEnhancementRules": [
          {
            "attributes": [
              "External ID"
            ],
            "constraintChain": {
              "constraints": [
                {
                  "expectedValues": []
                }
              ],
              "allRecordsShouldMatch": "true",
              "constraintChainType": "AND"
            },
            "creationType": "CONSTANT",
            "creationConstant": "constantValue",
            "executionType": "SET",
            "fallbackExecutionType": "SET"
          }
        ]
      }
    },
    "workspace": {
      "id": "c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4"
    }
  }'

Responses

OK

Bodyapplication/json
idstring(DataMatchingDefinitionId)

Id of the data matching definition.

Example: "6461e6113b1865304b3038b6"
namestring<= 30 characters

A human-readable name for the Data Matching Definition instance.

Example: "Custom Matching Definition Name"
creatorUsernamestring(UserId)

Unique ID of a user.

Example: "johndoe"
creatorOrganizationstring(OrganizationId)

Uniquely identifying ID of the organization.

Example: "cdq_monitor"
createdAtstring(CreatedAt)

Date of creation (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
lastModifiedAtstring(ModifiedAt)

Date of modification (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
typestring(MatchingType)

Type of the matching configuration.

Enum ValueDescription
DEDUPLICATION

The matching configuration is used to identify duplicates in a storage.

LINKAGE

The matching configuration is used to identify links between records in different storages.

Example: "DEDUPLICATION"
xmlDukeConfigurationstring

Holds the Duke XML configuration for data matching.

Example: "<duke>...</duke>"
reportConfigurationobject(ReportConfiguration)

Configuration for generating reports related to the Data Matching Definition.

goldenRecordConfigurationobject(GoldenRecordConfiguration)

Configuration for creating Golden Records in the context of Data Matching.

workspaceobject(Workspace)

Collaboration space to share/configure configurations.

Response
application/json
{ "id": "6461e6113b1865304b3038b6", "name": "Custom Matching Definition Name", "creatorUsername": "johndoe", "creatorOrganization": "cdq_monitor", "createdAt": "2025-08-15T11:08:26Z", "lastModifiedAt": "2025-08-15T11:08:26Z", "type": "DEDUPLICATION", "xmlDukeConfiguration": "<duke>...</duke>", "reportConfiguration": { "header": [] }, "goldenRecordConfiguration": { "decisionStrategy": {}, "creationStrategy": {} }, "workspace": { "id": "c074b9f3-abf0-4f8e-9a20-74deb6cfa2a4" } }

Delete Date Matching Definition

Request

Delete a Data Matching Definition by its ID.

Security
apiKey
Path
idstring(DataMatchingDefinitionId)required

ID of the Data Matching Definition.

Example: 6461e6113b1865304b3038b6
curl -i -X DELETE \
  https://api.cdq.com/data-matching/rest/datamatchingdefinitions/6461e6113b1865304b3038b6 \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Response
No content

Duplicate Matching

Provides functionalities for managing duplications within a single data source. These endpoints support creating Deduplication Job and checking the Deduplication Job Status.

Operations

Linkage Matching

Provides functionalities for managing linkages across multiple data sources. These endpoints support creating Linkage Job and checking the Linkage Job Status.

Operations

Public

Provides functionalities for polling the Matching Reports.

Operations

User Feedback

Provides functionalities for managing user feedback related to data matching decisions.

Operations