Update a metric definition
Update the editable subset of a custom metric definition, addressed by its UUID or its stable slug. Only the supplied fields are changed; omitted fields are left unchanged. Every update creates a new immutable version; the response carries the advanced versionId. System metrics and immutable fields (scope, outputType, calcType, …) are rejected. Which fields are editable depends on the metric (e.g. derived metrics only allow name).
curl --request PUT \
--url https://api.roark.ai/v1/metric/definitions/{idOrSlug} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"llmPrompt": "<string>",
"scaleMin": 50,
"scaleMax": 50,
"scaleLabels": [
{
"rangeMin": 123,
"rangeMax": 123,
"label": "<string>",
"displayOrder": 123,
"description": "<string>",
"colorHex": "<string>"
}
],
"booleanTrueLabel": "<string>",
"booleanFalseLabel": "<string>",
"classificationOptions": [
{
"label": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"maxClassifications": 2,
"toolDefinitionIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"supportedContexts": [],
"formula": "<string>",
"sources": [
{
"sourceMetricDefinitionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sourceVariantId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"changeReason": "<string>",
"slug": "<unknown>",
"metricId": "<unknown>",
"source": "<unknown>",
"organizationId": "<unknown>",
"projectId": "<unknown>",
"outputType": "<unknown>",
"scope": "<unknown>",
"participantRole": "<unknown>",
"calcType": "<unknown>",
"supportsMultipleVariants": "<unknown>",
"analysisPackageId": "<unknown>"
}
'import requests
url = "https://api.roark.ai/v1/metric/definitions/{idOrSlug}"
payload = {
"name": "<string>",
"llmPrompt": "<string>",
"scaleMin": 50,
"scaleMax": 50,
"scaleLabels": [
{
"rangeMin": 123,
"rangeMax": 123,
"label": "<string>",
"displayOrder": 123,
"description": "<string>",
"colorHex": "<string>"
}
],
"booleanTrueLabel": "<string>",
"booleanFalseLabel": "<string>",
"classificationOptions": [
{
"label": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"maxClassifications": 2,
"toolDefinitionIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"supportedContexts": [],
"formula": "<string>",
"sources": [
{
"sourceMetricDefinitionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sourceVariantId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"changeReason": "<string>",
"slug": "<unknown>",
"metricId": "<unknown>",
"source": "<unknown>",
"organizationId": "<unknown>",
"projectId": "<unknown>",
"outputType": "<unknown>",
"scope": "<unknown>",
"participantRole": "<unknown>",
"calcType": "<unknown>",
"supportsMultipleVariants": "<unknown>",
"analysisPackageId": "<unknown>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
llmPrompt: '<string>',
scaleMin: 50,
scaleMax: 50,
scaleLabels: [
{
rangeMin: 123,
rangeMax: 123,
label: '<string>',
displayOrder: 123,
description: '<string>',
colorHex: '<string>'
}
],
booleanTrueLabel: '<string>',
booleanFalseLabel: '<string>',
classificationOptions: [{label: '<string>', description: '<string>', displayOrder: 123}],
maxClassifications: 2,
toolDefinitionIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
supportedContexts: [],
formula: '<string>',
sources: [
{
sourceMetricDefinitionId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
sourceVariantId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
}
],
changeReason: '<string>',
slug: '<unknown>',
metricId: '<unknown>',
source: '<unknown>',
organizationId: '<unknown>',
projectId: '<unknown>',
outputType: '<unknown>',
scope: '<unknown>',
participantRole: '<unknown>',
calcType: '<unknown>',
supportsMultipleVariants: '<unknown>',
analysisPackageId: '<unknown>'
})
};
fetch('https://api.roark.ai/v1/metric/definitions/{idOrSlug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.roark.ai/v1/metric/definitions/{idOrSlug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'llmPrompt' => '<string>',
'scaleMin' => 50,
'scaleMax' => 50,
'scaleLabels' => [
[
'rangeMin' => 123,
'rangeMax' => 123,
'label' => '<string>',
'displayOrder' => 123,
'description' => '<string>',
'colorHex' => '<string>'
]
],
'booleanTrueLabel' => '<string>',
'booleanFalseLabel' => '<string>',
'classificationOptions' => [
[
'label' => '<string>',
'description' => '<string>',
'displayOrder' => 123
]
],
'maxClassifications' => 2,
'toolDefinitionIds' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'supportedContexts' => [
],
'formula' => '<string>',
'sources' => [
[
'sourceMetricDefinitionId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'sourceVariantId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'changeReason' => '<string>',
'slug' => '<unknown>',
'metricId' => '<unknown>',
'source' => '<unknown>',
'organizationId' => '<unknown>',
'projectId' => '<unknown>',
'outputType' => '<unknown>',
'scope' => '<unknown>',
'participantRole' => '<unknown>',
'calcType' => '<unknown>',
'supportsMultipleVariants' => '<unknown>',
'analysisPackageId' => '<unknown>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.roark.ai/v1/metric/definitions/{idOrSlug}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"llmPrompt\": \"<string>\",\n \"scaleMin\": 50,\n \"scaleMax\": 50,\n \"scaleLabels\": [\n {\n \"rangeMin\": 123,\n \"rangeMax\": 123,\n \"label\": \"<string>\",\n \"displayOrder\": 123,\n \"description\": \"<string>\",\n \"colorHex\": \"<string>\"\n }\n ],\n \"booleanTrueLabel\": \"<string>\",\n \"booleanFalseLabel\": \"<string>\",\n \"classificationOptions\": [\n {\n \"label\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"maxClassifications\": 2,\n \"toolDefinitionIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"supportedContexts\": [],\n \"formula\": \"<string>\",\n \"sources\": [\n {\n \"sourceMetricDefinitionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sourceVariantId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"changeReason\": \"<string>\",\n \"slug\": \"<unknown>\",\n \"metricId\": \"<unknown>\",\n \"source\": \"<unknown>\",\n \"organizationId\": \"<unknown>\",\n \"projectId\": \"<unknown>\",\n \"outputType\": \"<unknown>\",\n \"scope\": \"<unknown>\",\n \"participantRole\": \"<unknown>\",\n \"calcType\": \"<unknown>\",\n \"supportsMultipleVariants\": \"<unknown>\",\n \"analysisPackageId\": \"<unknown>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.roark.ai/v1/metric/definitions/{idOrSlug}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"llmPrompt\": \"<string>\",\n \"scaleMin\": 50,\n \"scaleMax\": 50,\n \"scaleLabels\": [\n {\n \"rangeMin\": 123,\n \"rangeMax\": 123,\n \"label\": \"<string>\",\n \"displayOrder\": 123,\n \"description\": \"<string>\",\n \"colorHex\": \"<string>\"\n }\n ],\n \"booleanTrueLabel\": \"<string>\",\n \"booleanFalseLabel\": \"<string>\",\n \"classificationOptions\": [\n {\n \"label\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"maxClassifications\": 2,\n \"toolDefinitionIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"supportedContexts\": [],\n \"formula\": \"<string>\",\n \"sources\": [\n {\n \"sourceMetricDefinitionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sourceVariantId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"changeReason\": \"<string>\",\n \"slug\": \"<unknown>\",\n \"metricId\": \"<unknown>\",\n \"source\": \"<unknown>\",\n \"organizationId\": \"<unknown>\",\n \"projectId\": \"<unknown>\",\n \"outputType\": \"<unknown>\",\n \"scope\": \"<unknown>\",\n \"participantRole\": \"<unknown>\",\n \"calcType\": \"<unknown>\",\n \"supportsMultipleVariants\": \"<unknown>\",\n \"analysisPackageId\": \"<unknown>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.roark.ai/v1/metric/definitions/{idOrSlug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"llmPrompt\": \"<string>\",\n \"scaleMin\": 50,\n \"scaleMax\": 50,\n \"scaleLabels\": [\n {\n \"rangeMin\": 123,\n \"rangeMax\": 123,\n \"label\": \"<string>\",\n \"displayOrder\": 123,\n \"description\": \"<string>\",\n \"colorHex\": \"<string>\"\n }\n ],\n \"booleanTrueLabel\": \"<string>\",\n \"booleanFalseLabel\": \"<string>\",\n \"classificationOptions\": [\n {\n \"label\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"maxClassifications\": 2,\n \"toolDefinitionIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"supportedContexts\": [],\n \"formula\": \"<string>\",\n \"sources\": [\n {\n \"sourceMetricDefinitionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sourceVariantId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"changeReason\": \"<string>\",\n \"slug\": \"<unknown>\",\n \"metricId\": \"<unknown>\",\n \"source\": \"<unknown>\",\n \"organizationId\": \"<unknown>\",\n \"projectId\": \"<unknown>\",\n \"outputType\": \"<unknown>\",\n \"scope\": \"<unknown>\",\n \"participantRole\": \"<unknown>\",\n \"calcType\": \"<unknown>\",\n \"supportsMultipleVariants\": \"<unknown>\",\n \"analysisPackageId\": \"<unknown>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"metricId": "<string>",
"variantId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"versionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"supportedContexts": [],
"calculationType": "<string>",
"unit": {
"name": "<string>",
"symbol": "<string>"
}
}
}{
"type": "validation",
"code": "invalid_parameter",
"message": "The request was invalid",
"param": "email"
}{
"type": "authentication",
"code": "unauthorized",
"message": "Authentication required"
}{
"type": "forbidden",
"code": "permission_denied",
"message": "You do not have permission to access this resource"
}{
"type": "not_found",
"code": "resource_not_found",
"message": "The requested resource could not be found"
}{
"type": "rate_limit",
"code": "too_many_requests",
"message": "Rate limit exceeded"
}{
"type": "internal",
"code": "internal_error",
"message": "Internal server error"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The metric definition's Roark ID (UUID) or its stable slug (e.g. customer_satisfaction).
Body
Editable subset of a metric definition. Every update creates a new immutable version. Immutable fields (slug, scope, outputType, calcType, …) are rejected with a 400.
New name (only for metrics whose name is editable)
1 - 100New LLM prompt (only for LLM_JUDGE metrics whose prompt is editable)
2000New scale minimum (SCALE output only)
0 <= x <= 100New scale maximum (SCALE output only)
0 <= x <= 100Replacement set of scale-range labels (SCALE output only)
Show child attributes
Show child attributes
New label for the true case (BOOLEAN output only)
New label for the false case (BOOLEAN output only)
Replacement set of classification options (CLASSIFICATION output only)
1Show child attributes
Show child attributes
New maximum number of classifications (CLASSIFICATION output only)
x >= 1Replacement set of scoped tool-definition ids (only for metrics whose tool scoping is editable)
Replacement set of supported contexts. Omit to leave unchanged.
1CALL, SEGMENT, TURN New formula expression (FORMULA only). Pass sources alongside if the referenced metrics change.
1 - 500Replacement formula sources, required when formula changes the referenced metrics (FORMULA only).
Show child attributes
Show child attributes
Optional free-text audit note recorded on the new version.
Response
The updated metric definition (with versionId advanced to the new version)
The updated metric definition. The variant is selected by calculationType.
- LLM judge metric
- Formula metric
- Pattern metric
- Threshold metric
Show child attributes
Show child attributes
curl --request PUT \
--url https://api.roark.ai/v1/metric/definitions/{idOrSlug} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"llmPrompt": "<string>",
"scaleMin": 50,
"scaleMax": 50,
"scaleLabels": [
{
"rangeMin": 123,
"rangeMax": 123,
"label": "<string>",
"displayOrder": 123,
"description": "<string>",
"colorHex": "<string>"
}
],
"booleanTrueLabel": "<string>",
"booleanFalseLabel": "<string>",
"classificationOptions": [
{
"label": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"maxClassifications": 2,
"toolDefinitionIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"supportedContexts": [],
"formula": "<string>",
"sources": [
{
"sourceMetricDefinitionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sourceVariantId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"changeReason": "<string>",
"slug": "<unknown>",
"metricId": "<unknown>",
"source": "<unknown>",
"organizationId": "<unknown>",
"projectId": "<unknown>",
"outputType": "<unknown>",
"scope": "<unknown>",
"participantRole": "<unknown>",
"calcType": "<unknown>",
"supportsMultipleVariants": "<unknown>",
"analysisPackageId": "<unknown>"
}
'import requests
url = "https://api.roark.ai/v1/metric/definitions/{idOrSlug}"
payload = {
"name": "<string>",
"llmPrompt": "<string>",
"scaleMin": 50,
"scaleMax": 50,
"scaleLabels": [
{
"rangeMin": 123,
"rangeMax": 123,
"label": "<string>",
"displayOrder": 123,
"description": "<string>",
"colorHex": "<string>"
}
],
"booleanTrueLabel": "<string>",
"booleanFalseLabel": "<string>",
"classificationOptions": [
{
"label": "<string>",
"description": "<string>",
"displayOrder": 123
}
],
"maxClassifications": 2,
"toolDefinitionIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"supportedContexts": [],
"formula": "<string>",
"sources": [
{
"sourceMetricDefinitionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sourceVariantId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"changeReason": "<string>",
"slug": "<unknown>",
"metricId": "<unknown>",
"source": "<unknown>",
"organizationId": "<unknown>",
"projectId": "<unknown>",
"outputType": "<unknown>",
"scope": "<unknown>",
"participantRole": "<unknown>",
"calcType": "<unknown>",
"supportsMultipleVariants": "<unknown>",
"analysisPackageId": "<unknown>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
llmPrompt: '<string>',
scaleMin: 50,
scaleMax: 50,
scaleLabels: [
{
rangeMin: 123,
rangeMax: 123,
label: '<string>',
displayOrder: 123,
description: '<string>',
colorHex: '<string>'
}
],
booleanTrueLabel: '<string>',
booleanFalseLabel: '<string>',
classificationOptions: [{label: '<string>', description: '<string>', displayOrder: 123}],
maxClassifications: 2,
toolDefinitionIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
supportedContexts: [],
formula: '<string>',
sources: [
{
sourceMetricDefinitionId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
sourceVariantId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
}
],
changeReason: '<string>',
slug: '<unknown>',
metricId: '<unknown>',
source: '<unknown>',
organizationId: '<unknown>',
projectId: '<unknown>',
outputType: '<unknown>',
scope: '<unknown>',
participantRole: '<unknown>',
calcType: '<unknown>',
supportsMultipleVariants: '<unknown>',
analysisPackageId: '<unknown>'
})
};
fetch('https://api.roark.ai/v1/metric/definitions/{idOrSlug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.roark.ai/v1/metric/definitions/{idOrSlug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'llmPrompt' => '<string>',
'scaleMin' => 50,
'scaleMax' => 50,
'scaleLabels' => [
[
'rangeMin' => 123,
'rangeMax' => 123,
'label' => '<string>',
'displayOrder' => 123,
'description' => '<string>',
'colorHex' => '<string>'
]
],
'booleanTrueLabel' => '<string>',
'booleanFalseLabel' => '<string>',
'classificationOptions' => [
[
'label' => '<string>',
'description' => '<string>',
'displayOrder' => 123
]
],
'maxClassifications' => 2,
'toolDefinitionIds' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'supportedContexts' => [
],
'formula' => '<string>',
'sources' => [
[
'sourceMetricDefinitionId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'sourceVariantId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'changeReason' => '<string>',
'slug' => '<unknown>',
'metricId' => '<unknown>',
'source' => '<unknown>',
'organizationId' => '<unknown>',
'projectId' => '<unknown>',
'outputType' => '<unknown>',
'scope' => '<unknown>',
'participantRole' => '<unknown>',
'calcType' => '<unknown>',
'supportsMultipleVariants' => '<unknown>',
'analysisPackageId' => '<unknown>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.roark.ai/v1/metric/definitions/{idOrSlug}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"llmPrompt\": \"<string>\",\n \"scaleMin\": 50,\n \"scaleMax\": 50,\n \"scaleLabels\": [\n {\n \"rangeMin\": 123,\n \"rangeMax\": 123,\n \"label\": \"<string>\",\n \"displayOrder\": 123,\n \"description\": \"<string>\",\n \"colorHex\": \"<string>\"\n }\n ],\n \"booleanTrueLabel\": \"<string>\",\n \"booleanFalseLabel\": \"<string>\",\n \"classificationOptions\": [\n {\n \"label\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"maxClassifications\": 2,\n \"toolDefinitionIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"supportedContexts\": [],\n \"formula\": \"<string>\",\n \"sources\": [\n {\n \"sourceMetricDefinitionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sourceVariantId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"changeReason\": \"<string>\",\n \"slug\": \"<unknown>\",\n \"metricId\": \"<unknown>\",\n \"source\": \"<unknown>\",\n \"organizationId\": \"<unknown>\",\n \"projectId\": \"<unknown>\",\n \"outputType\": \"<unknown>\",\n \"scope\": \"<unknown>\",\n \"participantRole\": \"<unknown>\",\n \"calcType\": \"<unknown>\",\n \"supportsMultipleVariants\": \"<unknown>\",\n \"analysisPackageId\": \"<unknown>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.roark.ai/v1/metric/definitions/{idOrSlug}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"llmPrompt\": \"<string>\",\n \"scaleMin\": 50,\n \"scaleMax\": 50,\n \"scaleLabels\": [\n {\n \"rangeMin\": 123,\n \"rangeMax\": 123,\n \"label\": \"<string>\",\n \"displayOrder\": 123,\n \"description\": \"<string>\",\n \"colorHex\": \"<string>\"\n }\n ],\n \"booleanTrueLabel\": \"<string>\",\n \"booleanFalseLabel\": \"<string>\",\n \"classificationOptions\": [\n {\n \"label\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"maxClassifications\": 2,\n \"toolDefinitionIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"supportedContexts\": [],\n \"formula\": \"<string>\",\n \"sources\": [\n {\n \"sourceMetricDefinitionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sourceVariantId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"changeReason\": \"<string>\",\n \"slug\": \"<unknown>\",\n \"metricId\": \"<unknown>\",\n \"source\": \"<unknown>\",\n \"organizationId\": \"<unknown>\",\n \"projectId\": \"<unknown>\",\n \"outputType\": \"<unknown>\",\n \"scope\": \"<unknown>\",\n \"participantRole\": \"<unknown>\",\n \"calcType\": \"<unknown>\",\n \"supportsMultipleVariants\": \"<unknown>\",\n \"analysisPackageId\": \"<unknown>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.roark.ai/v1/metric/definitions/{idOrSlug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"llmPrompt\": \"<string>\",\n \"scaleMin\": 50,\n \"scaleMax\": 50,\n \"scaleLabels\": [\n {\n \"rangeMin\": 123,\n \"rangeMax\": 123,\n \"label\": \"<string>\",\n \"displayOrder\": 123,\n \"description\": \"<string>\",\n \"colorHex\": \"<string>\"\n }\n ],\n \"booleanTrueLabel\": \"<string>\",\n \"booleanFalseLabel\": \"<string>\",\n \"classificationOptions\": [\n {\n \"label\": \"<string>\",\n \"description\": \"<string>\",\n \"displayOrder\": 123\n }\n ],\n \"maxClassifications\": 2,\n \"toolDefinitionIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"supportedContexts\": [],\n \"formula\": \"<string>\",\n \"sources\": [\n {\n \"sourceMetricDefinitionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sourceVariantId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"changeReason\": \"<string>\",\n \"slug\": \"<unknown>\",\n \"metricId\": \"<unknown>\",\n \"source\": \"<unknown>\",\n \"organizationId\": \"<unknown>\",\n \"projectId\": \"<unknown>\",\n \"outputType\": \"<unknown>\",\n \"scope\": \"<unknown>\",\n \"participantRole\": \"<unknown>\",\n \"calcType\": \"<unknown>\",\n \"supportsMultipleVariants\": \"<unknown>\",\n \"analysisPackageId\": \"<unknown>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"metricId": "<string>",
"variantId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"versionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"supportedContexts": [],
"calculationType": "<string>",
"unit": {
"name": "<string>",
"symbol": "<string>"
}
}
}{
"type": "validation",
"code": "invalid_parameter",
"message": "The request was invalid",
"param": "email"
}{
"type": "authentication",
"code": "unauthorized",
"message": "Authentication required"
}{
"type": "forbidden",
"code": "permission_denied",
"message": "You do not have permission to access this resource"
}{
"type": "not_found",
"code": "resource_not_found",
"message": "The requested resource could not be found"
}{
"type": "rate_limit",
"code": "too_many_requests",
"message": "Rate limit exceeded"
}{
"type": "internal",
"code": "internal_error",
"message": "Internal server error"
}