curl --request GET \
--url https://api.duvo.ai/v2/automations/{automation_id}/readiness \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.duvo.ai/v2/automations/{automation_id}/readiness"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.duvo.ai/v2/automations/{automation_id}/readiness', 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.duvo.ai/v2/automations/{automation_id}/readiness",
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.duvo.ai/v2/automations/{automation_id}/readiness"
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.duvo.ai/v2/automations/{automation_id}/readiness")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/automations/{automation_id}/readiness")
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{
"readiness": {
"automation": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"ready": true,
"summary": {
"ok": 0,
"missing": 0,
"broken": 0,
"connections_to_fix": 0
},
"items": [
{
"key": "<string>",
"label": "<string>",
"status": "ok",
"detail": "<string>",
"link": "<string>",
"link_tab": "<string>",
"url": "<string>"
}
],
"links": {
"dashboards": [
{
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"link": "<string>"
}
],
"overview": "<string>",
"process": "<string>",
"past_runs": "<string>",
"requests": "<string>",
"policy": "<string>",
"people": "<string>",
"agents_queues": "<string>",
"revisions": "<string>",
"setup": "<string>",
"setup_start": "<string>",
"upload_files": "<string>",
"interview": "<string>",
"automation_proposal": "<string>"
},
"urls": {
"dashboards": [
{
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"link": "<string>"
}
],
"overview": "<string>",
"process": "<string>",
"past_runs": "<string>",
"requests": "<string>",
"policy": "<string>",
"people": "<string>",
"agents_queues": "<string>",
"revisions": "<string>",
"setup": "<string>",
"setup_start": "<string>",
"upload_files": "<string>",
"interview": "<string>",
"automation_proposal": "<string>"
},
"note": "<string>",
"links_note": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Get Automation Readiness
What still has to be set up before an automation can run on real work. Call this first for a readiness question (“what do I still need to set up”, “is it ready to run”, “why isn’t it running”) and before checking an automation’s Connections, Logins or Secrets one by one. Each of items is { key, label, status: ok | missing | broken, detail, link, link_tab } and covers one of: required Policy questions still open, Connections with no working account pinned or that need reconnecting, Logins and Secrets (present or missing, never their values), Queue slots with no Queue linked, Queues with routing off, no Agent or an Agent with no live version, what starts it (a Trigger, a Schedule, or Cases added to a routed Queue), the live revision and a pending draft, and whether it is still a demo. While a Module is being set up and its proposal has not been approved, items covers only its setup: required Policy questions, the current process map (setup:process_map) and the automation proposal (setup:automation_proposal), or, when its setup progress is unavailable, one setup item linked to the setup’s Get started page, whose approval builds the automation; Connections, Queues and what starts it are checked again once the approved proposal is being built. Lead with what is missing or broken, each with its own link (named by link_tab); never build a link. Quote counts from summary, including connections_to_fix, rather than counting items. ready is null when the caller can’t read the Policy; note then says what to tell the user. A Connection only the caller can see counts for the caller. When links_note is present, give no link to the automation at all. Each link is a path in the Duvo web app; give the user the full URL beside it (url, and urls for links).
curl --request GET \
--url https://api.duvo.ai/v2/automations/{automation_id}/readiness \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.duvo.ai/v2/automations/{automation_id}/readiness"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.duvo.ai/v2/automations/{automation_id}/readiness', 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.duvo.ai/v2/automations/{automation_id}/readiness",
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.duvo.ai/v2/automations/{automation_id}/readiness"
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.duvo.ai/v2/automations/{automation_id}/readiness")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/automations/{automation_id}/readiness")
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{
"readiness": {
"automation": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"ready": true,
"summary": {
"ok": 0,
"missing": 0,
"broken": 0,
"connections_to_fix": 0
},
"items": [
{
"key": "<string>",
"label": "<string>",
"status": "ok",
"detail": "<string>",
"link": "<string>",
"link_tab": "<string>",
"url": "<string>"
}
],
"links": {
"dashboards": [
{
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"link": "<string>"
}
],
"overview": "<string>",
"process": "<string>",
"past_runs": "<string>",
"requests": "<string>",
"policy": "<string>",
"people": "<string>",
"agents_queues": "<string>",
"revisions": "<string>",
"setup": "<string>",
"setup_start": "<string>",
"upload_files": "<string>",
"interview": "<string>",
"automation_proposal": "<string>"
},
"urls": {
"dashboards": [
{
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"link": "<string>"
}
],
"overview": "<string>",
"process": "<string>",
"past_runs": "<string>",
"requests": "<string>",
"policy": "<string>",
"people": "<string>",
"agents_queues": "<string>",
"revisions": "<string>",
"setup": "<string>",
"setup_start": "<string>",
"upload_files": "<string>",
"interview": "<string>",
"automation_proposal": "<string>"
},
"note": "<string>",
"links_note": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Was this page helpful?