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

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

Matching Decision Import

Request

To start importing an Identity Linkage Decision import file, use the following request.

POST https://api.corporate-data-league.ch/data-matching/rest/jobs/matchingdecisionjobs
  ?file=@{YOUR FILE}
  ?decisionLogId={YOUR MatchingDecisionLog ID}

With using output file from duplication or linkage job. Please remember not to remove the mandatory columns when modifying this file: No Match Feedback, Matching Group, Storage ID, Data Source ID, Record ID.

The response is shown below. Use the returned id to poll the import job status.

{
    "id" : "{YOUR JOB ID}"
    ...
}

This import leads to the following link in the MatchingDecisionLog.

{
   "id" : "{AUTO GENERATED}",
   "decisionLogId" : "b7d528eace273a10aeb00825f48b5b18",
   "entities" : [{
       "storageId": "b7d528eace273a10aeb00825f48b5b18",
       "dataSourceId": "5f9fc1b97e1e490001fcfc9e",
       "businessPartnerId": "5e60dfdbd5fa2d000166ab4a"
     },
     {
       "storageId": "b7d528eace273a10aeb00825f48b5b18",
       "dataSourceId": "5f9fc1b97e1e490001fcfc9e",
       "businessPartnerId": "5e60dfdbd5fa2d000166ab4b"
     }]
 }
Security
apiKey
Bodymultipart/form-data
filestring(binary)required

XLSX or CSV file to be uploaded (SOAP currently only supports CSV).

Example: "file.xlsx"
decisionLogIdstringrequired

Target MatchingDecisionLog ID for this import.

Example: "5e60dfdbd5fa2d000166ab4a"
curl -i -X POST \
  https://api.cdq.com/data-matching/rest/matchingdecisionjobs \
  -H 'Content-Type: multipart/form-data' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -F file=file.xlsx \
  -F decisionLogId=5e60dfdbd5fa2d000166ab4a

Responses

OK

Bodyapplication/json
idstring(JobId)

Unique identifier of a job.

Example: "35f23c03-1c22-45fe-9484-3ffe769325de"
domainstring(WebsiteUrl)

The actual company website URL.

Example: "https://cdq.com"
createdBystring(CreatedBy)

Creator of a resource.

Example: "76248934691294444"
createdAtstring(CreatedAt)

Date of creation (ISO 8601-compliant).

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

