Api Create Semantic Metric
curl --request POST \
--url http://localhost:8080/api/semantic/metricsimport requests
url = "http://localhost:8080/api/semantic/metrics"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('http://localhost:8080/api/semantic/metrics', 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/semantic/metrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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/semantic/metrics"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8080/api/semantic/metrics")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/semantic/metrics")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyControl Plane
Api Create Semantic Metric
Legacy compatibility API: create a metric directly in both environments (no PR).
The current portal does not use this route; its Metrics catalog is read-only and new metric
work goes through an Assistant staging proposal and release checkpoint. Existing API callers
retain the older dual-environment behavior described below.
Body: {name, label?, description?, mart (ref('mart_x') or 'mart_x'), grain?, agg, expr,
status?}. The definition (agg over expr) is validated by RUNNING it against the staging
marts in the bound warehouse before anything is written; on success the metric (and its measure) are
added to that mart's semantic YAML in both the staging and prod workspaces and committed
directly to both git branches. Requires GitHub configured. Permission: create_proposals.
POST
/
api
/
semantic
/
metrics
Api Create Semantic Metric
curl --request POST \
--url http://localhost:8080/api/semantic/metricsimport requests
url = "http://localhost:8080/api/semantic/metrics"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('http://localhost:8080/api/semantic/metrics', 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/semantic/metrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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/semantic/metrics"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8080/api/semantic/metrics")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/semantic/metrics")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_bodyResponse
200 - application/json
Successful Response