Get latest validation
curl --request GET \
--url https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest \
--header 'x-api-key: <api-key>'import requests
url = "https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "abc123",
"workflowId": "<string>",
"jobId": "<string>",
"anomaliesCountTotal": 123,
"anomaliesCountByRule": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"anomaliesByRule": [
{
"ruleName": "<string>",
"anomalies": [
{
"__rule__": "<string>",
"__id__": "<string>",
"__column__": "<string>",
"__type__": "<string>",
"__bad_value__": null
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"totalItems": 150,
"totalPages": 3
}
}
],
"schemaIssues": {
"missingColumns": [
"<string>"
],
"missingRequiredColumns": [
"<string>"
],
"extraColumns": [
"<string>"
]
},
"completedAt": "2023-11-07T05:31:56Z",
"metadata": {
"customRules": [
{
"name": "<string>",
"description": "<string>",
"ruleType": "custom_sql",
"parameters": {
"sql": "<string>"
},
"targetColumns": [
"<string>"
]
}
],
"libraryRules": [
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"parameters": {},
"targetColumns": [
"<string>"
]
}
],
"totalRulesExecuted": 123,
"recordsValidated": 123,
"usedPrompt": "<string>",
"invalidRules": [
{
"name": "<string>",
"error": "<string>"
}
]
},
"error": "<string>",
"isDryRun": true,
"isWorkflowTriggered": true,
"datasetUri": "<string>",
"anomaliesParquetPath": "<string>",
"strategy": "ISOLATED",
"cdc": {
"strategy": "ISOLATED",
"anomalyCountChanges": {
"previousJobId": "<string>",
"previousValidationId": "<string>",
"anomaliesCountTotal": {
"count": 123,
"change": 123
},
"anomaliesCountByRule": {}
},
"anomaliesStatusParquetPath": "<string>",
"statusCounts": {
"NEW": 123,
"ONGOING": 123,
"RESOLVED": 123,
"REOPENED": 123
}
}
}{
"error": true,
"message": "Authentication required"
}{
"error": true,
"message": "Internal server error",
"details": {}
}Get latest validation
Retrieve the most recent validation results for a specific job within a workflow
GET
/
v4
/
data-validation
/
workflows
/
{workflowId}
/
jobs
/
{jobId}
/
validations
/
latest
Get latest validation
curl --request GET \
--url https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest \
--header 'x-api-key: <api-key>'import requests
url = "https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kadoa.com/v4/data-validation/workflows/{workflowId}/jobs/{jobId}/validations/latest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "abc123",
"workflowId": "<string>",
"jobId": "<string>",
"anomaliesCountTotal": 123,
"anomaliesCountByRule": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"anomaliesByRule": [
{
"ruleName": "<string>",
"anomalies": [
{
"__rule__": "<string>",
"__id__": "<string>",
"__column__": "<string>",
"__type__": "<string>",
"__bad_value__": null
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"totalItems": 150,
"totalPages": 3
}
}
],
"schemaIssues": {
"missingColumns": [
"<string>"
],
"missingRequiredColumns": [
"<string>"
],
"extraColumns": [
"<string>"
]
},
"completedAt": "2023-11-07T05:31:56Z",
"metadata": {
"customRules": [
{
"name": "<string>",
"description": "<string>",
"ruleType": "custom_sql",
"parameters": {
"sql": "<string>"
},
"targetColumns": [
"<string>"
]
}
],
"libraryRules": [
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"parameters": {},
"targetColumns": [
"<string>"
]
}
],
"totalRulesExecuted": 123,
"recordsValidated": 123,
"usedPrompt": "<string>",
"invalidRules": [
{
"name": "<string>",
"error": "<string>"
}
]
},
"error": "<string>",
"isDryRun": true,
"isWorkflowTriggered": true,
"datasetUri": "<string>",
"anomaliesParquetPath": "<string>",
"strategy": "ISOLATED",
"cdc": {
"strategy": "ISOLATED",
"anomalyCountChanges": {
"previousJobId": "<string>",
"previousValidationId": "<string>",
"anomaliesCountTotal": {
"count": 123,
"change": 123
},
"anomaliesCountByRule": {}
},
"anomaliesStatusParquetPath": "<string>",
"statusCounts": {
"NEW": 123,
"ONGOING": 123,
"RESOLVED": 123,
"REOPENED": 123
}
}
}{
"error": true,
"message": "Authentication required"
}{
"error": true,
"message": "Internal server error",
"details": {}
}Authorizations
API key for authentication
Query Parameters
Response
DataValidationReport · object | null
200
Complete validation report including summary fields, anomaly details by rule, dataset location details, CDC summary, and execution strategy
Unique identifier
Example:
"abc123"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Comparison results between expected and actual data schema
Show child attributes
Show child attributes
Show child attributes
Show child attributes
ISOLATED validates each dataset independently. LINKING_COLUMNS validates data integrity across linked columns between datasets.
Available options:
ISOLATED, LINKING_COLUMNS Show child attributes
Show child attributes
⌘I