Skip to content

Data Clinic API (2)

This API provides services for Data Clinic

Download OpenAPI description
Languages
Servers
Mock server

https://developer.cdq.com/_mock/apis/data-clinic-api/api-v2/

Production

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

Decision Log

Provides services for managing decisions for Business Partners. Decisions are stored in a Decision Log and can be retrieved, upserted, cleared or deleted.

Operations

Request

Read decisions from given storage.

Security
apiKey
Path
storageIdstring(BusinessPartnerStorageId)required

Unique identifier of the Business Partner Storage.

Example: 72d6900fce6b326088f5d9d91049e3e6
Query
startAfterstring

Start after the provided pagination ID. Leave empty for the first query. The response will contain a property nextStartAfter, which needs to be used for any subsequent queries until nextStartAfter is empty. See CDQ - Developer Guidelines.

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

Number of items to be returned on the page.

Default 500
Example: limit=100
businessPartnerIdsArray of strings(DecisionLogBusinessPartnerId)<= 500 items

Only show decisions for listed business partner IDs.

Example: businessPartnerIds=63e635235c06b7396330fe40
typestring(DecisionLogTypeTechnicalKeyParam)

Only show decisions of given type.

Enum ValueDescription
CURATIONS

Curation decisions.

NATURAL_PERSONS

Natural person decisions.

DUPLICATES

Duplicate decisions.

Example: type=CURATIONS
curl -i -X GET \
  https://developer.cdq.com/_mock/apis/data-clinic-api/api-v2/storages/72d6900fce6b326088f5d9d91049e3e6/decisions \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
valuesArray of objects(DecisionLogSearchResult)

List of decisions.

limitinteger(Limit)

Number of items per page.

Example: "100"
startAfterstring(StartAfter)

The ID which is used to read the page.

Example: "5712566172571652"
nextStartAfterstring(NextStartAfter)

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

Example: "5712566172571652"
totalinteger(PageTotal)

Total number of items which can be paged.

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

Request

Upsert decisions for given storage. Decisions are distinguished by business partner id and type. Already existing decision will be replaced.

Security
apiKey
Path
storageIdstring(BusinessPartnerStorageId)required

Unique identifier of the Business Partner Storage.

Example: 72d6900fce6b326088f5d9d91049e3e6
Bodyapplication/jsonrequired
decisionsArray of objects(DecisionsUpsertEntry)non-emptyrequired

List of decisions to be upserted.

decisions[].​typeobject(DecisionLogType)required

Type of decision log entry.

decisions[].​type.​technicalKeystring(DecisionLogTypeTechnicalKeyParam)

Technical key of the decision log type.

Enum ValueDescription
CURATIONS

Curation decisions.

NATURAL_PERSONS

Natural person decisions.

DUPLICATES

Duplicate decisions.

Example: "CURATIONS"
decisions[].​businessPartnerIdstring(DecisionLogBusinessPartnerId)required

A CDQ ID identifies a Business Partner uniquely in the context of the Corporate Data League.

Example: "63e635235c06b7396330fe40"
decisions[].​dataSourceIdstring(BusinessPartnerStorageDataSourceId)required

Unique identifier for a Data Source of the Storage.

Example: "648824a691d8d2503d65103e"
decisions[].​externalIdstring(DecisionLogExternalId)

Arbitrary identifier type to mark customer IDs that are "external" from CDQ's perspective. This is the identifier a customer provides to identify its records.

Example: "The ID managed in the customer's SAP systems."
decisions[].​updateDecisionsArray of objects(UpdateDecision)
decisions[].​validationDecisionsArray of objects(ValidationDecision)
curl -i -X POST \
  https://developer.cdq.com/_mock/apis/data-clinic-api/api-v2/storages/72d6900fce6b326088f5d9d91049e3e6/decisions \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "decisions": [
      {
        "type": {
          "technicalKey": "CURATIONS"
        },
        "businessPartnerId": "63e635235c06b7396330fe40",
        "dataSourceId": "648824a691d8d2503d65103e",
        "externalId": "The ID managed in the customer'\''s SAP systems.",
        "updateDecisions": [
          {
            "context": {
              "createdBy": "76248934691294444",
              "createdAt": "2025-08-27T14:26:38Z",
              "scope": {
                "dataSourceIds": [
                  null
                ],
                "countryShortNames": [
                  null
                ],
                "curationSimilarity": "0.8"
              }
            },
            "proposal": {
              "externalIds": [
                {}
              ],
              "property": {
                "parentConcept": {},
                "name": "Minority Indicator Value",
                "technicalKey": "MINORITY_INDICATOR_VALUE",
                "contentSelector": "$.partnerProfile.minorityIndicator.value",
                "instanceSelectors": [
                  null
                ]
              },
              "newContent": "AAB",
              "previousContent": "AAB",
              "provenance": {
                "name": "VIES",
                "url": "https://meta.cdq.com/index.php?title=Property:Has_prefix&limit=500&offset=0&from=&until=&filter=",
                "technicalKey": "VIES",
                "cdqId": "VIES:PL8660001429"
              },
              "changeType": "MODIFIED",
              "changeClassification": "MAJOR",
              "confidenceScore": "0.0",
              "maxConfidenceScore": "1.0",
              "matchingScores": {
                "overall": {},
                "businessPartner": {},
                "address": {}
              }
            },
            "status": "ACCEPTED",
            "reliability": "TRUSTED_SOURCE"
          }
        ],
        "validationDecisions": [
          {
            "context": {
              "createdBy": "76248934691294444",
              "createdAt": "2025-08-27T14:26:38Z"
            },
            "dataDefect": {
              "businessRule": {
                "name": "Identifier unknown (European value added tax identifier (The Netherlands))",
                "url": "https://meta.cdq.com/Identifier_unknown_(European_value_added_tax_identifier_(The_Netherlands))",
                "ruleStatus": "RELEASED"
              },
              "violationLevel": "INFO",
              "violationMessage": "Business Partner identifier is mandatory."
            },
            "status": "ACCEPTED"
          }
        ]
      }
    ]
  }'

