Api Update Semantic Metric
curl --request POST \
--url http://localhost:8080/api/semantic/metrics/{name}import requests
url = "http://localhost:8080/api/semantic/metrics/{name}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('http://localhost:8080/api/semantic/metrics/{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/semantic/metrics/{name}",
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/{name}"
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/{name}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/semantic/metrics/{name}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Control Plane
Api Update Semantic Metric
Legacy compatibility API: edit a metric directly in both environments (no PR).
The current portal does not use this route; its Metrics catalog is read-only and metric
changes go through an Assistant staging proposal and release checkpoint. Existing API callers
retain the older dual-environment behavior described below.
Editable fields: label, description, status (verified/draft/deprecated or '' to clear), and
the DEFINITION — `agg` (sum/avg/min/max/count/count_distinct) + `expr` (a SQL expression over
the metric's mart columns). Body: {label?, description?, status?, agg?, expr?}. When the
definition changes it is validated by RUNNING the aggregation against the staging marts in
the bound warehouse first; on success the metric's measure is updated in both the staging and prod
semantic YAML and committed directly to both git branches. `meta.platinur.status` stays in
git (worker-preserved on rebuild). Requires GitHub configured. Permission: create_proposals.
`owner` was removed and is no longer accepted.
POST
/
api
/
semantic
/
metrics
/
{name}
Api Update Semantic Metric
curl --request POST \
--url http://localhost:8080/api/semantic/metrics/{name}import requests
url = "http://localhost:8080/api/semantic/metrics/{name}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('http://localhost:8080/api/semantic/metrics/{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/semantic/metrics/{name}",
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/{name}"
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/{name}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/semantic/metrics/{name}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Path Parameters
Response
Successful Response