curl --request PUT \
--url https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"evidence_limit": 100,
"max_bad_records": 0,
"source_column": "<string>",
"target_column": "<string>",
"tolerance": 0
}
'import requests
url = "https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}"
payload = {
"evidence_limit": 100,
"max_bad_records": 0,
"source_column": "<string>",
"target_column": "<string>",
"tolerance": 0
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
evidence_limit: 100,
max_bad_records: 0,
source_column: '<string>',
target_column: '<string>',
tolerance: 0
})
};
fetch('https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}', 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.generalvalidation.com/api/v1/fabric/tests/{resource_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'evidence_limit' => 100,
'max_bad_records' => 0,
'source_column' => '<string>',
'target_column' => '<string>',
'tolerance' => 0
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}"
payload := strings.NewReader("{\n \"evidence_limit\": 100,\n \"max_bad_records\": 0,\n \"source_column\": \"<string>\",\n \"target_column\": \"<string>\",\n \"tolerance\": 0\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"evidence_limit\": 100,\n \"max_bad_records\": 0,\n \"source_column\": \"<string>\",\n \"target_column\": \"<string>\",\n \"tolerance\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"evidence_limit\": 100,\n \"max_bad_records\": 0,\n \"source_column\": \"<string>\",\n \"target_column\": \"<string>\",\n \"tolerance\": 0\n}"
response = http.request(request)
puts response.read_body{
"function": "COUNT_ROWS",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pair_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"evidence_limit": 100,
"max_bad_records": 0,
"source_column": "<string>",
"target_column": "<string>",
"tolerance": 0
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}Update a Test
Replace a Test definition within its active Table Pair. Existing Run configurations and Results remain unchanged.
Requires the GV.APIContributor application role, or a higher role (Owner > Contributor > Reader).
curl --request PUT \
--url https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"evidence_limit": 100,
"max_bad_records": 0,
"source_column": "<string>",
"target_column": "<string>",
"tolerance": 0
}
'import requests
url = "https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}"
payload = {
"evidence_limit": 100,
"max_bad_records": 0,
"source_column": "<string>",
"target_column": "<string>",
"tolerance": 0
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
evidence_limit: 100,
max_bad_records: 0,
source_column: '<string>',
target_column: '<string>',
tolerance: 0
})
};
fetch('https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}', 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.generalvalidation.com/api/v1/fabric/tests/{resource_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'evidence_limit' => 100,
'max_bad_records' => 0,
'source_column' => '<string>',
'target_column' => '<string>',
'tolerance' => 0
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}"
payload := strings.NewReader("{\n \"evidence_limit\": 100,\n \"max_bad_records\": 0,\n \"source_column\": \"<string>\",\n \"target_column\": \"<string>\",\n \"tolerance\": 0\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"evidence_limit\": 100,\n \"max_bad_records\": 0,\n \"source_column\": \"<string>\",\n \"target_column\": \"<string>\",\n \"tolerance\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.generalvalidation.com/api/v1/fabric/tests/{resource_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"evidence_limit\": 100,\n \"max_bad_records\": 0,\n \"source_column\": \"<string>\",\n \"target_column\": \"<string>\",\n \"tolerance\": 0\n}"
response = http.request(request)
puts response.read_body{
"function": "COUNT_ROWS",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pair_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"evidence_limit": 100,
"max_bad_records": 0,
"source_column": "<string>",
"target_column": "<string>",
"tolerance": 0
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}{
"code": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"diagnostics": {}
}Authorizations
Microsoft Entra application token issued by the caller's Organization tenant for this multitenant API. Request the .default scope and assign the application the required GV.APIReader, GV.APIContributor, or GV.APIOwner role.
Path Parameters
The Test's ID.
Body
The validation function. GET /api/v1/fabric/catalog lists them.
COUNT_ROWS, COUNT, COUNT_DISTINCT, MIN, MAX, AVG, SUM, VALUE, OUTER_VALUE, SET_A_IN_B, SET_B_IN_A, SET_A_EQUALS_B How many mismatched rows a row or set Test saves to your Results Lakehouse. 0 saves none; it never changes the verdict.
0 <= x <= 10000How many mismatches a row or set Test can have and still pass. Aggregate Tests accept only 0.
0 <= x <= 9007199254740991The source column. Omit for COUNT_ROWS.
1 - 255^[^\x00-\x1f\x7f]+$The target column. Omit for COUNT_ROWS.
1 - 255^[^\x00-\x1f\x7f]+$The largest absolute difference that still passes, for aggregate and row Tests. 0 requires exact equality; set Tests accept only 0.
0 <= x <= 1000000000000000Response
Successful Response
The validation function. GET /api/v1/fabric/catalog lists them.
COUNT_ROWS, COUNT, COUNT_DISTINCT, MIN, MAX, AVG, SUM, VALUE, OUTER_VALUE, SET_A_IN_B, SET_B_IN_A, SET_A_EQUALS_B The Table Pair the Test belongs to.
How many mismatched rows a row or set Test saves to your Results Lakehouse. 0 saves none; it never changes the verdict.
0 <= x <= 10000How many mismatches a row or set Test can have and still pass. Aggregate Tests accept only 0.
0 <= x <= 9007199254740991The source column. Omit for COUNT_ROWS.
1 - 255^[^\x00-\x1f\x7f]+$The target column. Omit for COUNT_ROWS.
1 - 255^[^\x00-\x1f\x7f]+$The largest absolute difference that still passes, for aggregate and row Tests. 0 requires exact equality; set Tests accept only 0.
0 <= x <= 1000000000000000