Responses

OK

Bodyapplication/json
numberOfProvidedDecisionsinteger

Number of decisions provided in the request.

Example: "10"
numberOfInsertsinteger

Number of decisions inserted.

Example: "5"
numberOfUpdatesinteger

Number of decisions updated.

Example: "5"
Response
application/json
{ "numberOfProvidedDecisions": "10", "numberOfInserts": "5", "numberOfUpdates": "5" }

Request

Deletes decisions of a given type. Delete all if type not provided.

Security
apiKey
Path
storageIdstring(BusinessPartnerStorageId)required

Unique identifier of the Business Partner Storage.

Example: 72d6900fce6b326088f5d9d91049e3e6
Bodyapplication/jsonrequired
typeobject(DecisionLogType)

Type of decision log entry.

dataSourcesArray of objects(DecisionClearDataSourceParam)

List of Data Source IDs to be cleared.

curl -i -X POST \
  https://developer.cdq.com/_mock/apis/data-clinic-api/api-v2/storages/72d6900fce6b326088f5d9d91049e3e6/decisions/clear \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "type": {
      "technicalKey": "CURATIONS"
    },
    "dataSources": [
      {
        "id": "648824a691d8d2503d65103e"
      }
    ]
  }'

Responses

OK

Bodyapplication/json
numberOfDeletedinteger

Number of decisions deleted.

Example: "10"
Response
application/json
{ "numberOfDeleted": "10" }

Request

Deletes decisions of a given ids.

Security
apiKey
Path
storageIdstring(BusinessPartnerStorageId)required

Unique identifier of the Business Partner Storage.

Example: 72d6900fce6b326088f5d9d91049e3e6
Bodyapplication/jsonrequired
decisionsArray of objects(DecisionDelete)non-emptyrequired

List of decisions to be deleted.

decisions[].​idstring(DecisionLogEntryId)

A CDQ ID identifies a Decision Log Entry.

Example: "63e635235c06b7396330fe40"
decisions[].​businessPartnerIdstring(DecisionLogBusinessPartnerId)

A CDQ ID identifies a Business Partner uniquely in the context of the Corporate Data League.

Example: "63e635235c06b7396330fe40"
curl -i -X POST \
  https://developer.cdq.com/_mock/apis/data-clinic-api/api-v2/storages/72d6900fce6b326088f5d9d91049e3e6/decisions/delete \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "decisions": [
      {
        "id": "63e635235c06b7396330fe40",
        "businessPartnerId": "63e635235c06b7396330fe40"
      }
    ]
  }'

Responses

OK

Bodyapplication/json
numberOfDeletedinteger

Number of decisions deleted.

Example: "10"
Response
application/json
{ "numberOfDeleted": "10" }

Request

Starts curation decision import job

Security
apiKey
Bodyapplication/jsonrequired
storageIdstring(BusinessPartnerStorageId)required

Unique identifier of the Storage.

Example: "72d6900fce6b326088f5d9d91049e3e6"
dataSourceIdstring(BusinessPartnerStorageDataSourceId)

Unique identifier for a Data Source of the Storage.

Example: "648824a691d8d2503d65103e"
onlyNotReviewedboolean

If set to true, only curation decisions that have not been reviewed yet will be imported. If set to false, all curation decisions will be imported.

Default false
Example: "true"
scopeobject(CurationDecisionImportJobScope)required

Scope of a curation decision import job.

scope.​acceptedobject(CurationDecisionImportJobConfig)

Configuration of a curation decision import job.

