Retrieve DQ Results for External Systems
|
The REST API is currently in Early Access Preview. The API specification and endpoints might change before being marked as stable. We recommend testing thoroughly and being prepared to adapt to potential changes in future releases. |
This guide shows you how to retrieve DQ evaluation results for integration with external systems, enabling you to build custom dashboards in your BI tools and synchronize with third-party data catalogs.
Before using the Data Quality API, configure authentication as described in API Authentication.
When to use this API
Use the DQ results API when you need to:
-
Build custom dashboards: Create organization-specific quality views that aggregate data across multiple sources, or use DQ metrics in tools like Power BI, Tableau, or Looker.
-
Sync with data catalogs: Sync quality metadata to Collibra, Atlan, Alation, or Databricks Unity Catalog.
-
Audit and compliance: Extract quality history for regulatory reporting or internal audits.
What results are available
The API provides access to:
-
Overall quality: Passed and failed record counts (calculate percentage as passed / total).
-
Dimension breakdown: Quality results by dimension (Validity, Completeness, Accuracy, and others).
-
Attribute-level results: Quality breakdown by individual attributes.
-
Rule-level results: Pass/fail counts and explanations for each applied rule.
-
Invalid samples: Sample of actual records that failed evaluation, with failure reasons.
Retrieve results for a single monitor
The API uses the term processing to refer to any run that can include profiling, DQ evaluation, anomaly detection, or a combination of these.
When a processingUrn appears in the API, it identifies a specific processing run.
|
Retrieve DQ evaluation results for a specific monitor using these values as processingUrn:
-
latest: Get results from the most recent completed processing. -
{processingUrn}: Get results from a specific processing run.
Use primary as dqMonitorUrn to get results from the primary monitor without looking up its URN first.
For secondary monitors, you need to provide the monitor’s URN.
|
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings/{processingUrn}/dq-results" \
-H "Authorization: Bearer {access_token}"
{
"processingUrn": "urn:ata:{your-tenant}:data-quality:processing:16658a27-0000-8010-8000-0000011a074d",
"overallQuality": {
"passedCount": 938,
"failedCount": 1318
},
"dimensionResults": [
{
"dimension": {
"name": "Validity",
"urn": "urn:ata:{your-tenant}:data-quality:dimension:0a2a2a64-ff0f-4e05-94c1-3413f09a50e0",
"results": [
{
"name": "Valid",
"passedOverallResult": true,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:67b7aed6-b54f-4be3-a987-95899f605029"
},
{
"name": "Invalid",
"passedOverallResult": false,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:ec49b8ed-52b2-469c-8424-4866249755cb"
}
]
},
"passedCount": 1074,
"failedCount": 1182,
"ruleInstanceCount": 4
},
{
"dimension": {
"name": "Accuracy",
"urn": "urn:ata:{your-tenant}:data-quality:dimension:94b2ceaf-a0ab-44c4-94ce-7fbf258a979d",
"results": [
{
"name": "Accurate",
"passedOverallResult": true,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:1107cf33-8e66-481e-b925-d21013950c31"
},
{
"name": "Not Accurate",
"passedOverallResult": false,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:ead4240d-51ac-491a-8233-af6a5e2fee1e"
},
{
"name": "No reference available",
"passedOverallResult": true,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:5f0874c9-0a5b-4243-8982-c2caad3c0429"
}
]
},
"passedCount": 1943,
"failedCount": 313,
"ruleInstanceCount": 1
}
],
"catalogItemLink": "https://{your-environment}.ataccama.one/catalog/catalog-items/7b074cbc-0000-7000-0000-00000292006b",
"dqResultsLink": "https://{your-environment}.ataccama.one/entities/catalog-item-dq-configurations/7b074cbc-0000-7000-0000-000002920092/results",
"invalidSamplesLink": "https://{your-environment}.ataccama.one/entities/catalog-item-dq-configurations/7b074cbc-0000-7000-0000-000002920092/invalid-records",
"dqAttributeResults": [
{
"attributeUrn": "urn:ata:{your-tenant}:catalog:catalog-attribute:7b074cbc-0000-7000-0000-00000292006f",
"attributeName": "EMAIL",
"overallQuality": {
"passedCount": 1721,
"failedCount": 535
},
"dimensionResults": [
{
"dimension": {
"name": "Validity",
"urn": "urn:ata:{your-tenant}:data-quality:dimension:0a2a2a64-ff0f-4e05-94c1-3413f09a50e0",
"results": [
{
"name": "Valid",
"passedOverallResult": true,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:67b7aed6-b54f-4be3-a987-95899f605029"
},
{
"name": "Invalid",
"passedOverallResult": false,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:ec49b8ed-52b2-469c-8424-4866249755cb"
}
]
},
"passedCount": 1721,
"failedCount": 535,
"ruleInstanceCount": 1
}
],
"ruleInstanceResults": [
{
"ruleInstanceUrn": "urn:ata:{your-tenant}:data-quality:rule-instance:7b074cbc-0000-7000-0000-0000029300e6",
"ruleUrn": "urn:ata:{your-tenant}:data-quality:rule:7b074cbc-0000-7000-0000-000002910082",
"ruleInstanceName": "E-mail is valid!",
"ruleName": "E-mail is valid",
"results": [
{
"count": 1721,
"result": {
"name": "Valid",
"passedOverallResult": true,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:67b7aed6-b54f-4be3-a987-95899f605029"
}
},
{
"count": 535,
"result": {
"name": "Invalid",
"passedOverallResult": false,
"urn": "urn:ata:{your-tenant}:data-quality:dimension-result:ec49b8ed-52b2-469c-8424-4866249755cb"
}
}
],
"explanations": [
{
"urn": "urn:ata:{your-tenant}:data-quality:explanation:7b074cbc-0000-7000-0000-000002980077",
"name": "Invalid format",
"count": 0
},
{
"urn": "urn:ata:{your-tenant}:data-quality:explanation:7b074cbc-0000-7000-0000-000002920026",
"name": "IS_EMPTY",
"count": 535
},
{
"urn": "urn:ata:{your-tenant}:data-quality:explanation:7b074cbc-0000-7000-0000-000002920029",
"name": "NOREPLY_EMAIL",
"count": 0
}
]
}
]
}
]
}
The response includes:
-
overallQuality: Passed and failed record counts across the entire monitor. -
dimensionResults: Quality breakdown by dimension, with pass/fail counts and the number of rule instances contributing to each dimension. -
catalogItemLink,dqResultsLink,invalidSamplesLink: Direct links to the catalog item, DQ results, and invalid samples in Ataccama ONE. -
dqAttributeResults: Per-attribute quality breakdown, including dimension results and individual rule instance results with explanations.
Filter results by attribute
By default, the response includes results for all attributes.
To retrieve results for specific attributes only, add the attributeUrns query parameter.
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings/{processingUrn}/dq-results?attributeUrns={attributeUrn1}&attributeUrns={attributeUrn2}" \
-H "Authorization: Bearer {access_token}"
The response structure is the same, but dqAttributeResults contains only the requested attributes.
Retrieve results for multiple monitors
For dashboards or reports spanning multiple data assets, use the bulk endpoint to retrieve results from multiple monitors in a single request.
Each request can include up to 100 catalog item and DQ monitor pairs.
The bulk endpoint returns a simplified result structure containing only overallQuality and dimensionResults for each monitor — it does not include dqAttributeResults.
To get attribute-level and rule-level details, use the single-monitor endpoint for each monitor individually.
The bulk endpoint always returns results from the latest completed processing for each monitor.
The dimensionResults array in the bulk response use dimensionUrn field instead of the nested dimension object returned by the single-monitor endpoint.
|
curl -X POST "https://{your-environment}.ataccama.one/api/data-quality/v1/dq-results/bulk" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"filter": [
{
"catalogItemUrn": "urn:ata:{your-tenant}:catalog:catalog-item:123e4567-...",
"dqMonitorUrn": "urn:ata:{your-tenant}:data-quality:dq-monitor:456e4567-..."
},
{
"catalogItemUrn": "urn:ata:{your-tenant}:catalog:catalog-item:789e4567-...",
"dqMonitorUrn": "urn:ata:{your-tenant}:data-quality:dq-monitor:012e4567-..."
}
]
}'
The response is an array of result objects, each containing catalogItemUrn, dqMonitorUrn, processingUrn, processingStartedAt, processingFinishedAt, overallQuality, and dimensionResults.
Retrieve invalid record samples
Invalid samples show the actual records that failed DQ evaluation. This is useful for investigating data quality issues and understanding why specific records failed.
| Catalog item attributes in the response correspond to the version published at the time the processing started. |
Get schema of invalid record samples
Start by retrieving the column headers to understand the structure of the invalid samples.
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings/{processingUrn}/invalid-samples/headers" \
-H "Authorization: Bearer {access_token}"
{
"headers": [
{
"attributeUrn": "urn:ata:{your-tenant}:catalog:catalog-attribute:...",
"attributeName": "email",
"dataType": "STRING",
"columnType": "varchar",
"protection": "UNCLASSIFIED"
},
{
"attributeUrn": "urn:ata:{your-tenant}:catalog:catalog-attribute:...",
"attributeName": "phone",
"dataType": "STRING",
"columnType": "varchar",
"protection": "UNCLASSIFIED"
}
]
}
-
attributeName: Name of the attribute. -
dataType: Data type of the attribute, such as STRING or LONG. -
columnType: Source column type, such as VARCHAR or NUMBER. -
protection: Protection/Classification level of the attribute (PROTECTED, CLASSIFIED, UNCLASSIFIED).
Get invalid record samples
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings/{processingUrn}/invalid-samples?size=100" \
-H "Authorization: Bearer {access_token}"
| Parameter | Type | Required | Description |
|---|---|---|---|
|
integer |
No |
Number of samples to return per page. Default: Max: |
|
string |
No |
Cursor for forward pagination.
Use the value from |
|
string |
No |
Cursor for backward pagination.
Use the value from |
{
"meta": {
"prev": null,
"next": "eyJvZmZzZXQiOjEwMH0="
},
"data": [
{
"recordId": 12345,
"values": ["invalid-email", "+1-555-0123"],
"invalidRuleInstances": [
{
"ruleInstanceUrn": "urn:ata:{your-tenant}:data-quality:rule-instance:...",
"explanation": "Email format is invalid"
}
]
},
{
"recordId": 12346,
"values": ["another@bad", "+1-555-0124"],
"invalidRuleInstances": [
{
"ruleInstanceUrn": "urn:ata:{your-tenant}:data-quality:rule-instance:...",
"explanation": "Email format is invalid"
}
]
}
]
}
The values array corresponds to the headers array from the headers endpoint, in the same order.
To paginate through results, pass the meta.next value as the after parameter in your next request.
|
Browse DQ evaluation history
List past DQ evaluation runs to access historical results or track quality over time.
curl -X GET "https://{your-environment}.ataccama.one/api/data-quality/v1/catalog-items/{catalogItemUrn}/dq-monitors/{dqMonitorUrn}/processings?size=10&sort=-finishedAt" \
-H "Authorization: Bearer {access_token}"
| Parameter | Type | Required | Description |
|---|---|---|---|
|
integer |
No |
Number of results to return per page. Default: Max: |
|
string |
No |
Comma-separated field names for sorting. Prefix with a hyphen ( Default: |
|
datetime |
No |
Start of filtered time range (ISO 8601 Date Time Format yyyy-MM-dd’T’HH:mm:ss.SSSXXX — for example, "2000-10-31T01:30:00.000-05:00"). |
|
datetime |
No |
End of filtered time range (ISO 8601 Date Time Format yyyy-MM-dd’T’HH:mm:ss.SSSXXX — for example, "2000-10-31T01:30:00.000-05:00"). |
|
string |
No |
Filter by processing state (for example, |
|
string |
No |
Cursor for forward pagination.
Use the value from |
|
string |
No |
Cursor for backward pagination.
Use the value from |
Error handling
The API returns standard HTTP status codes and problem details for errors:
| Status code | Description |
|---|---|
|
Request successful. |
|
Invalid request parameters (for example, malformed URN or invalid filter).
The response body includes a |
|
Invalid or expired access token. |
|
Catalog item, monitor, or processing does not exist. |
API reference
For detailed API reference, including all endpoints, parameters, request and response schemas, examples, see Data Quality API specification.
Next steps
-
Understand DQ Evaluation Results: Understand what the results mean.
-
Investigate DQ Issues: Identify and investigate data quality issues.
Was this page useful?