curl --request GET \
--url https://api.onkernel.com/config-registry/analyses/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onkernel.com/config-registry/analyses/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onkernel.com/config-registry/analyses/{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.onkernel.com/config-registry/analyses/{id}",
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.onkernel.com/config-registry/analyses/{id}"
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.onkernel.com/config-registry/analyses/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onkernel.com/config-registry/analyses/{id}")
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{
"analysis": {
"created_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"failure": {
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
},
"finished_at": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": "running",
"intent": "<string>"
},
"recommendation": {
"browser": {
"gpu": true,
"headless": true,
"stealth": true,
"viewport": {
"height": 800,
"width": 1280,
"refresh_rate": 60
}
},
"evidence": {
"accessed": 1,
"blocked": 1,
"inconclusive": 1,
"last_observed_at": "2023-11-07T05:31:56Z",
"run_count": 1,
"sample_size": 1,
"success_rate": 0.5,
"last_supported_at": "2023-11-07T05:31:56Z"
},
"match_scope": "exact",
"matched_target": "<string>",
"proxy": {
"mode": "direct"
},
"type": "recommendation"
},
"target": {
"domain": "<string>",
"host": "<string>",
"normalized": "<string>"
},
"working_configurations": [
{
"browser": {
"gpu": true,
"headless": true,
"stealth": true,
"viewport": {
"height": 800,
"width": 1280,
"refresh_rate": 60
}
},
"evidence": {
"accessed": 1,
"blocked": 1,
"inconclusive": 1,
"last_observed_at": "2023-11-07T05:31:56Z",
"run_count": 1,
"sample_size": 1,
"success_rate": 0.5,
"last_supported_at": "2023-11-07T05:31:56Z"
},
"match_scope": "exact",
"matched_target": "<string>",
"proxy": {
"mode": "direct"
},
"type": "recommendation"
}
],
"guidance": "<string>",
"workload_outcome": "completed"
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}Get a config analysis
Returns a project-scoped historical analysis and the recommendation outcome concluded by that run. Later knowledge does not change this response.
curl --request GET \
--url https://api.onkernel.com/config-registry/analyses/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onkernel.com/config-registry/analyses/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onkernel.com/config-registry/analyses/{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.onkernel.com/config-registry/analyses/{id}",
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.onkernel.com/config-registry/analyses/{id}"
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.onkernel.com/config-registry/analyses/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onkernel.com/config-registry/analyses/{id}")
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{
"analysis": {
"created_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"failure": {
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
},
"finished_at": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": "running",
"intent": "<string>"
},
"recommendation": {
"browser": {
"gpu": true,
"headless": true,
"stealth": true,
"viewport": {
"height": 800,
"width": 1280,
"refresh_rate": 60
}
},
"evidence": {
"accessed": 1,
"blocked": 1,
"inconclusive": 1,
"last_observed_at": "2023-11-07T05:31:56Z",
"run_count": 1,
"sample_size": 1,
"success_rate": 0.5,
"last_supported_at": "2023-11-07T05:31:56Z"
},
"match_scope": "exact",
"matched_target": "<string>",
"proxy": {
"mode": "direct"
},
"type": "recommendation"
},
"target": {
"domain": "<string>",
"host": "<string>",
"normalized": "<string>"
},
"working_configurations": [
{
"browser": {
"gpu": true,
"headless": true,
"stealth": true,
"viewport": {
"height": 800,
"width": 1280,
"refresh_rate": 60
}
},
"evidence": {
"accessed": 1,
"blocked": 1,
"inconclusive": 1,
"last_observed_at": "2023-11-07T05:31:56Z",
"run_count": 1,
"sample_size": 1,
"success_rate": 0.5,
"last_supported_at": "2023-11-07T05:31:56Z"
},
"match_scope": "exact",
"matched_target": "<string>",
"proxy": {
"mode": "direct"
},
"type": "recommendation"
}
],
"guidance": "<string>",
"workload_outcome": "completed"
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Analysis state and the recommendation outcome concluded by that historical run.
Pollable analysis after workflow submission is acknowledged. Null when no refresh was submitted.
Show child attributes
Show child attributes
Recommendation or structured no-recommendation result for a completed analysis. Null before the analysis produces an outcome.
- Option 1
- Option 2
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Working configurations for the target, ordered with the recommended configuration first.
Show child attributes
Show child attributes
Short advisory markdown to facilitate navigating this target. Returned even when no configuration reached the target, since knowing what prevented success is useful without a configuration. Not verified against this target. Null when nothing applicable was observed or no notes exist.
How far the workload pass got, when an intent was supplied and a pass ran. A run outcome rather than advice, so it is reported whether or not any guidance could be assembled. Null when no intent was supplied or no pass ran.
completed, turn_limit, auth_required, payment_required, blocked, error