curl --request POST \
--url https://use.hoop.dev/api/sessions/analyze \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"client_args": [
"--verbose"
],
"connection": "bash",
"correlation_id": "task-12345",
"labels": {},
"metadata": {},
"script": "echo 'hello from hoop'"
}
EOFimport requests
url = "https://use.hoop.dev/api/sessions/analyze"
payload = {
"client_args": ["--verbose"],
"connection": "bash",
"correlation_id": "task-12345",
"labels": {},
"metadata": {},
"script": "echo 'hello from hoop'"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
client_args: ['--verbose'],
connection: 'bash',
correlation_id: 'task-12345',
labels: {},
metadata: {},
script: 'echo \'hello from hoop\''
})
};
fetch('https://use.hoop.dev/api/sessions/analyze', 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://use.hoop.dev/api/sessions/analyze",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'client_args' => [
'--verbose'
],
'connection' => 'bash',
'correlation_id' => 'task-12345',
'labels' => [
],
'metadata' => [
],
'script' => 'echo \'hello from hoop\''
]),
CURLOPT_HTTPHEADER => [
"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://use.hoop.dev/api/sessions/analyze"
payload := strings.NewReader("{\n \"client_args\": [\n \"--verbose\"\n ],\n \"connection\": \"bash\",\n \"correlation_id\": \"task-12345\",\n \"labels\": {},\n \"metadata\": {},\n \"script\": \"echo 'hello from hoop'\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://use.hoop.dev/api/sessions/analyze")
.header("Content-Type", "application/json")
.body("{\n \"client_args\": [\n \"--verbose\"\n ],\n \"connection\": \"bash\",\n \"correlation_id\": \"task-12345\",\n \"labels\": {},\n \"metadata\": {},\n \"script\": \"echo 'hello from hoop'\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://use.hoop.dev/api/sessions/analyze")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_args\": [\n \"--verbose\"\n ],\n \"connection\": \"bash\",\n \"correlation_id\": \"task-12345\",\n \"labels\": {},\n \"metadata\": {},\n \"script\": \"echo 'hello from hoop'\"\n}"
response = http.request(request)
puts response.read_body{
"execution_time": 5903,
"exit_code": 1,
"has_review": false,
"output": "<string>",
"output_status": "failed",
"session_id": "5701046A-7B7A-4A78-ABB0-A24C95E6FE54",
"truncated": false
}{
"message": "the error description"
}{
"message": "the error description"
}{
"message": "the error description"
}{
"message": "the error description"
}Analyze an exec before the run forms
Run the AI Session Analyzer on the script of a POST /sessions body, before the client asks for the run forms (Jira template, required metadata). A block is final: the gateway records the blocked session as POST /sessions does. Any other verdict records nothing, and the next POST /sessions of the same user, connection and script reuses it for 15 minutes on the same gateway. Answers 412 while experimental.analyze_before_run_forms is off.
curl --request POST \
--url https://use.hoop.dev/api/sessions/analyze \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"client_args": [
"--verbose"
],
"connection": "bash",
"correlation_id": "task-12345",
"labels": {},
"metadata": {},
"script": "echo 'hello from hoop'"
}
EOFimport requests
url = "https://use.hoop.dev/api/sessions/analyze"
payload = {
"client_args": ["--verbose"],
"connection": "bash",
"correlation_id": "task-12345",
"labels": {},
"metadata": {},
"script": "echo 'hello from hoop'"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
client_args: ['--verbose'],
connection: 'bash',
correlation_id: 'task-12345',
labels: {},
metadata: {},
script: 'echo \'hello from hoop\''
})
};
fetch('https://use.hoop.dev/api/sessions/analyze', 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://use.hoop.dev/api/sessions/analyze",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'client_args' => [
'--verbose'
],
'connection' => 'bash',
'correlation_id' => 'task-12345',
'labels' => [
],
'metadata' => [
],
'script' => 'echo \'hello from hoop\''
]),
CURLOPT_HTTPHEADER => [
"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://use.hoop.dev/api/sessions/analyze"
payload := strings.NewReader("{\n \"client_args\": [\n \"--verbose\"\n ],\n \"connection\": \"bash\",\n \"correlation_id\": \"task-12345\",\n \"labels\": {},\n \"metadata\": {},\n \"script\": \"echo 'hello from hoop'\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://use.hoop.dev/api/sessions/analyze")
.header("Content-Type", "application/json")
.body("{\n \"client_args\": [\n \"--verbose\"\n ],\n \"connection\": \"bash\",\n \"correlation_id\": \"task-12345\",\n \"labels\": {},\n \"metadata\": {},\n \"script\": \"echo 'hello from hoop'\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://use.hoop.dev/api/sessions/analyze")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_args\": [\n \"--verbose\"\n ],\n \"connection\": \"bash\",\n \"correlation_id\": \"task-12345\",\n \"labels\": {},\n \"metadata\": {},\n \"script\": \"echo 'hello from hoop'\"\n}"
response = http.request(request)
puts response.read_body{
"execution_time": 5903,
"exit_code": 1,
"has_review": false,
"output": "<string>",
"output_status": "failed",
"session_id": "5701046A-7B7A-4A78-ABB0-A24C95E6FE54",
"truncated": false
}{
"message": "the error description"
}{
"message": "the error description"
}{
"message": "the error description"
}{
"message": "the error description"
}Body
The request body resource
Additional arguments that will be joined when construction the command to be executed
["--verbose"]
The target connection
"bash"
External workflow/task identifier that groups sessions belonging to the same logical run
"task-12345"
DEPRECATED in flavor of metadata
Show child attributes
Show child attributes
Metadata contains attributes that is going to be available in the Session resource
Show child attributes
Show child attributes
The input of the execution
"echo 'hello from hoop'"
Response
The analyzer blocked the script
The amount of time the execution took in miliseconds
5903
The shell exit code, any non zero code means an error
- 0 - Linux success exit code
- -2 - internal gateway code that means it was unable to obtain a valid exit code number from the agent outcome packet
- 254 - internal agent code that means it was unable to obtain a valid exit code number from the process
1
Inform if the connection requires approval
false
Output contains an utf-8 output containing the outcome of the ad-hoc execution
Status reports if the outcome of the execution
- success - The execution was executed with success
- failed - In case of internal error or when the agent returns an exit code greater than 0 or different than -2
- running - The execution may still be running.
success, failed, running "failed"
Each execution creates a unique session id
"5701046A-7B7A-4A78-ABB0-A24C95E6FE54"
If the `output`` field is truncated or not
false
Was this page helpful?