curl --request GET \
--url http://localhost:8080/api/v1/lineage/columns/{pipeline} \
--header 'x-api-key: <api-key>'import requests
url = "http://localhost:8080/api/v1/lineage/columns/{pipeline}"
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('http://localhost:8080/api/v1/lineage/columns/{pipeline}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/v1/lineage/columns/{pipeline}",
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 := "http://localhost:8080/api/v1/lineage/columns/{pipeline}"
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("http://localhost:8080/api/v1/lineage/columns/{pipeline}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/lineage/columns/{pipeline}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"pipeline": "<string>",
"version": 123,
"versionSource": "current",
"sourceFields": [
"<string>"
],
"destinationFields": [
"<string>"
],
"destinationSchema": "declared",
"transformation": {
"kind": "ai",
"instruction": "<string>"
},
"edges": [
{
"from": [
"<string>"
],
"to": "<string>",
"op": "passthrough",
"confidence": "exact",
"evidence": "<string>"
}
],
"unresolved": [
"<string>"
],
"inferred": {
"available": true,
"computed": true,
"computedAt": "<string>",
"model": "<string>",
"note": "<string>",
"error": "<string>"
}
}Column-level lineage for one pipeline definition
Which destination columns come from which source fields. The deterministic tier (schema comparison: passthrough / drop edges with confidence exact, stamped provenance columns as system) is always returned. For pipelines with an AI transformation, infer=true runs the opt-in extraction — the codegen model reads the instruction, the field lists and the last generated script, and returns only mappings it can evidence (rename / derive / drop, confidence inferred). Inferred results are cached per definition version and never recomputed unless the definition changes.
curl --request GET \
--url http://localhost:8080/api/v1/lineage/columns/{pipeline} \
--header 'x-api-key: <api-key>'import requests
url = "http://localhost:8080/api/v1/lineage/columns/{pipeline}"
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('http://localhost:8080/api/v1/lineage/columns/{pipeline}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/v1/lineage/columns/{pipeline}",
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 := "http://localhost:8080/api/v1/lineage/columns/{pipeline}"
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("http://localhost:8080/api/v1/lineage/columns/{pipeline}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/lineage/columns/{pipeline}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"pipeline": "<string>",
"version": 123,
"versionSource": "current",
"sourceFields": [
"<string>"
],
"destinationFields": [
"<string>"
],
"destinationSchema": "declared",
"transformation": {
"kind": "ai",
"instruction": "<string>"
},
"edges": [
{
"from": [
"<string>"
],
"to": "<string>",
"op": "passthrough",
"confidence": "exact",
"evidence": "<string>"
}
],
"unresolved": [
"<string>"
],
"inferred": {
"available": true,
"computed": true,
"computedAt": "<string>",
"model": "<string>",
"note": "<string>",
"error": "<string>"
}
}Authorizations
Optional API key for authentication (enabled via application.yaml)
Path Parameters
Query Parameters
A definition version snapshot; default is the current definition.
Run (and cache) the AI-inferred tier when applicable. Off by default.
Response
Column lineage
current, snapshot declared, inherited, none Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
