Read a file an assessment submission froze
Read one file a submission froze when it was submitted, by its CID from the submission's files: a configuration file its configuration names, or the observed system prompt, as the agent registry served it to the submitter, checked against its CID. Readable by whoever may read the assessment, so a program's reviewers read the files without access to the agent. The content is the file's text when its bytes are valid UTF-8, and base64 otherwise
https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}curl --request GET \
--url 'https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}' \
--header 'Authorization: Bearer <token>'const response = await fetch("https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();interface SubmissionFileResponse {
cid?: string;
content?: string;
encoding?: "utf-8" | "base64";
paths?: string[];
sizeBytes?: number;
}
const response = await fetch("https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
if (!response.ok) throw new Error(`${response.status} ${response.statusText}`);
const data: SubmissionFileResponse = await response.json();import requests
response = requests.get(
"https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}",
headers={
"Authorization": "Bearer <token>",
},
)
response.raise_for_status()
print(response.json())package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer <token>")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, err := io.ReadAll(res.Body)
if err != nil {
panic(err)
}
fmt.Println(res.Status, string(data))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}"))
.header("Authorization", "Bearer <token>")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}using System.Net.Http.Headers;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "<token>");
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");<?php
$ch = curl_init('https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status . " " . $response . PHP_EOL;require "net/http"
uri = URI("https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer <token>"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts "#{response.code} #{response.body}"// Cargo.toml dependencies: reqwest, tokio (features "full")
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let response = reqwest::Client::new()
.get("https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}")
.header("Authorization", "Bearer <token>")
.send()
.await?;
println!("{} {}", response.status(), response.text().await?);
Ok(())
}Authorizations
BearerAuth· API key in header "Authorization" — Type "Bearer" followed by a space and JWT token.
Parameters
Path parameters
| Name | Type | Description |
|---|---|---|
orgIdrequired | string | Organization ID or UUID (urn:uuid optional) |
assessmentIdrequired | string | Assessment UUID (urn:uuid optional) |
submissionrequired | integer | Submission number, from 1 |
cidrequired | string | The file's CID, bare or urn:cid |
Responses
200The file and every path of the submission it backs
cidstringurn:cid
contentstringThe bytes, in encoding
encodingstring (enum)utf-8 when the bytes are valid UTF-8, base64 otherwise
One of
utf-8base64pathsstring[]Every path of the submission it backs, sorted
sizeBytesintegerOf the bytes, not of content
{
"cid": "string",
"content": "string",
"encoding": "utf-8",
"paths": [
"string"
],
"sizeBytes": 0
}400Bad request - Invalid organization ID, assessment ID, or submission number
errorstring
{
"error": "Invalid request body"
}401Unauthorized - Authentication required
errorstring
{
"error": "Invalid request body"
}403Forbidden - No organization access
errorstring
{
"error": "Invalid request body"
}404Assessment, submission or file not found, or not readable by the caller
errorstring
{
"error": "Invalid request body"
}410The file is no longer held in storage
errorstring
{
"error": "Invalid request body"
}500Internal server error, including a stored copy that no longer holds the bytes its CID names
errorstring
{
"error": "Invalid request body"
}503File storage is unavailable
errorstring
{
"error": "Invalid request body"
}