component
Get component diff between two versions
Compare two versions of a component’s lineage. Returns a high-level summary of all path-level changes.
GET
/
v0
/
component
/
diff
/
{id}
Get component diff between two versions
curl --request GET \
--url https://{hostname}.gable.ai/v0/component/diff/{id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://{hostname}.gable.ai/v0/component/diff/{id}"
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://{hostname}.gable.ai/v0/component/diff/{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://{hostname}.gable.ai/v0/component/diff/{id}",
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://{hostname}.gable.ai/v0/component/diff/{id}"
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://{hostname}.gable.ai/v0/component/diff/{id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{hostname}.gable.ai/v0/component/diff/{id}")
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{
"metadata": {
"componentName": "<string>",
"componentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"baseEventId": "<string>",
"baseDate": "2023-11-07T05:31:56Z",
"compareEventId": "<string>",
"compareDate": "2023-11-07T05:31:56Z",
"totalAdded": 123,
"totalRemoved": 123,
"totalModified": 123,
"baseLabel": "<string>",
"baseCommitSha": "<string>",
"compareLabel": "<string>",
"compareCommitSha": "<string>",
"totalUnchanged": 123
},
"pathChanges": [
{
"pathId": "<string>",
"ingressName": "<string>",
"egressName": "<string>",
"fieldsAdded": 123,
"fieldsRemoved": 123,
"fieldsChanged": 123,
"totalFields": 123,
"codeStepsAdded": 123,
"codeStepsRemoved": 123,
"codeStepsModified": 123,
"fields": [
{
"sourceField": "<string>",
"targetField": "<string>",
"type": "<string>",
"dataFlowSteps": [
{
"anchorId": "<string>",
"file": "<string>",
"lineStart": 123,
"lineEnd": 123,
"columnStart": 123,
"columnEnd": 123
}
],
"previousDataFlowSteps": [
{
"anchorId": "<string>",
"file": "<string>",
"lineStart": 123,
"lineEnd": 123,
"columnStart": 123,
"columnEnd": 123
}
],
"upstreamDependencies": [
{
"componentName": "<string>",
"field": "<string>",
"hops": 123,
"path": [
{
"componentName": "<string>",
"field": "<string>"
}
]
}
],
"downstreamDependencies": [
{
"componentName": "<string>",
"field": "<string>",
"hops": 123,
"path": [
{
"componentName": "<string>",
"field": "<string>"
}
]
}
]
}
],
"basePathId": "<string>",
"comparePathId": "<string>",
"ingressFunction": "<string>",
"egressFunction": "<string>"
}
]
}{
"message": "<string>",
"id": 123,
"title": "<string>"
}{
"message": "<string>",
"id": 123,
"title": "<string>"
}Authorizations
Path Parameters
UUID of the component
Query Parameters
Base event ID for comparison
Compare event ID for comparison
When true, load lineage from raw scan snapshots and return summary counts only (no field details).
Response
Component diff retrieved successfully
Previous
Get path diff between two versionsCompare a single path between two versions of a component. Returns field-level and code-flow detail.
Next
⌘I
Get component diff between two versions
curl --request GET \
--url https://{hostname}.gable.ai/v0/component/diff/{id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://{hostname}.gable.ai/v0/component/diff/{id}"
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://{hostname}.gable.ai/v0/component/diff/{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://{hostname}.gable.ai/v0/component/diff/{id}",
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://{hostname}.gable.ai/v0/component/diff/{id}"
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://{hostname}.gable.ai/v0/component/diff/{id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{hostname}.gable.ai/v0/component/diff/{id}")
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{
"metadata": {
"componentName": "<string>",
"componentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"baseEventId": "<string>",
"baseDate": "2023-11-07T05:31:56Z",
"compareEventId": "<string>",
"compareDate": "2023-11-07T05:31:56Z",
"totalAdded": 123,
"totalRemoved": 123,
"totalModified": 123,
"baseLabel": "<string>",
"baseCommitSha": "<string>",
"compareLabel": "<string>",
"compareCommitSha": "<string>",
"totalUnchanged": 123
},
"pathChanges": [
{
"pathId": "<string>",
"ingressName": "<string>",
"egressName": "<string>",
"fieldsAdded": 123,
"fieldsRemoved": 123,
"fieldsChanged": 123,
"totalFields": 123,
"codeStepsAdded": 123,
"codeStepsRemoved": 123,
"codeStepsModified": 123,
"fields": [
{
"sourceField": "<string>",
"targetField": "<string>",
"type": "<string>",
"dataFlowSteps": [
{
"anchorId": "<string>",
"file": "<string>",
"lineStart": 123,
"lineEnd": 123,
"columnStart": 123,
"columnEnd": 123
}
],
"previousDataFlowSteps": [
{
"anchorId": "<string>",
"file": "<string>",
"lineStart": 123,
"lineEnd": 123,
"columnStart": 123,
"columnEnd": 123
}
],
"upstreamDependencies": [
{
"componentName": "<string>",
"field": "<string>",
"hops": 123,
"path": [
{
"componentName": "<string>",
"field": "<string>"
}
]
}
],
"downstreamDependencies": [
{
"componentName": "<string>",
"field": "<string>",
"hops": 123,
"path": [
{
"componentName": "<string>",
"field": "<string>"
}
]
}
]
}
],
"basePathId": "<string>",
"comparePathId": "<string>",
"ingressFunction": "<string>",
"egressFunction": "<string>"
}
]
}{
"message": "<string>",
"id": 123,
"title": "<string>"
}{
"message": "<string>",
"id": 123,
"title": "<string>"
}