EQTY LabDocs

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.

posthttps://<host>/gov/v1/cid/policy
bash
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[] | null
    Show properties

    Array of PolicyControl

    • citationCitation[] | null
      Show properties

      Array of Citation

      • titlestring | null
      • urlstring | null
    • controlCodestringrequired
    • descriptionstring | null
    • extraobject | null
      Show properties

      Map of any

    • titlestringrequired
  • descriptionstring | null
  • extraobject | null
    Show properties

    Map of any

  • namestringrequired
  • versionstring | 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
  • controlsobjectrequired
    Show properties

    Map of string

  • policystringrequired
Examplejson
{
  "controls": {
    "key": "string"
  },
  "policy": "string"
}

401Missing or invalid bearer token

application/json
  • callstackobject
    Show properties

    object | null

  • errorstringrequired
Examplejson
{
  "callstack": {},
  "error": "string"
}

403Caller lacks create_policies

application/json
  • callstackobject
    Show properties

    object | null

  • errorstringrequired
Examplejson
{
  "callstack": {},
  "error": "string"
}

500Internal error recording the policy

application/json
  • callstackobject
    Show properties

    object | null

  • errorstringrequired
Examplejson
{
  "callstack": {},
  "error": "string"
}

503Auth Service or blob storage unavailable

application/json
  • callstackobject
    Show properties

    object | null

  • errorstringrequired
Examplejson
{
  "callstack": {},
  "error": "string"
}