cURL
curl --request POST \
--url https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>",
"content": {},
"url": "<string>"
}
'import requests
url = "https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence"
payload = {
"title": "<string>",
"description": "<string>",
"content": {},
"url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: '<string>', description: '<string>', content: {}, url: '<string>'})
};
fetch('https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'description' => '<string>',
'content' => [
],
'url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"controlId": "<string>",
"type": "AUTOMATED",
"source": "GITHUB",
"title": "<string>",
"description": "<string>",
"content": {},
"url": "<string>",
"collectedAt": "<string>",
"expiresAt": "<string>",
"createdAt": "<string>"
}API Reference
Post orgs compliancecontrols evidence
POST
/
orgs
/
{orgId}
/
compliance
/
controls
/
{controlId}
/
evidence
cURL
curl --request POST \
--url https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>",
"content": {},
"url": "<string>"
}
'import requests
url = "https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence"
payload = {
"title": "<string>",
"description": "<string>",
"content": {},
"url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: '<string>', description: '<string>', content: {}, url: '<string>'})
};
fetch('https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'description' => '<string>',
'content' => [
],
'url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useanima.sh/v1/orgs/{orgId}/compliance/controls/{controlId}/evidence")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"controlId": "<string>",
"type": "AUTOMATED",
"source": "GITHUB",
"title": "<string>",
"description": "<string>",
"content": {},
"url": "<string>",
"collectedAt": "<string>",
"expiresAt": "<string>",
"createdAt": "<string>"
}Authorizations
BearerAuthApiKeyAuth
JWT Bearer token obtained from authentication. Pass as: Authorization: Bearer
Path Parameters
Organization identifier
Compliance control identifier
Body
application/json
Input for adding a manual evidence item
Type of evidence
Available options:
AUTOMATED, MANUAL, SCREENSHOT, DOCUMENT Source of the evidence
Available options:
GITHUB, AWS, CLERK, INTERNAL, MANUAL Evidence title
Evidence description
Structured evidence content
Show child attributes
Show child attributes
URL reference for external evidence
Response
200 - application/json
OK
An evidence item linked to a compliance control
Unique evidence item identifier
Associated compliance control identifier
Type of evidence item
Available options:
AUTOMATED, MANUAL, SCREENSHOT, DOCUMENT Source of the evidence
Available options:
GITHUB, AWS, CLERK, INTERNAL, MANUAL Evidence title
Evidence description
Structured evidence content
Show child attributes
Show child attributes
URL reference for external evidence
ISO 8601 collection timestamp
ISO 8601 expiration timestamp
ISO 8601 creation timestamp
