curl --request GET \
--url https://api.example.com/api/v1/workflows/list-all/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/workflows/list-all/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/workflows/list-all/', 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.example.com/api/v1/workflows/list-all/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://api.example.com/api/v1/workflows/list-all/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/workflows/list-all/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/workflows/list-all/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"annotations": {},
"tags": [
"<string>"
],
"category": "enrolment",
"organisation_name": "<string>",
"links": {
"self": "<string>",
"collection": "<string>",
"organisation": "<string>",
"jobs": "<string>"
},
"parameters_presets": {},
"eligibility_constraints": {
"min_devices": 123,
"max_devices": 123,
"require_shared_resource_class": true
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"version": "<string>",
"temporal_workflow_name": "EnrollmentWorkflow",
"organisation": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"parameters_schema": "<unknown>",
"exclusive": true,
"archived": true
}
]{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}List all workflows
Return every visible workflow unpaginated, so a picker offers the whole set.
Honours the same filters and ordering as list. Workflows are
system-seeded — one row per (temporal_workflow_name, organisation) — so the
row count is bounded by TemporalWorkflowName and needs no page cap.
Rows are full WorkflowSerializer payloads because the job-creation form
reads parameters_schema, parameters_presets and
eligibility_constraints straight off the picker response; a compact row
would only buy a second round trip per selection.
The body is not enum-bounded: parameters_presets embeds every preset
for each row’s (temporal_workflow_name, organisation), and presets are
user-created. Measured on production, that field is ~73% of a 166 KB
24-row response, so the payload grows with the preset table rather than
with the workflow enum. That embed predates this action and is shared with
list/retrieve; shrinking it means dropping the field from list
responses, which is a contract change for the whole endpoint rather than
something this action can cap.
curl --request GET \
--url https://api.example.com/api/v1/workflows/list-all/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/workflows/list-all/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/workflows/list-all/', 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.example.com/api/v1/workflows/list-all/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://api.example.com/api/v1/workflows/list-all/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/workflows/list-all/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/workflows/list-all/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"annotations": {},
"tags": [
"<string>"
],
"category": "enrolment",
"organisation_name": "<string>",
"links": {
"self": "<string>",
"collection": "<string>",
"organisation": "<string>",
"jobs": "<string>"
},
"parameters_presets": {},
"eligibility_constraints": {
"min_devices": 123,
"max_devices": 123,
"require_shared_resource_class": true
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"version": "<string>",
"temporal_workflow_name": "EnrollmentWorkflow",
"organisation": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "<string>",
"parameters_schema": "<unknown>",
"exclusive": true,
"archived": true
}
]{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}{
"detail": "<string>",
"code": "error",
"field_errors": [
{
"field": "<string>",
"messages": [
"<string>"
]
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Query Parameters
Filter by annotation key=value pairs (AND semantics). Use annotation_eq[key]=value.
Show child attributes
Show child attributes
Filter by annotation key existence (comma-separated, AND semantics).
Multiple values may be separated by commas.
Filter by tags (comma-separated, OR semantics).
Filter by Temporal workflow type.
EnrollmentWorkflow- Enrollment WorkflowSingleNodeBurnInWorkflow- Single Node Burn-In WorkflowMultiNodeBurnInPairwiseWorkflow- Multi-Node Burn-In Pairwise WorkflowMultiNodeBurnInCollectiveWorkflow- Multi-Node Burn-In Collective WorkflowPrepareHardwareTestImagesWorkflow- Prepare Hardware-Test Images WorkflowReportGenerationWorkflow- Report Generation WorkflowSlurmAdoptWorkflow- Add to Test Cluster WorkflowSlurmReleaseWorkflow- Release from Test Cluster WorkflowCustomerReleaseWorkflow- Customer Release WorkflowIronicNodeCleanWorkflow- Ironic Node Clean WorkflowQuarantineWorkflow- Quarantine WorkflowReleaseWorkflow- Release WorkflowUnenrollmentWorkflow- Unenrollment WorkflowConnectivityVerificationWorkflow- Connectivity Verification WorkflowFirmwareInventoryWorkflow- Firmware Inventory WorkflowFirmwareVerificationWorkflow- Firmware Verification WorkflowFirmwarePolicyVerificationWorkflow- Firmware Policy Verification WorkflowNVSwitchFirmwarePolicyVerificationWorkflow- NVSwitch Firmware Policy Verification WorkflowNodeSwapWorkflow- Node Swap WorkflowPowerCycleWorkflow- Power Cycle WorkflowPowerOffWorkflow- Power Off WorkflowSetMaintenanceModeWorkflow- Set Maintenance Mode WorkflowDisableMaintenanceModeWorkflow- Disable Maintenance Mode WorkflowColdResetBmcWorkflow- Cold Reset BMC WorkflowSlurmDrainNodeWorkflow- Slurm Drain Node WorkflowSlurmResumeNodeWorkflow- Slurm Resume Drained Node WorkflowFrontendVrfReturnWorkflow- Frontend VRF Return WorkflowFrontendVrfIsolateWorkflow- Frontend VRF Isolate WorkflowNvLinkIsolateWorkflow- NVLink Isolate WorkflowNvLinkReturnWorkflow- NVLink Return WorkflowBackendVrfIsolateWorkflow- Back-end VRF Isolate WorkflowBackendVrfReturnWorkflow- Back-end VRF Return WorkflowImageNodeWorkflow- Image Node WorkflowUnimageNodeWorkflow- Unimage Node WorkflowNodeDiagnosticsWorkflow- Node Diagnostics Workflow
EnrollmentWorkflow, SingleNodeBurnInWorkflow, MultiNodeBurnInPairwiseWorkflow, MultiNodeBurnInCollectiveWorkflow, PrepareHardwareTestImagesWorkflow, ReportGenerationWorkflow, SlurmAdoptWorkflow, SlurmReleaseWorkflow, CustomerReleaseWorkflow, IronicNodeCleanWorkflow, QuarantineWorkflow, ReleaseWorkflow, UnenrollmentWorkflow, ConnectivityVerificationWorkflow, FirmwareInventoryWorkflow, FirmwareVerificationWorkflow, FirmwarePolicyVerificationWorkflow, NVSwitchFirmwarePolicyVerificationWorkflow, NodeSwapWorkflow, PowerCycleWorkflow, PowerOffWorkflow, SetMaintenanceModeWorkflow, DisableMaintenanceModeWorkflow, ColdResetBmcWorkflow, SlurmDrainNodeWorkflow, SlurmResumeNodeWorkflow, FrontendVrfReturnWorkflow, FrontendVrfIsolateWorkflow, NvLinkIsolateWorkflow, NvLinkReturnWorkflow, BackendVrfIsolateWorkflow, BackendVrfReturnWorkflow, ImageNodeWorkflow, UnimageNodeWorkflow, NodeDiagnosticsWorkflow Response
Key-value annotations. Keys must start with a lowercase letter and contain only lowercase alphanumeric segments joined by hyphens or underscores (e.g. 'org-id', 'gpu_ready').
Show child attributes
Show child attributes
Tags for the resource. Must start with a lowercase letter and contain only lowercase alphanumeric segments joined by hyphens or underscores (e.g. 'gpu-ready', 'needs_review'). Stored deduplicated and sorted.
enrolment- Enrolmentburn_in_testing- Burn-in testingcustomer_release- Customer releasein_service_ops- In-service ops
enrolment, burn_in_testing, customer_release, in_service_ops Serializer for workflow links.
Show child attributes
Show child attributes
Workflow parameter presets grouped by device type ID, or null if none exist. Each key is a device_type UUID.
Show child attributes
Show child attributes
Device-selection constraints derived from a workflow's eligibility policy.
Used by the frontend to validate job submissions before sending them.
Show child attributes
Show child attributes
25550^[0-9]+\.[0-9]+\.[0-9]+$EnrollmentWorkflow- Enrollment WorkflowSingleNodeBurnInWorkflow- Single Node Burn-In WorkflowMultiNodeBurnInPairwiseWorkflow- Multi-Node Burn-In Pairwise WorkflowMultiNodeBurnInCollectiveWorkflow- Multi-Node Burn-In Collective WorkflowPrepareHardwareTestImagesWorkflow- Prepare Hardware-Test Images WorkflowReportGenerationWorkflow- Report Generation WorkflowSlurmAdoptWorkflow- Add to Test Cluster WorkflowSlurmReleaseWorkflow- Release from Test Cluster WorkflowCustomerReleaseWorkflow- Customer Release WorkflowIronicNodeCleanWorkflow- Ironic Node Clean WorkflowQuarantineWorkflow- Quarantine WorkflowReleaseWorkflow- Release WorkflowUnenrollmentWorkflow- Unenrollment WorkflowConnectivityVerificationWorkflow- Connectivity Verification WorkflowFirmwareInventoryWorkflow- Firmware Inventory WorkflowFirmwareVerificationWorkflow- Firmware Verification WorkflowFirmwarePolicyVerificationWorkflow- Firmware Policy Verification WorkflowNVSwitchFirmwarePolicyVerificationWorkflow- NVSwitch Firmware Policy Verification WorkflowNodeSwapWorkflow- Node Swap WorkflowPowerCycleWorkflow- Power Cycle WorkflowPowerOffWorkflow- Power Off WorkflowSetMaintenanceModeWorkflow- Set Maintenance Mode WorkflowDisableMaintenanceModeWorkflow- Disable Maintenance Mode WorkflowColdResetBmcWorkflow- Cold Reset BMC WorkflowSlurmDrainNodeWorkflow- Slurm Drain Node WorkflowSlurmResumeNodeWorkflow- Slurm Resume Drained Node WorkflowFrontendVrfReturnWorkflow- Frontend VRF Return WorkflowFrontendVrfIsolateWorkflow- Frontend VRF Isolate WorkflowNvLinkIsolateWorkflow- NVLink Isolate WorkflowNvLinkReturnWorkflow- NVLink Return WorkflowBackendVrfIsolateWorkflow- Back-end VRF Isolate WorkflowBackendVrfReturnWorkflow- Back-end VRF Return WorkflowImageNodeWorkflow- Image Node WorkflowUnimageNodeWorkflow- Unimage Node WorkflowNodeDiagnosticsWorkflow- Node Diagnostics Workflow
EnrollmentWorkflow, SingleNodeBurnInWorkflow, MultiNodeBurnInPairwiseWorkflow, MultiNodeBurnInCollectiveWorkflow, PrepareHardwareTestImagesWorkflow, ReportGenerationWorkflow, SlurmAdoptWorkflow, SlurmReleaseWorkflow, CustomerReleaseWorkflow, IronicNodeCleanWorkflow, QuarantineWorkflow, ReleaseWorkflow, UnenrollmentWorkflow, ConnectivityVerificationWorkflow, FirmwareInventoryWorkflow, FirmwareVerificationWorkflow, FirmwarePolicyVerificationWorkflow, NVSwitchFirmwarePolicyVerificationWorkflow, NodeSwapWorkflow, PowerCycleWorkflow, PowerOffWorkflow, SetMaintenanceModeWorkflow, DisableMaintenanceModeWorkflow, ColdResetBmcWorkflow, SlurmDrainNodeWorkflow, SlurmResumeNodeWorkflow, FrontendVrfReturnWorkflow, FrontendVrfIsolateWorkflow, NvLinkIsolateWorkflow, NvLinkReturnWorkflow, BackendVrfIsolateWorkflow, BackendVrfReturnWorkflow, ImageNodeWorkflow, UnimageNodeWorkflow, NodeDiagnosticsWorkflow Requires exclusive access to the device while running.
Archived workflows do not accept new job submissions.