Send a run data record
Records a named piece of output for a phase of a run (a run data record), such as a summary or a report. Agents call this through the SDK. The record is queued and sent to CliqHub, which stores it with the run; the daemon keeps no copy, so it is delivered once the daemon is connected even if CliqHub is unreachable at the time.
No credential is needed from this machine. From another host, send Authorization: Bearer with a dispatch token CliqHub signed for this daemon or a cliq_tok_… personal token of a user in the daemon’s realm; this only works once the daemon is connected to CliqHub. See Authentication.
curl --request POST \
--url http://127.0.0.1:4900/v1/runs/create_rdr \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"run_id": "0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f",
"phase": "review",
"name": "findings",
"kind": "output",
"content": "## Findings\n\n1. Token in config.ts\n",
"mime_type": "text/markdown"
}
'import requests
url = "http://127.0.0.1:4900/v1/runs/create_rdr"
payload = {
"run_id": "0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f",
"phase": "review",
"name": "findings",
"kind": "output",
"content": "## Findings
1. Token in config.ts
",
"mime_type": "text/markdown"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
run_id: '0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f',
phase: 'review',
name: 'findings',
kind: 'output',
content: '## Findings\n\n1. Token in config.ts\n',
mime_type: 'text/markdown'
})
};
fetch('http://127.0.0.1:4900/v1/runs/create_rdr', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "4900",
CURLOPT_URL => "http://127.0.0.1:4900/v1/runs/create_rdr",
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([
'run_id' => '0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f',
'phase' => 'review',
'name' => 'findings',
'kind' => 'output',
'content' => '## Findings
1. Token in config.ts
',
'mime_type' => 'text/markdown'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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 := "http://127.0.0.1:4900/v1/runs/create_rdr"
payload := strings.NewReader("{\n \"run_id\": \"0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f\",\n \"phase\": \"review\",\n \"name\": \"findings\",\n \"kind\": \"output\",\n \"content\": \"## Findings\\n\\n1. Token in config.ts\\n\",\n \"mime_type\": \"text/markdown\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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("http://127.0.0.1:4900/v1/runs/create_rdr")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"run_id\": \"0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f\",\n \"phase\": \"review\",\n \"name\": \"findings\",\n \"kind\": \"output\",\n \"content\": \"## Findings\\n\\n1. Token in config.ts\\n\",\n \"mime_type\": \"text/markdown\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:4900/v1/runs/create_rdr")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"run_id\": \"0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f\",\n \"phase\": \"review\",\n \"name\": \"findings\",\n \"kind\": \"output\",\n \"content\": \"## Findings\\n\\n1. Token in config.ts\\n\",\n \"mime_type\": \"text/markdown\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Not needed from the same machine. From another host: a dispatch JWT CliqHub signed for this daemon, or a cliq_tok_… personal token whose user is in the daemon's realm.
Body
curl --request POST \
--url http://127.0.0.1:4900/v1/runs/create_rdr \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"run_id": "0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f",
"phase": "review",
"name": "findings",
"kind": "output",
"content": "## Findings\n\n1. Token in config.ts\n",
"mime_type": "text/markdown"
}
'import requests
url = "http://127.0.0.1:4900/v1/runs/create_rdr"
payload = {
"run_id": "0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f",
"phase": "review",
"name": "findings",
"kind": "output",
"content": "## Findings
1. Token in config.ts
",
"mime_type": "text/markdown"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
run_id: '0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f',
phase: 'review',
name: 'findings',
kind: 'output',
content: '## Findings\n\n1. Token in config.ts\n',
mime_type: 'text/markdown'
})
};
fetch('http://127.0.0.1:4900/v1/runs/create_rdr', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "4900",
CURLOPT_URL => "http://127.0.0.1:4900/v1/runs/create_rdr",
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([
'run_id' => '0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f',
'phase' => 'review',
'name' => 'findings',
'kind' => 'output',
'content' => '## Findings
1. Token in config.ts
',
'mime_type' => 'text/markdown'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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 := "http://127.0.0.1:4900/v1/runs/create_rdr"
payload := strings.NewReader("{\n \"run_id\": \"0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f\",\n \"phase\": \"review\",\n \"name\": \"findings\",\n \"kind\": \"output\",\n \"content\": \"## Findings\\n\\n1. Token in config.ts\\n\",\n \"mime_type\": \"text/markdown\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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("http://127.0.0.1:4900/v1/runs/create_rdr")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"run_id\": \"0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f\",\n \"phase\": \"review\",\n \"name\": \"findings\",\n \"kind\": \"output\",\n \"content\": \"## Findings\\n\\n1. Token in config.ts\\n\",\n \"mime_type\": \"text/markdown\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://127.0.0.1:4900/v1/runs/create_rdr")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"run_id\": \"0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f\",\n \"phase\": \"review\",\n \"name\": \"findings\",\n \"kind\": \"output\",\n \"content\": \"## Findings\\n\\n1. Token in config.ts\\n\",\n \"mime_type\": \"text/markdown\"\n}"
response = http.request(request)
puts response.read_body