List Approval stages
curl --request GET \
--url https://app.letsflow.ai/v1/approval_stages \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.letsflow.ai/v1/approval_stages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.letsflow.ai/v1/approval_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://app.letsflow.ai/v1/approval_stages",
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://app.letsflow.ai/v1/approval_stages"
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://app.letsflow.ai/v1/approval_stages")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.letsflow.ai/v1/approval_stages")
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{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"approval_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "<string>",
"order": 2,
"status": "pending",
"decision_policy": "any_one",
"approvals_required": 2,
"denial_policy": "deny_veto",
"self_approval_rule": "forbid",
"opened_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"closed_at": "2023-11-07T05:31:56Z",
"close_reason": "<string>",
"eligible_approvers": [
{}
],
"approvals_received": 1,
"approval_stage_definition_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"meta": {
"request_id": "<string>",
"correlation_id": "<string>",
"operation": "<string>",
"resource": "<string>"
},
"page": {
"cursor": "<string>",
"next_cursor": "<string>",
"has_more": true,
"limit": 123
}
}{
"type": "https://app.letsflow.ai/problems/access-grant-not-found",
"title": "<string>",
"status": 123,
"code": "access_grant_admin_extension_required",
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"correlation_id": "<string>",
"retryable": true,
"auth_failure_reason": "<string>",
"availability_reason": "capability_disabled",
"re_auth_required": true,
"violations": [
{
"field": "<string>",
"message": "<string>",
"capability": "<string>",
"details": {}
}
],
"diagnostics": [
{
"code": "<string>",
"severity": "info",
"message": "<string>",
"fixHint": "<string>",
"location": {
"file": "<string>",
"line": 2,
"column": 2,
"stepId": "<string>"
}
}
]
}Approval stages
List Approval stages
Runtime stage projections within approval requests, including static or custom-workflow-evaluated routing results.
GET
/
v1
/
approval_stages
List Approval stages
curl --request GET \
--url https://app.letsflow.ai/v1/approval_stages \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.letsflow.ai/v1/approval_stages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.letsflow.ai/v1/approval_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://app.letsflow.ai/v1/approval_stages",
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://app.letsflow.ai/v1/approval_stages"
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://app.letsflow.ai/v1/approval_stages")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.letsflow.ai/v1/approval_stages")
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{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"approval_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "<string>",
"order": 2,
"status": "pending",
"decision_policy": "any_one",
"approvals_required": 2,
"denial_policy": "deny_veto",
"self_approval_rule": "forbid",
"opened_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"closed_at": "2023-11-07T05:31:56Z",
"close_reason": "<string>",
"eligible_approvers": [
{}
],
"approvals_received": 1,
"approval_stage_definition_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"meta": {
"request_id": "<string>",
"correlation_id": "<string>",
"operation": "<string>",
"resource": "<string>"
},
"page": {
"cursor": "<string>",
"next_cursor": "<string>",
"has_more": true,
"limit": 123
}
}{
"type": "https://app.letsflow.ai/problems/access-grant-not-found",
"title": "<string>",
"status": 123,
"code": "access_grant_admin_extension_required",
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"correlation_id": "<string>",
"retryable": true,
"auth_failure_reason": "<string>",
"availability_reason": "capability_disabled",
"re_auth_required": true,
"violations": [
{
"field": "<string>",
"message": "<string>",
"capability": "<string>",
"details": {}
}
],
"diagnostics": [
{
"code": "<string>",
"severity": "info",
"message": "<string>",
"fixHint": "<string>",
"location": {
"file": "<string>",
"line": 2,
"column": 2,
"stepId": "<string>"
}
}
]
}Authorizations
OAuth Bearer access tokens or Flow API keys with the required Flow scope families for the route.
Query Parameters
Opaque cursor for list pagination.
Requested page size for list operations.
Required range:
1 <= x <= 100