Date of modification (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
progressinteger(JobProgress)[ 0 .. 100 ]

Progress (%) of the job.

Example: "77"
statusstring(schemas-JobStatus)

Job execution status.

Example: "RUNNING"
statusMessagestring(JobStatusMessage)

Additional information to explain the status.

Example: "The job failed because storage is empty."
decisionLogIdstring

ID of the decision log.

Example: "65dcb1d68f01e37c2cf9bbb2"
resultobject(MatchingDecisionImportJobResult)

Result of the matching decision import job.

Response
application/json
{ "id": "35f23c03-1c22-45fe-9484-3ffe769325de", "domain": "https://cdq.com", "createdBy": "76248934691294444", "createdAt": "2025-08-15T11:08:26Z", "modifiedAt": "2025-08-15T11:08:26Z", "progress": "77", "status": "RUNNING", "statusMessage": "The job failed because storage is empty.", "decisionLogId": "65dcb1d68f01e37c2cf9bbb2", "result": { "statistics": {} } }

Matching Decision Import Status

Request

Polls the status of the matching decision import job.

Security
apiKey
Path
idstringrequired

ID of the Matching Decision Import Job.

Example: 65dcc3c60cecd503bcc88c92
curl -i -X GET \
  https://api.cdq.com/data-matching/rest/matchingdecisionjobs/65dcc3c60cecd503bcc88c92 \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
idstring(JobId)

Unique identifier of a job.

Example: "35f23c03-1c22-45fe-9484-3ffe769325de"
domainstring(WebsiteUrl)

The actual company website URL.

Example: "https://cdq.com"
createdBystring(CreatedBy)

Creator of a resource.

Example: "76248934691294444"
createdAtstring(CreatedAt)

Date of creation (ISO 8601-compliant).

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

Date of modification (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
progressinteger(JobProgress)[ 0 .. 100 ]

Progress (%) of the job.

Example: "77"
statusstring(schemas-JobStatus)

Job execution status.

Example: "RUNNING"
statusMessagestring(JobStatusMessage)

Additional information to explain the status.

Example: "The job failed because storage is empty."
decisionLogIdstring

ID of the decision log.

Example: "65dcb1d68f01e37c2cf9bbb2"
resultobject(MatchingDecisionImportJobResult)

Result of the matching decision import job.

Response
application/json
{ "id": "35f23c03-1c22-45fe-9484-3ffe769325de", "domain": "https://cdq.com", "createdBy": "76248934691294444", "createdAt": "2025-08-15T11:08:26Z", "modifiedAt": "2025-08-15T11:08:26Z", "progress": "77", "status": "RUNNING", "statusMessage": "The job failed because storage is empty.", "decisionLogId": "65dcb1d68f01e37c2cf9bbb2", "result": { "statistics": {} } }

List User Feedbacks

Request

Read available Matching Decision Logs across your organization.

Security
apiKey
Query
startAfterstring(StartAfter)

Indicator for the next page. Used together with nextStartAfter from the result.

Example: startAfter=5712566172571652
limitinteger(int32)>= 1

Number of items to be returned.

Default 20
Example: limit=100
curl -i -X GET \
  https://api.cdq.com/data-matching/rest/userfeedbacks \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
startAfterstring(StartAfter)

The ID which is used to read the page.

Example: "5712566172571652"
limitinteger(Limit)

Number of items per page.

Example: "100"
valuesArray of objects(MatchingDecisionLog)

List of matching decision logs.

nextStartAfterstring(NextStartAfter)

Provides a value to be used as a startAfter in next page request.

Example: "5712566172571652"
Response
application/json
{ "startAfter": "5712566172571652", "limit": "100", "values": [ {} ], "nextStartAfter": "5712566172571652" }

Create User Feedback

Request

Create Matching Decision Log where decisions will be stored.

Security
apiKey
Bodyapplication/jsonrequired
namestring

Name of the matching decision log.

Example: "decisionLogOne"
curl -i -X POST \
  https://api.cdq.com/data-matching/rest/userfeedbacks \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "name": "decisionLogOne"
  }'

Responses

OK

Bodyapplication/json
idstring

Uniquely identifying ID of the decision log.

Example: "65dcc3c60cecd503bcc88c92"
createdAtstring(CreatedAt)

Date of creation (ISO 8601-compliant).

Example: "2025-08-15T11:08:26Z"
namestring

Name of the decision log.

Example: "decisionLogOne"
organizationstring

Uniquely identifying ID of the organization.

Example: "12345678-1234-5678-1234-567812345678"
Response
application/json
{ "id": "65dcc3c60cecd503bcc88c92", "createdAt": "2025-08-15T11:08:26Z", "name": "decisionLogOne", "organization": "12345678-1234-5678-1234-567812345678" }

Read User Feedback

Request

Read Matching Decision Logs details provided by ID.

Security
apiKey
Path
idstringrequired

ID of the Matching Decision Log.

Example: 9cfa14e7-51f5-4490-88e4-667501575b41
curl -i -X GET \
  https://api.cdq.com/data-matching/rest/userfeedbacks/9cfa14e7-51f5-4490-88e4-667501575b41 \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
matchingDecisionLogobject(MatchingDecisionLog)

Decision Log made during data matching.

statusstring

status:

  • OK - Decision log has been fetched successfully
  • NOT_FOUND - Decision log does not exist
Example: "OK"
messagestring

Message of the status.

Example: "Decision log has been fetched successfully"
Response
application/json
{ "matchingDecisionLog": { "id": "65dcc3c60cecd503bcc88c92", "createdAt": "2025-08-15T11:08:26Z", "name": "decisionLogOne", "organization": "12345678-1234-5678-1234-567812345678" }, "status": "OK", "message": "Decision log has been fetched successfully" }

Create Identity Link

Request

Add Identity Links to the Matching Decision Log identified by ID.

Security
apiKey
Path
idstringrequired

ID of the Matching Decision Log.

Example: 9cfa14e7-51f5-4490-88e4-667501575b41
Bodyapplication/jsonrequired
linksArray of objects(IdentityLinkCreate)[ 1 .. 1000 ] itemsrequired

List of identity links to be created.

links[].​entriesArray of objects(IdentityLinkEntry)= 2 itemsrequired

List of identity link entries.

links[].​entries[].​storageIdstring(BusinessPartnerStorageId)required

Unique identifier of the Storage.

Example: "72d6900fce6b326088f5d9d91049e3e6"
links[].​entries[].​dataSourceIdstring(BusinessPartnerStorageDataSourceId)required

Unique identifier for a Data Source of the Storage.

Example: "648824a691d8d2503d65103e"
links[].​entries[].​businessPartnerIdstring(BusinessPartnerId)required

A CDQ ID identifies a business partner uniquely in the context of the Corporate Data League.

Example: "63e635235c06b7396330fe40"
curl -i -X POST \
  https://api.cdq.com/data-matching/rest/userfeedbacks/9cfa14e7-51f5-4490-88e4-667501575b41 \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "links": [
      {
        "entries": [
          {
            "storageId": "72d6900fce6b326088f5d9d91049e3e6",
            "dataSourceId": "648824a691d8d2503d65103e",
            "businessPartnerId": "63e635235c06b7396330fe40"
          },
          {
            "storageId": "72d6900fce6b326088f5d9d91049e3e6",
            "dataSourceId": "648824a691d8d2503d65103e",
            "businessPartnerId": "63e635235c06b7396330fe40"
          }
        ]
      }
    ]
  }'

