Register agent declaration
Registers a declaration about the assessed agent, signed by the caller, against the program controls it addresses. The assessment must belong to the caller's organization, and submittedBy must be the caller's DID.
https://<host>/gov/v1/agent/declaration/{assessment_uuid}curl --request POST \
--url 'https://<host>/gov/v1/agent/declaration/{assessment_uuid}' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{"attachmentCid":"[\"urn:cid:attachment_cid\"]","controlCid":"[\"urn:cid:control_cid\"]","documentType":"string","extra":{"key":null},"statement":"The agent runs with read-only credentials.","submittedAt":"2026-10-08T12:00:06Z","submittedBy":"did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"}'const response = await fetch("https://<host>/gov/v1/agent/declaration/{assessment_uuid}", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
})
});
const data = await response.json();interface StatementResponse {
documentCid: string;
statement: Record<string, unknown>;
statementCid: string;
}
const response = await fetch("https://<host>/gov/v1/agent/declaration/{assessment_uuid}", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
})
});
if (!response.ok) throw new Error(`${response.status} ${response.statusText}`);
const data: StatementResponse = await response.json();import requests
response = requests.post(
"https://<host>/gov/v1/agent/declaration/{assessment_uuid}",
headers={
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
},
json={
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": None,
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1",
},
)
response.raise_for_status()
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
}`)
req, err := http.NewRequest(http.MethodPost, "https://<host>/gov/v1/agent/declaration/{assessment_uuid}", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
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://<host>/gov/v1/agent/declaration/{assessment_uuid}"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"attachmentCid": "[\\"urn:cid:attachment_cid\\"]",
"controlCid": "[\\"urn:cid:control_cid\\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
}
"""))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://<host>/gov/v1/agent/declaration/{assessment_uuid}");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "<token>");
request.Content = new StringContent("""
{
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
}
""", Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");<?php
$ch = curl_init('https://<host>/gov/v1/agent/declaration/{assessment_uuid}');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => <<<'JSON'
{
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
}
JSON,
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://<host>/gov/v1/agent/declaration/{assessment_uuid}")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = <<~'JSON'
{
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
}
JSON
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 (features "json"), serde_json, tokio (features "full")
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let response = reqwest::Client::new()
.post("https://<host>/gov/v1/agent/declaration/{assessment_uuid}")
.header("Authorization", "Bearer <token>")
.json(&json!({
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
}))
.send()
.await?;
println!("{} {}", response.status(), response.text().await?);
Ok(())
}Authorizations
BearerAuth· HTTP bearer (JWT)
Parameters
Path parameters
| Name | Type | Description |
|---|---|---|
assessment_uuidrequired | string<uuid> | The assessment graph |
Request bodyrequired
attachmentCidstring[]controlCidstring[]requiredThe program controls it covers, at least one
documentTypestringextraobject | nullShow properties
Map of
anystatementstring | nullsubmittedAtstring<date-time>requiredsubmittedBystringrequired
{
"attachmentCid": "[\"urn:cid:attachment_cid\"]",
"controlCid": "[\"urn:cid:control_cid\"]",
"documentType": "string",
"extra": {
"key": null
},
"statement": "The agent runs with read-only credentials.",
"submittedAt": "2026-10-08T12:00:06Z",
"submittedBy": "did:key:z6MkvWwG4YJDNEBq6ufypq6mBGpKje7bfJefcQkMoGWPjoq1"
}Responses
200Governance statement created for the declaration
documentCidstringrequiredstatementGovernanceStatementrequiredRecords governance information for a subject This statement type associates governance documents (policies, procedures, compliance documents) with subjects in the lineage system.
Show GovernanceStatement
@contextstringrequiredJSON-LD context URL
@idstringrequiredUnique identifier for this statement
@typestringrequiredStatement type identifier
documentstringrequiredCID of the governance document
registeredBystringrequiredDID of the entity that registered this statement
subjectstringrequiredThe subject to which governance applies
timestampstringrequiredISO 8601 timestamp of when the statement was created
statementCidstringrequired
{
"documentCid": "string",
"statement": {
"@context": "string",
"@id": "string",
"@type": "string",
"document": "string",
"registeredBy": "string",
"subject": "string",
"timestamp": "string"
},
"statementCid": "string"
}401Missing or invalid bearer token, or submittedBy is not the caller's DID
callstackobjectShow properties
object | nullerrorstringrequired
{
"callstack": {},
"error": "string"
}403The assessment graph is not registered, or belongs to an organization other than the caller's
callstackobjectShow properties
object | nullerrorstringrequired
{
"callstack": {},
"error": "string"
}409The same declaration document is already registered; vary its submittedAt
callstackobjectShow properties
object | nullerrorstringrequired
{
"callstack": {},
"error": "string"
}422The declaration is not a declaration, or cites no control or one outside the program
callstackobjectShow properties
object | nullerrorstringrequired
{
"callstack": {},
"error": "string"
}500Internal error
callstackobjectShow properties
object | nullerrorstringrequired
{
"callstack": {},
"error": "string"
}503Auth Service or blob storage unavailable
callstackobjectShow properties
object | nullerrorstringrequired
{
"callstack": {},
"error": "string"
}