curl --request GET \
--url https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events', 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://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events",
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: Basic <encoded-value>"
],
]);
$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://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"data": [
{
"at": "2023-11-07T05:31:56Z",
"kind": "run_started",
"payload": {},
"seq": "7.3.1",
"state": "create_customer / try_create",
"vars_after": {},
"workflow": "<string>",
"item_index": 123
}
],
"next_after": "<string>"
}A workflow run's event log
Everything that happened in a run you started, oldest first: states entered and left, requests queued and the responses that came back, every transition with the guards it considered, what was saved, questions and answers, webhooks, and how it ended. A workflow the run calls runs as part of it, so its events are in this one stream, right after the call_started event that began it: each entry’s seq is its position (7, then 7.1, 7.2… for the called workflow, 7.3.1 a level deeper), state its path from your run and workflow whose chart it belongs to. A page never goes past the end of a called workflow that is still running, so the next page — after the last seq you have — always picks up its new events in order.
curl --request GET \
--url https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events', 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://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events",
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: Basic <encoded-value>"
],
]);
$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://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://qubesync.com/api/v2/connections/{connection_id}/workflow-runs/{run_id}/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"data": [
{
"at": "2023-11-07T05:31:56Z",
"kind": "run_started",
"payload": {},
"seq": "7.3.1",
"state": "create_customer / try_create",
"vars_after": {},
"workflow": "<string>",
"item_index": 123
}
],
"next_after": "<string>"
}Authorizations
Use your app's API key as the username, and leave the password blank
Path Parameters
ID of the connection
ID of the workflow run
Query Parameters
Return the entries after this seq (the previous page's next_after, or the last seq you have when polling for more), including those inside a called workflow when it points inside one.
"7.3"
How many entries per page (default 100), a called workflow's included.
x <= 500
