curl --request GET \
--url http://localhost:8080/api/v1/catalog/find \
--header 'x-api-key: <api-key>'import requests
url = "http://localhost:8080/api/v1/catalog/find"
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/catalog/find', 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/catalog/find",
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/catalog/find"
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/catalog/find")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/catalog/find")
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{
"results": [
{}
],
"count": 123,
"totalMatches": 123,
"unityCatalog": {
"searched": [
"<string>"
],
"skipped": [
{
"secret": "<string>",
"reason": "<string>"
}
]
}
}Find datasets by meaning (discovery, not execution)
Ranks the pipelines the calling key may read against a natural-language query (name, description, tags, catalog, destination field names, source host). Each hit carries location, freshness, provenance handles, lineage and a pre-filled howToQuery hint naming an existing query/search tool — the caller still makes that call itself, under its own capabilities.
curl --request GET \
--url http://localhost:8080/api/v1/catalog/find \
--header 'x-api-key: <api-key>'import requests
url = "http://localhost:8080/api/v1/catalog/find"
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/catalog/find', 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/catalog/find",
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/catalog/find"
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/catalog/find")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/catalog/find")
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{
"results": [
{}
],
"count": 123,
"totalMatches": 123,
"unityCatalog": {
"searched": [
"<string>"
],
"skipped": [
{
"secret": "<string>",
"reason": "<string>"
}
]
}
}Authorizations
Optional API key for authentication (enabled via application.yaml)
Query Parameters
x <= 25Rerank the top candidates with the primary AI model
Also search the Unity Catalog tables visible to every Databricks Platform secret the key can read. Unity Catalog hits follow the Datris hits with source: unity-catalog; every hit then carries source, and the response adds a unityCatalog block. A secret with no resolvable warehouse or a failed connection is listed under unityCatalog.skipped, never an error; so is a secret whose search exceeds the per-secret time limit (DATRIS_UNITY_CATALOG_SEARCH_TIMEOUT_SECONDS, default 45; reason "timed out after Ns"). limit applies separately: up to limit Datris hits plus up to limit additional Unity Catalog hits. Without this flag the response is unchanged.
