curl --request GET \
--url https://api.example.com/api/v1/devices/{id}/fault-snapshot/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/devices/{id}/fault-snapshot/"
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/devices/{id}/fault-snapshot/', 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/devices/{id}/fault-snapshot/",
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/devices/{id}/fault-snapshot/"
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/devices/{id}/fault-snapshot/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/devices/{id}/fault-snapshot/")
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{
"device_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"device_name": "<string>",
"resolved_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resolved_test_execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"device_status": {
"operational_status": "unknown",
"health_status": "unknown",
"inventory_status": "planned",
"operational_failure_reason": "<string>",
"operational_failure_details": "<string>"
},
"recent_failed_tests": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cohort_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"test_slug": "<string>",
"stage": "single_node",
"status": "completed",
"evaluation": {
"passed": true,
"reason": "<string>"
},
"error_details": {
"message": "<string>",
"debug_bundle_s3_uri": "<string>",
"slurm_job_id": 1073741823
},
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
],
"pinned_test_execution": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cohort_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"test_slug": "<string>",
"stage": "single_node",
"status": "completed",
"evaluation": {
"passed": true,
"reason": "<string>"
},
"error_details": {
"message": "<string>",
"debug_bundle_s3_uri": "<string>",
"slurm_job_id": 1073741823
},
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
},
"active_execution": {
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "running",
"started_at": "2023-11-07T05:31:56Z"
},
"ai_diagnosis": {
"device_diagnosis": {
"headline": "<string>",
"explanation": "<string>"
},
"job_failure_summary": {
"headline": "<string>",
"explanation": "<string>",
"failure_categories": {}
}
},
"gate": {
"failure_code": "<string>",
"responsible_team": "fleet_manager"
}
}{
"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>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}Get device fault snapshot
Return a consolidated fault/diagnosis snapshot for a device.
Accepts at most one of job_id or test_execution_id to scope the snapshot to a
specific failure; providing both is a 400. A job_id is accepted when the job has
either a status row or test-execution history for the device, and returns 404 only
when the job is unrelated to the device.
ai_diagnosis and gate are null when no failing job/device-status row is found.
A non-null ai_diagnosis whose device_diagnosis/job_failure_summary are both
null means a failing job was found but its AI analysis is not yet available.
curl --request GET \
--url https://api.example.com/api/v1/devices/{id}/fault-snapshot/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/devices/{id}/fault-snapshot/"
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/devices/{id}/fault-snapshot/', 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/devices/{id}/fault-snapshot/",
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/devices/{id}/fault-snapshot/"
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/devices/{id}/fault-snapshot/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/devices/{id}/fault-snapshot/")
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{
"device_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"device_name": "<string>",
"resolved_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resolved_test_execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"device_status": {
"operational_status": "unknown",
"health_status": "unknown",
"inventory_status": "planned",
"operational_failure_reason": "<string>",
"operational_failure_details": "<string>"
},
"recent_failed_tests": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cohort_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"test_slug": "<string>",
"stage": "single_node",
"status": "completed",
"evaluation": {
"passed": true,
"reason": "<string>"
},
"error_details": {
"message": "<string>",
"debug_bundle_s3_uri": "<string>",
"slurm_job_id": 1073741823
},
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
],
"pinned_test_execution": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cohort_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"test_slug": "<string>",
"stage": "single_node",
"status": "completed",
"evaluation": {
"passed": true,
"reason": "<string>"
},
"error_details": {
"message": "<string>",
"debug_bundle_s3_uri": "<string>",
"slurm_job_id": 1073741823
},
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
},
"active_execution": {
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "running",
"started_at": "2023-11-07T05:31:56Z"
},
"ai_diagnosis": {
"device_diagnosis": {
"headline": "<string>",
"explanation": "<string>"
},
"job_failure_summary": {
"headline": "<string>",
"explanation": "<string>",
"failure_categories": {}
}
},
"gate": {
"failure_code": "<string>",
"responsible_team": "fleet_manager"
}
}{
"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>"
]
}
]
}{
"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.
Path Parameters
A UUID string identifying this device.
Response
Consolidated device fault/diagnosis snapshot.
Device status section of the fault snapshot.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The explicitly requested test_execution_id payload when that pointer is a failure. Null when the request is not scoped by test_execution_id.
Show child attributes
Show child attributes
Newest running job/device-status row for the device. Null when no running execution is found in the requested scope.
Show child attributes
Show child attributes
Null when no failing job/device-status row is found. A non-null section with both device_diagnosis and job_failure_summary null means a failing job was found but its AI analysis is not yet available.
Show child attributes
Show child attributes
Failure-code triage gate section of the fault snapshot.
Show child attributes
Show child attributes