EQTY LabDocs

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

gethttps://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}
bash
curl --request GET \
  --url 'https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/submissions/{submission}/files/{cid}' \
  --header 'Authorization: Bearer <token>'
javascript
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();
typescript
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();
python
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())
go
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))
}
java
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());
    }
}
csharp
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
<?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;
ruby
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}"
rust
// 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

NameTypeDescription
orgId
required
string

Organization ID or UUID (urn:uuid optional)

assessmentId
required
string

Assessment UUID (urn:uuid optional)

submission
required
integer

Submission number, from 1

cid
required
string

The file's CID, bare or urn:cid

Responses

200The file and every path of the submission it backs

application/json
  • cidstring

    urn:cid

  • contentstring

    The bytes, in encoding

  • encodingstring (enum)

    utf-8 when the bytes are valid UTF-8, base64 otherwise

    One ofutf-8base64

  • pathsstring[]

    Every path of the submission it backs, sorted

  • sizeBytesinteger

    Of the bytes, not of content

Examplejson
{
  "cid": "string",
  "content": "string",
  "encoding": "utf-8",
  "paths": [
    "string"
  ],
  "sizeBytes": 0
}

400Bad request - Invalid organization ID, assessment ID, or submission number

application/json
  • errorstring
Examplejson
{
  "error": "Invalid request body"
}

401Unauthorized - Authentication required

application/json
  • errorstring
Examplejson
{
  "error": "Invalid request body"
}

403Forbidden - No organization access

application/json
  • errorstring
Examplejson
{
  "error": "Invalid request body"
}

404Assessment, submission or file not found, or not readable by the caller

application/json
  • errorstring
Examplejson
{
  "error": "Invalid request body"
}

410The file is no longer held in storage

application/json
  • errorstring
Examplejson
{
  "error": "Invalid request body"
}

500Internal server error, including a stored copy that no longer holds the bytes its CID names

application/json
  • errorstring
Examplejson
{
  "error": "Invalid request body"
}

503File storage is unavailable

application/json
  • errorstring
Examplejson
{
  "error": "Invalid request body"
}