List a program's reviewers
List the members currently assigned to review a Governance Program's assessments, across every version of it, in the order they were assigned. With includeRemoved, list every assignment ever made, ended ones included. Readable by program administrators and the program's current reviewers
get
https://localhost:10001/api/v1/organizations/{orgId}/programs/{programId}/reviewersbash
curl --request GET \
--url 'https://localhost:10001/api/v1/organizations/{orgId}/programs/{programId}/reviewers' \
--header 'Authorization: Bearer <token>'javascript
const response = await fetch("https://localhost:10001/api/v1/organizations/{orgId}/programs/{programId}/reviewers", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();typescript
interface ProgramReviewer {
assignedAt?: string;
assignedBy?: string;
organizationId?: number;
programSlug?: string;
removedAt?: string;
removedBy?: string;
userId?: string;
uuid?: string;
}
const response = await fetch("https://localhost:10001/api/v1/organizations/{orgId}/programs/{programId}/reviewers", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
if (!response.ok) throw new Error(`${response.status} ${response.statusText}`);
const data: ProgramReviewer[] = await response.json();python
import requests
response = requests.get(
"https://localhost:10001/api/v1/organizations/{orgId}/programs/{programId}/reviewers",
headers={
"Authorization": "Bearer <token>",
},
)
response.raise_for_status()
print(response.json())go
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://localhost:10001/api/v1/organizations/{orgId}/programs/{programId}/reviewers", 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}/programs/{programId}/reviewers"))
.header("Authorization", "Bearer <token>")
.method("GET", 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.Get, "https://localhost:10001/api/v1/organizations/{orgId}/programs/{programId}/reviewers");
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}/programs/{programId}/reviewers');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
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}/programs/{programId}/reviewers")
request = Net::HTTP::Get.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()
.get("https://localhost:10001/api/v1/organizations/{orgId}/programs/{programId}/reviewers")
.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) |
programIdrequired | string | The program as slug:agent-baseline, or any of its versions by UUID (urn:uuid optional), slug:agent-baseline@1.0.0, or urn:cid:<manifest cid> |
Query parameters
| Name | Type | Description |
|---|---|---|
includeRemoved | boolean | Include ended assignments |
Responses
200Reviewer assignments
application/json
Array of core.ProgramReviewer
assignedAtstring<date-time>read-onlyassignedBystringread-onlyUser ID of the administrator who assigned them
organizationIdintegerread-onlyprogramSlugstringread-onlyThe program, as the slug its versions share
removedAtstring<date-time>read-onlyremovedBystringread-onlySet once the assignment has ended
userIdstringread-onlyThe reviewer's user ID
uuidstringread-onlyurn:uuid form
Examplejson
[
{}
]400Bad request - Invalid organization ID or program ID
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}401Unauthorized - Authentication required
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}403Forbidden - Neither a program administrator nor one of its reviewers
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}404Program not found
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}500Internal server error
application/json
errorstring
Examplejson
{
"error": "Invalid request body"
}