Governance bundles
List bundle stages (Stage View)
Returns one row per stage of each bundle’s policy. Non-admin callers see only stages in projects they can access; admins see all. Each row’s status (NotStarted, InProgress, Done) reflects the stage’s current evidence, approvals, and findings.
GET
/
api
/
governance
/
v1
/
bundle-stages
List bundle stages (Stage View)
curl --request GET \
--url https://mycluster.domino.tech/api/governance/v1/bundle-stagesimport requests
url = "https://mycluster.domino.tech/api/governance/v1/bundle-stages"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://mycluster.domino.tech/api/governance/v1/bundle-stages', 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://mycluster.domino.tech/api/governance/v1/bundle-stages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://mycluster.domino.tech/api/governance/v1/bundle-stages"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://mycluster.domino.tech/api/governance/v1/bundle-stages")
.asString();require 'uri'
require 'net/http'
url = URI("https://mycluster.domino.tech/api/governance/v1/bundle-stages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"assignee": {
"id": "<string>",
"name": "<string>"
},
"bundleId": "<string>",
"bundleName": "<string>",
"canModify": true,
"eligibleAssignees": [
{
"id": "<string>",
"name": "<string>"
}
],
"isCurrentStage": true,
"policyId": "<string>",
"policyName": "<string>",
"policySequentialWorkflowEnabled": true,
"policyVersionId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"stageId": "<string>",
"stageName": "<string>",
"stageOrder": 123,
"stageStatus": "NotStarted",
"updatedAt": "<string>"
}
],
"meta": {
"filters": [
{
"key": "<string>",
"values": [
"<string>"
]
}
],
"pagination": {
"limit": 123,
"offset": 123,
"totalCount": 123
},
"search": "<string>",
"sort": [
{
"key": "<string>",
"order": "<string>"
}
]
}
}{
"code": "BUNDLE_REQUIRES_POLICY",
"message": "<string>"
}{
"code": "BUNDLE_REQUIRES_POLICY",
"message": "<string>"
}{
"code": "BUNDLE_REQUIRES_POLICY",
"message": "<string>"
}Query Parameters
Limit
Offset
Filter by project ID
Filter by primary policy ID
Filter by bundle ID
Filter by stage name
Filter by stage status (NotStarted, InProgress, Done)
Filter by assignee ID
If true, only rows with no assignee; if false, only rows with an assignee
Search bundle or stage name
Order by (bundle_name, policy_name, stage_order, assignee_name, updated_at). Append asc/desc.
Last modified on September 3, 2026
Was this page helpful?
⌘I
List bundle stages (Stage View)
curl --request GET \
--url https://mycluster.domino.tech/api/governance/v1/bundle-stagesimport requests
url = "https://mycluster.domino.tech/api/governance/v1/bundle-stages"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://mycluster.domino.tech/api/governance/v1/bundle-stages', 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://mycluster.domino.tech/api/governance/v1/bundle-stages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://mycluster.domino.tech/api/governance/v1/bundle-stages"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://mycluster.domino.tech/api/governance/v1/bundle-stages")
.asString();require 'uri'
require 'net/http'
url = URI("https://mycluster.domino.tech/api/governance/v1/bundle-stages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"assignee": {
"id": "<string>",
"name": "<string>"
},
"bundleId": "<string>",
"bundleName": "<string>",
"canModify": true,
"eligibleAssignees": [
{
"id": "<string>",
"name": "<string>"
}
],
"isCurrentStage": true,
"policyId": "<string>",
"policyName": "<string>",
"policySequentialWorkflowEnabled": true,
"policyVersionId": "<string>",
"projectId": "<string>",
"projectName": "<string>",
"stageId": "<string>",
"stageName": "<string>",
"stageOrder": 123,
"stageStatus": "NotStarted",
"updatedAt": "<string>"
}
],
"meta": {
"filters": [
{
"key": "<string>",
"values": [
"<string>"
]
}
],
"pagination": {
"limit": 123,
"offset": 123,
"totalCount": 123
},
"search": "<string>",
"sort": [
{
"key": "<string>",
"order": "<string>"
}
]
}
}{
"code": "BUNDLE_REQUIRES_POLICY",
"message": "<string>"
}{
"code": "BUNDLE_REQUIRES_POLICY",
"message": "<string>"
}{
"code": "BUNDLE_REQUIRES_POLICY",
"message": "<string>"
}