Remove a declaration from an assessment's draft
Remove a declaration from an assessment's draft, so it no longer covers its controls. A submission keeps the declarations it froze, and their files stay downloadable through it, so a frozen declaration is locked in and can't be removed until a reviewer finds a control it covers not satisfied in the newest submission. One added since the newest submission can always be removed. The declaration's statement stays in the Integrity Service. Only the member who started the assessment may remove declarations; an integration's API key bound to no project acts as its owner with full access or the submit_agent_assessments scope
delete
https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/declarations/{declarationId}bash
curl --request DELETE \
--url 'https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/declarations/{declarationId}' \
--header 'Authorization: Bearer <token>'javascript
const response = await fetch("https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/declarations/{declarationId}", {
method: "DELETE",
headers: {
"Authorization": "Bearer <token>"
}
});
console.log(response.status);typescript
const response = await fetch("https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/declarations/{declarationId}", {
method: "DELETE",
headers: {
"Authorization": "Bearer <token>"
}
});
if (!response.ok) throw new Error(`${response.status} ${response.statusText}`);
console.log(response.status);python
import requests
response = requests.delete(
"https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/declarations/{declarationId}",
headers={
"Authorization": "Bearer <token>",
},
)
response.raise_for_status()
print(response.status_code)go
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest(http.MethodDelete, "https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/declarations/{declarationId}", 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}/declarations/{declarationId}"))
.header("Authorization", "Bearer <token>")
.method("DELETE", 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.Delete, "https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/declarations/{declarationId}");
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}/declarations/{declarationId}');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'DELETE',
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}/declarations/{declarationId}")
request = Net::HTTP::Delete.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()
.delete("https://localhost:10001/api/v1/organizations/{orgId}/assessments/{assessmentId}/declarations/{declarationId}")
.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
| Name | Type | Description |
|---|---|---|
orgIdrequired | string | Organization ID or UUID (urn:uuid optional) |
assessmentIdrequired | string | Assessment UUID (urn:uuid optional) |
declarationIdrequired | string | Declaration UUID (urn:uuid optional) |
Responses
204Removed
400Bad request - Invalid declaration ID
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}401Unauthorized - Authentication required
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}403Forbidden - Not the assessment's starter, an API key with neither full access nor submit_agent_assessments, or a project-bound key
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}404Assessment, or declaration in its draft, not found
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}409A submission froze the declaration, and no reviewer has found a control it covers not satisfied in the newest submission
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}500Internal server error
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}