curl --request DELETE \
--url http://localhost:8080/api/v1/catalog/{name} \
--header 'x-api-key: <api-key>'import requests
url = "http://localhost:8080/api/v1/catalog/{name}"
headers = {"x-api-key": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {'x-api-key': '<api-key>'}};
fetch('http://localhost:8080/api/v1/catalog/{name}', 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/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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/{name}"
req, _ := http.NewRequest("DELETE", 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.delete("http://localhost:8080/api/v1/catalog/{name}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/catalog/{name}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Delete.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"detached": [
"<string>"
],
"deleted": [
"<string>"
],
"failed": [
{
"name": "<string>",
"error": "<string>"
}
],
"warnings": [
{
"pipeline": "<string>",
"message": "<string>"
}
]
}{
"detached": [
"<string>"
],
"deleted": [
"<string>"
],
"failed": [
{
"name": "<string>",
"error": "<string>"
}
],
"warnings": [
{
"pipeline": "<string>",
"message": "<string>"
}
]
}Delete a catalog (detach or cascade)
mode=detach (default) clears catalog on every member so it appears under Uncataloged, through a versioned write per member. mode=cascade deletes every member tap and pipeline, including each pipeline’s destination data, and requires confirm equal to name. Both remove every placeholder of the catalog (matched by its catalog field, or by name suffix when that field is empty). A member already moved out of name by a concurrent change is listed under failed. Not transactional: failed members are listed under failed (207). Catalog operations (rename, detach, cascade) are serialized server-side, so concurrent requests run one after another and the later one sees the earlier one’s result. Requires pipeline:delete; each member is also checked against the key’s owner and catalog scopes, and the placeholder is left untouched if any member is refused. In cascade mode, if any tap delete fails, the catalog’s pipelines are not deleted and are reported under failed. A cascade response also carries warnings (always present, possibly empty): one entry per deleted pipeline that needs a follow-up, such as a Unity Catalog table Datris could not drop; warnings never change the status code. Refused with 409 while an ordered enable of the catalog (POST /api/v1/catalog/{name}/enable-ordered) is running.
curl --request DELETE \
--url http://localhost:8080/api/v1/catalog/{name} \
--header 'x-api-key: <api-key>'import requests
url = "http://localhost:8080/api/v1/catalog/{name}"
headers = {"x-api-key": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {'x-api-key': '<api-key>'}};
fetch('http://localhost:8080/api/v1/catalog/{name}', 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/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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/{name}"
req, _ := http.NewRequest("DELETE", 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.delete("http://localhost:8080/api/v1/catalog/{name}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/catalog/{name}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Delete.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"detached": [
"<string>"
],
"deleted": [
"<string>"
],
"failed": [
{
"name": "<string>",
"error": "<string>"
}
],
"warnings": [
{
"pipeline": "<string>",
"message": "<string>"
}
]
}{
"detached": [
"<string>"
],
"deleted": [
"<string>"
],
"failed": [
{
"name": "<string>",
"error": "<string>"
}
],
"warnings": [
{
"pipeline": "<string>",
"message": "<string>"
}
]
}Authorizations
Optional API key for authentication (enabled via application.yaml)
Path Parameters
Catalog name. Uncataloged (any case) is refused.
Query Parameters
detach, cascade Required for mode=cascade; must equal the catalog name.
Response
Every member detached or deleted
Carries detached (mode=detach) or deleted (mode=cascade), plus failed.
Show child attributes
Show child attributes
Cascade only (always present there, possibly empty; absent for detach). Follow-up actions for pipelines that were deleted, such as a Unity Catalog table committed through the REST catalog that an admin has to drop. Never affects the 200/207 status.
Show child attributes
Show child attributes
