curl --request GET \
--url https://api.example.com/api/v1/burn-in/test-executions/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/burn-in/test-executions/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/burn-in/test-executions/', 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.example.com/api/v1/burn-in/test-executions/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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 := "https://api.example.com/api/v1/burn-in/test-executions/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/burn-in/test-executions/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/burn-in/test-executions/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"count": 123,
"results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"test_slug": "multi-node.hello-world",
"stage": "single_node",
"status": "completed",
"execution_mode": "qualifying",
"freshness": "current",
"metrics": [
{
"name": "<string>",
"value": 123,
"unit": "<string>",
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
},
"statistics": {
"mean": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
},
"min": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
},
"max": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
},
"median": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
},
"stdev": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
}
},
"detail": "<string>",
"reason": "<string>"
}
],
"marked_stale_at": "2023-11-07T05:31:56Z",
"active_stale_holds": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "manual",
"operation_slug": "<string>",
"operation_label": "<string>",
"note": "<string>",
"created_by_display_name": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"links": {
"self": "<string>",
"collection": "<string>",
"job": "<string>",
"cohort": "<string>"
},
"job_name": "<string>",
"cohort_device_names": [
"<string>"
],
"cohort_hostlist": "<string>",
"cohort_size": 123,
"evaluation": {
"passed": true,
"reason": "<string>"
},
"device_diagnostics": [
{
"device_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"device_name": "<string>",
"failure_code": "UNMAPPED_APPLICATION_ERROR",
"failure_message": "<string>",
"ai_diagnosis": {
"headline": "<string>",
"explanation": "<string>"
}
}
],
"cohort": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resolved_params": {},
"iteration_summary": {
"requested": 123,
"completed": 123,
"failed": 123,
"completed_iterations": [
123
]
},
"error_details": {
"message": "<string>",
"debug_bundle_s3_uri": "<string>",
"slurm_job_id": 1073741823
},
"nic_metrics": "<unknown>",
"artifact_uri": "<string>",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"slurm_job_id": 1073741823
}
],
"next": "http://api.example.org/accounts/?page=4",
"previous": "http://api.example.org/accounts/?page=2"
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}List test executions
List, retrieve, create (bulk), and update test executions.
Bulk creation is idempotent on (cohort, test_slug, resolved_params): existing rows are returned unchanged, never updated in place. Terminal writes materialise the row’s evaluation in the same transaction as the evidence. Updates go through update/partial_update, which invalidate and re-materialise the evaluation when evaluator inputs change.
curl --request GET \
--url https://api.example.com/api/v1/burn-in/test-executions/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/burn-in/test-executions/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/burn-in/test-executions/', 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.example.com/api/v1/burn-in/test-executions/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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 := "https://api.example.com/api/v1/burn-in/test-executions/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/burn-in/test-executions/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/burn-in/test-executions/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"count": 123,
"results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"test_slug": "multi-node.hello-world",
"stage": "single_node",
"status": "completed",
"execution_mode": "qualifying",
"freshness": "current",
"metrics": [
{
"name": "<string>",
"value": 123,
"unit": "<string>",
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
},
"statistics": {
"mean": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
},
"min": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
},
"max": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
},
"median": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
},
"stdev": {
"value": 123,
"evaluation": {
"passed": true,
"threshold": 123,
"comparator": "gt"
}
}
},
"detail": "<string>",
"reason": "<string>"
}
],
"marked_stale_at": "2023-11-07T05:31:56Z",
"active_stale_holds": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "manual",
"operation_slug": "<string>",
"operation_label": "<string>",
"note": "<string>",
"created_by_display_name": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"links": {
"self": "<string>",
"collection": "<string>",
"job": "<string>",
"cohort": "<string>"
},
"job_name": "<string>",
"cohort_device_names": [
"<string>"
],
"cohort_hostlist": "<string>",
"cohort_size": 123,
"evaluation": {
"passed": true,
"reason": "<string>"
},
"device_diagnostics": [
{
"device_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"device_name": "<string>",
"failure_code": "UNMAPPED_APPLICATION_ERROR",
"failure_message": "<string>",
"ai_diagnosis": {
"headline": "<string>",
"explanation": "<string>"
}
}
],
"cohort": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resolved_params": {},
"iteration_summary": {
"requested": 123,
"completed": 123,
"failed": 123,
"completed_iterations": [
123
]
},
"error_details": {
"message": "<string>",
"debug_bundle_s3_uri": "<string>",
"slurm_job_id": 1073741823
},
"nic_metrics": "<unknown>",
"artifact_uri": "<string>",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"slurm_job_id": 1073741823
}
],
"next": "http://api.example.org/accounts/?page=4",
"previous": "http://api.example.org/accounts/?page=2"
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Query Parameters
Multiple values may be separated by commas.
Multiple values may be separated by commas.
Filter results by evidence execution mode.
qualifying- Qualifyingdebug- Debug
qualifying, debug Filter results by evidence freshness.
current- Currentstale- Stale
current, stale Multiple values may be separated by commas.
Multiple values may be separated by commas.
Number of results to return per page.
1 <= x <= 500A page number within the paginated result set.
Filter by one or more test stages. Accepts a comma-separated list (stage=single_node,pairwise) or a repeated parameter (stage=single_node&stage=pairwise).
single_node- Single Nodepairwise- Pairwisecollective- Collective
single_node, pairwise, collective Filter results by test execution status.
completed- Completedpassed- Passedfailed- Failederror- Error
completed, passed, failed, error