curl --request PUT \
--url https://api.egp.scale.com/v5/evaluation-groups/{group_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"tags": [
"<string>"
],
"name": "<string>",
"description": "<string>",
"metadata": {},
"evaluation_ids": [
"<string>"
],
"row_identifiers": {}
}
'import requests
url = "https://api.egp.scale.com/v5/evaluation-groups/{group_id}"
payload = {
"tags": ["<string>"],
"name": "<string>",
"description": "<string>",
"metadata": {},
"evaluation_ids": ["<string>"],
"row_identifiers": {}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tags: ['<string>'],
name: '<string>',
description: '<string>',
metadata: {},
evaluation_ids: ['<string>'],
row_identifiers: {}
})
};
fetch('https://api.egp.scale.com/v5/evaluation-groups/{group_id}', 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.egp.scale.com/v5/evaluation-groups/{group_id}",
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([
'tags' => [
'<string>'
],
'name' => '<string>',
'description' => '<string>',
'metadata' => [
],
'evaluation_ids' => [
'<string>'
],
'row_identifiers' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.egp.scale.com/v5/evaluation-groups/{group_id}"
payload := strings.NewReader("{\n \"tags\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"evaluation_ids\": [\n \"<string>\"\n ],\n \"row_identifiers\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.egp.scale.com/v5/evaluation-groups/{group_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"tags\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"evaluation_ids\": [\n \"<string>\"\n ],\n \"row_identifiers\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.egp.scale.com/v5/evaluation-groups/{group_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tags\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"evaluation_ids\": [\n \"<string>\"\n ],\n \"row_identifiers\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"tags": [
"<string>"
],
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"account_id": "<string>",
"object": "evaluation_group",
"description": "<string>",
"metadata": {},
"deleted_at": "2023-11-07T05:31:56Z",
"members": [
{
"id": "<string>",
"evaluation_group_id": "<string>",
"evaluation_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"object": "evaluation_group.member",
"evaluation_name": "<string>",
"evaluation_tags": [
"<string>"
],
"evaluation_created_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z"
}
],
"row_identifiers": [
{
"evaluation_id": "<string>",
"column_name": "<string>",
"object": "evaluation_group.row_identifier"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Update Evaluation Group
Replace an evaluation group’s attributes and, optionally, its membership.
This is a full replacement of the group’s attributes: every attribute field (name, description, tags, metadata) is written from the request, so omitting an optional field clears it rather than leaving it unchanged. Use PATCH instead to update only selected fields and to merge (rather than overwrite) metadata. Membership is replaced only when evaluation_ids is supplied: the resulting members become exactly that set (added/removed by diff against the current members), it must contain at least one ID with no duplicates, and every ID is validated for existence and account access or the request fails with a 400. When membership actually changes, a best-effort Temporal workflow is started to recompute the group’s dashboard widgets; this is fire-and-forget and its failure does not fail the request. Removing members hard-deletes the corresponding chart columns and any charts left with no columns.
curl --request PUT \
--url https://api.egp.scale.com/v5/evaluation-groups/{group_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"tags": [
"<string>"
],
"name": "<string>",
"description": "<string>",
"metadata": {},
"evaluation_ids": [
"<string>"
],
"row_identifiers": {}
}
'import requests
url = "https://api.egp.scale.com/v5/evaluation-groups/{group_id}"
payload = {
"tags": ["<string>"],
"name": "<string>",
"description": "<string>",
"metadata": {},
"evaluation_ids": ["<string>"],
"row_identifiers": {}
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tags: ['<string>'],
name: '<string>',
description: '<string>',
metadata: {},
evaluation_ids: ['<string>'],
row_identifiers: {}
})
};
fetch('https://api.egp.scale.com/v5/evaluation-groups/{group_id}', 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.egp.scale.com/v5/evaluation-groups/{group_id}",
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([
'tags' => [
'<string>'
],
'name' => '<string>',
'description' => '<string>',
'metadata' => [
],
'evaluation_ids' => [
'<string>'
],
'row_identifiers' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.egp.scale.com/v5/evaluation-groups/{group_id}"
payload := strings.NewReader("{\n \"tags\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"evaluation_ids\": [\n \"<string>\"\n ],\n \"row_identifiers\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.egp.scale.com/v5/evaluation-groups/{group_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"tags\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"evaluation_ids\": [\n \"<string>\"\n ],\n \"row_identifiers\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.egp.scale.com/v5/evaluation-groups/{group_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tags\": [\n \"<string>\"\n ],\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"evaluation_ids\": [\n \"<string>\"\n ],\n \"row_identifiers\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"tags": [
"<string>"
],
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"account_id": "<string>",
"object": "evaluation_group",
"description": "<string>",
"metadata": {},
"deleted_at": "2023-11-07T05:31:56Z",
"members": [
{
"id": "<string>",
"evaluation_group_id": "<string>",
"evaluation_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"object": "evaluation_group.member",
"evaluation_name": "<string>",
"evaluation_tags": [
"<string>"
],
"evaluation_created_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z"
}
],
"row_identifiers": [
{
"evaluation_id": "<string>",
"column_name": "<string>",
"object": "evaluation_group.row_identifier"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Body
Request model for full update of evaluation group (metadata and members)
Response
Successful Response
Response model for evaluation group