Responses

OK

Bodyapplication/json
valuesArray of objects(IdentityLinkCreateStatus)

List of identity links created.

Response
application/json
{ "values": [ {} ] }

Delete User Feedback

Request

Delete the Matching Decision Log identified by ID. !Warning! action cannot be reverted!

Security
apiKey
Path
idstringrequired

ID of the Matching Decision Log.

Example: 9cfa14e7-51f5-4490-88e4-667501575b41
curl -i -X DELETE \
  https://api.cdq.com/data-matching/rest/userfeedbacks/9cfa14e7-51f5-4490-88e4-667501575b41 \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Response
No content

Clear User Feedback

Request

Remove all links from the Matching Decision Log identified by ID. !Warning! action cannot be reverted!

Security
apiKey
Path
idstringrequired

ID of the Matching Decision Log.

Example: 9cfa14e7-51f5-4490-88e4-667501575b41
curl -i -X POST \
  https://api.cdq.com/data-matching/rest/userfeedbacks/9cfa14e7-51f5-4490-88e4-667501575b41/clear \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

List Identity Links

Request

Read Identity Links from the Matching Decision Log identified by ID.

Security
apiKey
Query
startAfterstring(StartAfter)

Indicator for the next page. Used together with nextStartAfter from the result.

Example: startAfter=5712566172571652
limitinteger(int32)>= 1

Number of items to be returned.

Default 20
Example: limit=100
linkStorageIdstringrequired

Link Storage Id.

Example: linkStorageId=72d6900fce6b326088f5d9d91049e3e6
storageIdstring(BusinessPartnerStorageId)

Unique Storage identifier.

Example: storageId=72d6900fce6b326088f5d9d91049e3e6
dataSourceIdstring(BusinessPartnerStorageDataSourceId)

Unique Storage's Data Source identifier.

Example: dataSourceId=648824a691d8d2503d65103e
businessPartnerIdstring(BusinessPartnerId)

Business Partner ID provided by CDQ that is unique across all stored Business Partners in CDQ Cloud. Used to filter results by this ID.

Example: businessPartnerId=63e635235c06b7396330fe40
curl -i -X GET \
  'https://api.cdq.com/data-matching/rest/userfeedbacks/identitylinks?linkStorageId=72d6900fce6b326088f5d9d91049e3e6' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
startAfterstring(StartAfter)

The ID which is used to read the page.

Example: "5712566172571652"
limitinteger(Limit)

Number of items per page.

Example: "100"
valuesArray of objects(IdentityLink)

List of identity links.

nextStartAfterstring(NextStartAfter)

Provides a value to be used as a startAfter in next page request.

Example: "5712566172571652"
Response
application/json
{ "startAfter": "5712566172571652", "limit": "100", "values": [ {} ], "nextStartAfter": "5712566172571652" }