Compute policy CID
Computes the JCS CIDs of the policy and each of its controls, stores them in the blob store, and records the policy and the controls it includes. Returns the CID of the whole policy and of each control. The caller needs create_policies in the organization.
post
https://<host>/gov/v1/cid/policybash
curl --request POST \
--url 'https://<host>/gov/v1/cid/policy' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{"control":[{"citation":[{"title":"string","url":"string"}],"controlCode":"ADAIP-RIS-044","description":"Must ensure equitable access for all individuals and groups.","extra":{"key":null},"title":"Ensuring Equitable Access"}],"description":"Framework for ethical AI development.","extra":{"key":null},"name":"EUAI Act","version":"1.0.2"}'javascript
const response = await fetch("https://<host>/gov/v1/cid/policy", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
})
});
const data = await response.json();typescript
interface CidPolicyResponse {
controls: Record<string, unknown>;
policy: string;
}
const response = await fetch("https://<host>/gov/v1/cid/policy", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
})
});
if (!response.ok) throw new Error(`${response.status} ${response.statusText}`);
const data: CidPolicyResponse = await response.json();python
import requests
response = requests.post(
"https://<host>/gov/v1/cid/policy",
headers={
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
},
json={
"control": [
{
"citation": [
{
"title": "string",
"url": "string",
},
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": None,
},
"title": "Ensuring Equitable Access",
},
],
"description": "Framework for ethical AI development.",
"extra": {
"key": None,
},
"name": "EUAI Act",
"version": "1.0.2",
},
)
response.raise_for_status()
print(response.json())go
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
}`)
req, err := http.NewRequest(http.MethodPost, "https://<host>/gov/v1/cid/policy", 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))
}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://<host>/gov/v1/cid/policy"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
}
"""))
.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 System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://<host>/gov/v1/cid/policy");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "<token>");
request.Content = new StringContent("""
{
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
}
""", Encoding.UTF8, "application/json");
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");php
<?php
$ch = curl_init('https://<host>/gov/v1/cid/policy');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => <<<'JSON'
{
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
}
JSON,
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://<host>/gov/v1/cid/policy")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = <<~'JSON'
{
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
}
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}"rust
// 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/cid/policy")
.header("Authorization", "Bearer <token>")
.json(&json!({
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
}))
.send()
.await?;
println!("{} {}", response.status(), response.text().await?);
Ok(())
}Authorizations
BearerAuth· HTTP bearer (JWT)
Request bodyrequired
application/json
controlPolicyControl[] | nullShow properties
Array of
PolicyControlcitationCitation[] | nullShow properties
Array of
Citationtitlestring | nullurlstring | null
controlCodestringrequireddescriptionstring | nullextraobject | nullShow properties
Map of
anytitlestringrequired
descriptionstring | nullextraobject | nullShow properties
Map of
anynamestringrequiredversionstring | null
Examplejson
{
"control": [
{
"citation": [
{
"title": "string",
"url": "string"
}
],
"controlCode": "ADAIP-RIS-044",
"description": "Must ensure equitable access for all individuals and groups.",
"extra": {
"key": null
},
"title": "Ensuring Equitable Access"
}
],
"description": "Framework for ethical AI development.",
"extra": {
"key": null
},
"name": "EUAI Act",
"version": "1.0.2"
}Responses
200The CIDs of the policy and each control
application/json
controlsobjectrequiredShow properties
Map of
stringpolicystringrequired
Examplejson
{
"controls": {
"key": "string"
},
"policy": "string"
}401Missing or invalid bearer token
application/json
callstackobjectShow properties
object | nullerrorstringrequired
Examplejson
{
"callstack": {},
"error": "string"
}403Caller lacks create_policies
application/json
callstackobjectShow properties
object | nullerrorstringrequired
Examplejson
{
"callstack": {},
"error": "string"
}500Internal error recording the policy
application/json
callstackobjectShow properties
object | nullerrorstringrequired
Examplejson
{
"callstack": {},
"error": "string"
}503Auth Service or blob storage unavailable
application/json
callstackobjectShow properties
object | nullerrorstringrequired
Examplejson
{
"callstack": {},
"error": "string"
}