scope.​rejectedobject(CurationDecisionImportJobConfig)

Configuration of a curation decision import job.

curl -i -X POST \
  https://developer.cdq.com/_mock/apis/data-clinic-api/api-v2/jobs/curationdecisionimportjobs \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "storageId": "72d6900fce6b326088f5d9d91049e3e6",
    "dataSourceId": "648824a691d8d2503d65103e",
    "onlyNotReviewed": "true",
    "scope": {
      "accepted": {
        "identifiers": [
          {
            "technicalKey": "EU_VAT_ID_DE",
            "changeTypes": [
              "ADDED"
            ],
            "countryShortNames": [
              "CH"
            ],
            "thresholds": {
              "businessPartnerRequestSimilarity": "0.8",
              "addressRequestSimilarity": "0.8",
              "businessPartnerMatchingScore": "0.8",
              "addressMatchingScore": "0.8"
            }
          }
        ]
      },
      "rejected": {
        "identifiers": [
          {
            "technicalKey": "EU_VAT_ID_DE",
            "changeTypes": [
              "ADDED"
            ],
            "countryShortNames": [
              "CH"
            ],
            "thresholds": {
              "businessPartnerRequestSimilarity": "0.8",
              "addressRequestSimilarity": "0.8",
              "businessPartnerMatchingScore": "0.8",
              "addressMatchingScore": "0.8"
            }
          }
        ]
      }
    }
  }'

Responses

OK

Bodyapplication/json
idstring(JobId)

Unique identifier of a job.

Example: "35f23c03-1c22-45fe-9484-3ffe769325de"
namestring(JobName)

Name of a Job.

Example: "Process vendor data."
descriptionstring(JobDescription)

Detailed description of a Job.

Example: "I started this job to improve quality of our data."
statusstring(JobStatus)

Job execution status.

Example: "RUNNING"
statusMessagestring(JobStatusMessage)

Additional information to explain the status.

Example: "The job failed because storage is empty."
createdAtstring(CreatedAt)

Date of creation (ISO 8601-compliant).

Example: "2025-08-27T14:26:38Z"
userstring(JobUser)

ID of (human) user or API key.

Example: "742429-234242-4343-232323"
progressstring(JobStatusMessage)

Additional information to explain the status.

Example: "The job failed because storage is empty."
attachmentsArray of objects(FileResource)

List of attachments.

Response
application/json
{ "id": "35f23c03-1c22-45fe-9484-3ffe769325de", "name": "Process vendor data.", "description": "I started this job to improve quality of our data.", "status": "RUNNING", "statusMessage": "The job failed because storage is empty.", "createdAt": "2025-08-27T14:26:38Z", "user": "742429-234242-4343-232323", "progress": "The job failed because storage is empty.", "attachments": [ {} ] }

Request

Poll curation decision import job.

Security
apiKey
Path
jobIdstring(JobId)required

Unique identifier of a job.

Example: 35f23c03-1c22-45fe-9484-3ffe769325de
curl -i -X GET \
  https://developer.cdq.com/_mock/apis/data-clinic-api/api-v2/jobs/curationdecisionimportjobs/35f23c03-1c22-45fe-9484-3ffe769325de \
  -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"
namestring(JobName)

Name of a Job.

Example: "Process vendor data."
descriptionstring(JobDescription)

Detailed description of a Job.

Example: "I started this job to improve quality of our data."
statusstring(JobStatus)

Job execution status.

Example: "RUNNING"
statusMessagestring(JobStatusMessage)

Additional information to explain the status.

Example: "The job failed because storage is empty."
createdAtstring(CreatedAt)

Date of creation (ISO 8601-compliant).

Example: "2025-08-27T14:26:38Z"
userstring(JobUser)

ID of (human) user or API key.

Example: "742429-234242-4343-232323"
progressstring(JobStatusMessage)

Additional information to explain the status.

Example: "The job failed because storage is empty."
attachmentsArray of objects(FileResource)

List of attachments.

Response
application/json
{ "id": "35f23c03-1c22-45fe-9484-3ffe769325de", "name": "Process vendor data.", "description": "I started this job to improve quality of our data.", "status": "RUNNING", "statusMessage": "The job failed because storage is empty.", "createdAt": "2025-08-27T14:26:38Z", "user": "742429-234242-4343-232323", "progress": "The job failed because storage is empty.", "attachments": [ {} ] }

Augmented Business Partners

Represent entities enhanced with supplementary data derived from many distinct data sources, providing a comprehensive view of the Business Partner's information.

Operations

Augmented Configuration Properties

Used to define and manipulate the settings, which include various parameters and configurations for the augmentation of Business Partners.

Operations

Configuration

Used to create, read, update, and delete the configurations, which define the settings for the augmentation process of Business Partners.

Operations
Operations