curl --request DELETE \
--url 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=sales-analytics' \
--header 'Authorization: Bearer dbn_live_abc123...'
const datamartName = 'sales-analytics';
const response = await fetch(
`https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=${encodeURIComponent(datamartName)}`,
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer dbn_live_abc123...'
}
}
);
const result = await response.json();
if (result.error) {
console.error('Delete failed:', result.error.message);
} else {
console.log('Semantic layer deleted for:', result.id);
}
import requests
response = requests.delete(
'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer',
headers={
'Authorization': 'Bearer dbn_live_abc123...'
},
params={
'datamartName': 'sales-analytics'
}
)
result = response.json()
if result.get('error'):
print(f"Delete failed: {result['error']['message']}")
else:
print(f"Semantic layer deleted for: {result['id']}")
require 'net/http'
require 'json'
uri = URI('https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer')
params = { datamartName: 'sales-analytics' }
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(uri)
request['Authorization'] = 'Bearer dbn_live_abc123...'
response = http.request(request)
result = JSON.parse(response.body)
puts "Deleted: #{result['id']}"
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class DeleteSemanticLayer {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
String datamartName = URLEncoder.encode("sales-analytics", StandardCharsets.UTF_8);
String url = String.format(
"https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=%s",
datamartName
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer dbn_live_abc123...")
.DELETE()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
baseURL := "https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer"
params := url.Values{}
params.Add("datamartName", "sales-analytics")
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
req, _ := http.NewRequest("DELETE", fullURL, nil)
req.Header.Set("Authorization", "Bearer dbn_live_abc123...")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Deleted: %v\n", result["id"])
}
<?php
$params = http_build_query([
'datamartName' => 'sales-analytics'
]);
$url = 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?' . $params;
$options = [
'http' => [
'header' => 'Authorization: Bearer dbn_live_abc123...',
'method' => 'DELETE'
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result, true);
echo "Deleted: " . $response['id'];
?>
{
"id": "sales-analytics"
}
{
"error": {
"code": "INVALID_REQUEST_BODY",
"message": "datamartName query parameter is required"
}
}
{
"error": {
"code": "INVALID_DATAMART",
"message": "Datamart 'nonexistent' not found"
}
}
{
"error": {
"code": "SEMANTIC_LAYER_NOT_FOUND",
"message": "No semantic layer found for datamart 'sales-analytics'."
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Semantic Layer API requires a service token, not a data app API token"
}
}
curl --request DELETE \
--url 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=sales-analytics' \
--header 'Authorization: Bearer dbn_live_abc123...'
const datamartName = 'sales-analytics';
const response = await fetch(
`https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=${encodeURIComponent(datamartName)}`,
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer dbn_live_abc123...'
}
}
);
const result = await response.json();
if (result.error) {
console.error('Delete failed:', result.error.message);
} else {
console.log('Semantic layer deleted for:', result.id);
}
import requests
response = requests.delete(
'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer',
headers={
'Authorization': 'Bearer dbn_live_abc123...'
},
params={
'datamartName': 'sales-analytics'
}
)
result = response.json()
if result.get('error'):
print(f"Delete failed: {result['error']['message']}")
else:
print(f"Semantic layer deleted for: {result['id']}")
require 'net/http'
require 'json'
uri = URI('https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer')
params = { datamartName: 'sales-analytics' }
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(uri)
request['Authorization'] = 'Bearer dbn_live_abc123...'
response = http.request(request)
result = JSON.parse(response.body)
puts "Deleted: #{result['id']}"
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class DeleteSemanticLayer {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
String datamartName = URLEncoder.encode("sales-analytics", StandardCharsets.UTF_8);
String url = String.format(
"https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=%s",
datamartName
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer dbn_live_abc123...")
.DELETE()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
baseURL := "https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer"
params := url.Values{}
params.Add("datamartName", "sales-analytics")
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
req, _ := http.NewRequest("DELETE", fullURL, nil)
req.Header.Set("Authorization", "Bearer dbn_live_abc123...")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Deleted: %v\n", result["id"])
}
<?php
$params = http_build_query([
'datamartName' => 'sales-analytics'
]);
$url = 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?' . $params;
$options = [
'http' => [
'header' => 'Authorization: Bearer dbn_live_abc123...',
'method' => 'DELETE'
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result, true);
echo "Deleted: " . $response['id'];
?>
{
"id": "sales-analytics"
}
{
"error": {
"code": "INVALID_REQUEST_BODY",
"message": "datamartName query parameter is required"
}
}
{
"error": {
"code": "INVALID_DATAMART",
"message": "Datamart 'nonexistent' not found"
}
}
{
"error": {
"code": "SEMANTIC_LAYER_NOT_FOUND",
"message": "No semantic layer found for datamart 'sales-analytics'."
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Semantic Layer API requires a service token, not a data app API token"
}
}
Semantic Layer APIs
Delete Semantic Layer
Delete the semantic layer from a datamart, removing all descriptions, synonyms, column types, and feedback.
curl --request DELETE \
--url 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=sales-analytics' \
--header 'Authorization: Bearer dbn_live_abc123...'
const datamartName = 'sales-analytics';
const response = await fetch(
`https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=${encodeURIComponent(datamartName)}`,
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer dbn_live_abc123...'
}
}
);
const result = await response.json();
if (result.error) {
console.error('Delete failed:', result.error.message);
} else {
console.log('Semantic layer deleted for:', result.id);
}
import requests
response = requests.delete(
'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer',
headers={
'Authorization': 'Bearer dbn_live_abc123...'
},
params={
'datamartName': 'sales-analytics'
}
)
result = response.json()
if result.get('error'):
print(f"Delete failed: {result['error']['message']}")
else:
print(f"Semantic layer deleted for: {result['id']}")
require 'net/http'
require 'json'
uri = URI('https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer')
params = { datamartName: 'sales-analytics' }
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(uri)
request['Authorization'] = 'Bearer dbn_live_abc123...'
response = http.request(request)
result = JSON.parse(response.body)
puts "Deleted: #{result['id']}"
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class DeleteSemanticLayer {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
String datamartName = URLEncoder.encode("sales-analytics", StandardCharsets.UTF_8);
String url = String.format(
"https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=%s",
datamartName
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer dbn_live_abc123...")
.DELETE()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
baseURL := "https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer"
params := url.Values{}
params.Add("datamartName", "sales-analytics")
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
req, _ := http.NewRequest("DELETE", fullURL, nil)
req.Header.Set("Authorization", "Bearer dbn_live_abc123...")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Deleted: %v\n", result["id"])
}
<?php
$params = http_build_query([
'datamartName' => 'sales-analytics'
]);
$url = 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?' . $params;
$options = [
'http' => [
'header' => 'Authorization: Bearer dbn_live_abc123...',
'method' => 'DELETE'
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result, true);
echo "Deleted: " . $response['id'];
?>
{
"id": "sales-analytics"
}
{
"error": {
"code": "INVALID_REQUEST_BODY",
"message": "datamartName query parameter is required"
}
}
{
"error": {
"code": "INVALID_DATAMART",
"message": "Datamart 'nonexistent' not found"
}
}
{
"error": {
"code": "SEMANTIC_LAYER_NOT_FOUND",
"message": "No semantic layer found for datamart 'sales-analytics'."
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Semantic Layer API requires a service token, not a data app API token"
}
}
DELETE
/
api
/
v2
/
data-app
/
datamarts
/
semantic-layer
curl --request DELETE \
--url 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=sales-analytics' \
--header 'Authorization: Bearer dbn_live_abc123...'
const datamartName = 'sales-analytics';
const response = await fetch(
`https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=${encodeURIComponent(datamartName)}`,
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer dbn_live_abc123...'
}
}
);
const result = await response.json();
if (result.error) {
console.error('Delete failed:', result.error.message);
} else {
console.log('Semantic layer deleted for:', result.id);
}
import requests
response = requests.delete(
'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer',
headers={
'Authorization': 'Bearer dbn_live_abc123...'
},
params={
'datamartName': 'sales-analytics'
}
)
result = response.json()
if result.get('error'):
print(f"Delete failed: {result['error']['message']}")
else:
print(f"Semantic layer deleted for: {result['id']}")
require 'net/http'
require 'json'
uri = URI('https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer')
params = { datamartName: 'sales-analytics' }
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(uri)
request['Authorization'] = 'Bearer dbn_live_abc123...'
response = http.request(request)
result = JSON.parse(response.body)
puts "Deleted: #{result['id']}"
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class DeleteSemanticLayer {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
String datamartName = URLEncoder.encode("sales-analytics", StandardCharsets.UTF_8);
String url = String.format(
"https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=%s",
datamartName
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer dbn_live_abc123...")
.DELETE()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
baseURL := "https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer"
params := url.Values{}
params.Add("datamartName", "sales-analytics")
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
req, _ := http.NewRequest("DELETE", fullURL, nil)
req.Header.Set("Authorization", "Bearer dbn_live_abc123...")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Deleted: %v\n", result["id"])
}
<?php
$params = http_build_query([
'datamartName' => 'sales-analytics'
]);
$url = 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?' . $params;
$options = [
'http' => [
'header' => 'Authorization: Bearer dbn_live_abc123...',
'method' => 'DELETE'
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result, true);
echo "Deleted: " . $response['id'];
?>
{
"id": "sales-analytics"
}
{
"error": {
"code": "INVALID_REQUEST_BODY",
"message": "datamartName query parameter is required"
}
}
{
"error": {
"code": "INVALID_DATAMART",
"message": "Datamart 'nonexistent' not found"
}
}
{
"error": {
"code": "SEMANTIC_LAYER_NOT_FOUND",
"message": "No semantic layer found for datamart 'sales-analytics'."
}
}
{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Semantic Layer API requires a service token, not a data app API token"
}
}
Permanently remove all semantic layer metadata from a datamart. This clears table descriptions, column metadata (descriptions, synonyms, column types, configs), and feedback. The underlying datamart structure (tables, columns) remains intact.
This action cannot be undone. All semantic metadata — descriptions, synonyms, column types, and feedback — will be permanently removed.
The datamart itself is not deleted. Only the semantic layer enrichments are removed. You can recreate the semantic layer using the POST endpoint.
Authentication
This endpoint requires a service token in the Authorization header. Data app API tokens are not permitted and will be rejected with a403 error.
To access your service token:
- Go to your Databrain dashboard and open Settings.
- Navigate to Settings.
- Find the Service Tokens section.
- Click the “Generate Token” button to generate a new service token if you don’t have one already.
Headers
string
required
Bearer token for API authentication. Use your service token.
Authorization: Bearer dbn_live_abc123...
Query Parameters
string
required
The name of the datamart whose semantic layer you want to delete. Must match an existing datamart that has semantic data.
Show Finding datamart names
Show Finding datamart names
- Use the List Datamarts API to get all datamart names
- Use the Get Semantic Layer API to confirm semantic data exists
Response
On success, the response body contains only the datamart name. There is noerror field in the JSON body when the request succeeds.
string
The name of the datamart whose semantic layer was deleted.
Examples
HTTP Status Code Summary
| Status Code | Description |
|---|---|
200 | OK — Semantic layer deleted successfully |
400 | Bad Request — Missing datamartName or datamart not found |
401 | Unauthorized — Invalid or missing API token |
403 | Forbidden — Data app token used instead of service token |
404 | Not Found — No semantic layer exists for this datamart |
500 | Internal Server Error — Server error occurred |
Possible Errors
| Error Code | HTTP Status | Description |
|---|---|---|
INVALID_REQUEST_BODY | 400 | datamartName query parameter is missing |
INVALID_DATAMART | 400 | Datamart not found |
SEMANTIC_LAYER_NOT_FOUND | 404 | No semantic layer exists for this datamart |
AUTHENTICATION_ERROR | 403 | Data app token used instead of service token |
INTERNAL_SERVER_ERROR | 500 | Server error |
Best Practices
Backup First
Use the GET endpoint to save a copy of the semantic layer before deleting
Check Dependencies
AI chat mode relies on the semantic layer — verify impact before deleting
Quick Start Guide
1
Backup the semantic layer
Retrieve and save the current semantic layer data:
curl --request GET \
--url 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=sales-analytics' \
--header 'Authorization: Bearer dbn_live_abc123...' \
-o semantic-layer-backup.json
2
Delete the semantic layer
curl --request DELETE \
--url 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=sales-analytics' \
--header 'Authorization: Bearer dbn_live_abc123...'
3
Verify deletion
Retrieve the datamart again to confirm the semantic layer was cleared:The response should show
curl --request GET \
--url 'https://api.usedatabrain.com/api/v2/data-app/datamarts/semantic-layer?datamartName=sales-analytics' \
--header 'Authorization: Bearer dbn_live_abc123...'
null descriptions, empty synonyms, and a completion score of 0.Next Steps
Create Semantic Layer
Recreate the semantic layer with fresh metadata
Get Semantic Layer
Verify the deletion
Semantic Layer Guide
Configure the semantic layer in the Databrain UI
List Datamarts
View your datamarts
⌘I

