One-shot envelope of every integration analytics pipe
GET
/
v1
/
analytics
/
integrations
/
dashboard
One-shot envelope of every integration analytics pipe
curl --request GET \
--url https://api-sandbox.featherhq.com/v1/analytics/integrations/dashboard \
--header 'x-api-key: <api-key>'import requests
url = "https://api-sandbox.featherhq.com/v1/analytics/integrations/dashboard"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api-sandbox.featherhq.com/v1/analytics/integrations/dashboard', 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-sandbox.featherhq.com/v1/analytics/integrations/dashboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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-sandbox.featherhq.com/v1/analytics/integrations/dashboard"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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-sandbox.featherhq.com/v1/analytics/integrations/dashboard")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.featherhq.com/v1/analytics/integrations/dashboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"summary": [
{
"current_invocations": 123,
"previous_invocations": 123,
"pct_change_invocations": 123,
"current_failures": 123,
"previous_failures": 123,
"pct_change_failures": 123,
"current_success_rate_pct": 123,
"previous_success_rate_pct": 123,
"pct_change_success_rate_pct": 123,
"current_avg_latency_ms": 123,
"previous_avg_latency_ms": 123,
"pct_change_avg_latency_ms": 123,
"current_p95_latency_ms": 123,
"previous_p95_latency_ms": 123,
"pct_change_p95_latency_ms": 123
}
],
"usage": [
{
"time_bucket": "2023-11-07T05:31:56Z",
"invocations": 123,
"successful": 123,
"vendor_errors": 123,
"exceptions": 123
}
],
"success_rate": [
{
"time_bucket": "2023-11-07T05:31:56Z",
"invocations": 123,
"successful": 123,
"success_rate_pct": 123
}
],
"latency": [
{
"time_bucket": "2023-11-07T05:31:56Z",
"invocations": 123,
"p50_ms": 123,
"p90_ms": 123,
"p95_ms": 123,
"p99_ms": 123,
"avg_ms": 123,
"max_ms": 123
}
],
"by_integration": [
{
"integration_key": "<string>",
"invocations": 123,
"successful": 123,
"vendor_errors": 123,
"exceptions": 123,
"success_rate_pct": 123,
"p95_latency_ms": 123
}
],
"by_mode": [
{
"mode": "<string>",
"invocations": 123,
"successful": 123,
"vendor_errors": 123,
"exceptions": 123,
"success_rate_pct": 123,
"p95_latency_ms": 123
}
],
"error_breakdown": [
{
"error_category": "<string>",
"count": 123,
"share_pct": 123
}
]
}{
"error": "<string>",
"message": "<string>",
"retryable": true,
"retry_after": 123
}{
"error": "<string>",
"message": "<string>",
"retryable": true,
"retry_after": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Query Parameters
Pattern:
^(minute|hour|day|week)$Response
Successful Response
Combined dashboard payload — one envelope, every integration panel.
summary is at most one row but the underlying pipe returns a list, so we
keep it as a (possibly empty) list rather than special-casing it on the
client.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?
⌘I
One-shot envelope of every integration analytics pipe
curl --request GET \
--url https://api-sandbox.featherhq.com/v1/analytics/integrations/dashboard \
--header 'x-api-key: <api-key>'import requests
url = "https://api-sandbox.featherhq.com/v1/analytics/integrations/dashboard"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api-sandbox.featherhq.com/v1/analytics/integrations/dashboard', 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-sandbox.featherhq.com/v1/analytics/integrations/dashboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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-sandbox.featherhq.com/v1/analytics/integrations/dashboard"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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-sandbox.featherhq.com/v1/analytics/integrations/dashboard")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.featherhq.com/v1/analytics/integrations/dashboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"summary": [
{
"current_invocations": 123,
"previous_invocations": 123,
"pct_change_invocations": 123,
"current_failures": 123,
"previous_failures": 123,
"pct_change_failures": 123,
"current_success_rate_pct": 123,
"previous_success_rate_pct": 123,
"pct_change_success_rate_pct": 123,
"current_avg_latency_ms": 123,
"previous_avg_latency_ms": 123,
"pct_change_avg_latency_ms": 123,
"current_p95_latency_ms": 123,
"previous_p95_latency_ms": 123,
"pct_change_p95_latency_ms": 123
}
],
"usage": [
{
"time_bucket": "2023-11-07T05:31:56Z",
"invocations": 123,
"successful": 123,
"vendor_errors": 123,
"exceptions": 123
}
],
"success_rate": [
{
"time_bucket": "2023-11-07T05:31:56Z",
"invocations": 123,
"successful": 123,
"success_rate_pct": 123
}
],
"latency": [
{
"time_bucket": "2023-11-07T05:31:56Z",
"invocations": 123,
"p50_ms": 123,
"p90_ms": 123,
"p95_ms": 123,
"p99_ms": 123,
"avg_ms": 123,
"max_ms": 123
}
],
"by_integration": [
{
"integration_key": "<string>",
"invocations": 123,
"successful": 123,
"vendor_errors": 123,
"exceptions": 123,
"success_rate_pct": 123,
"p95_latency_ms": 123
}
],
"by_mode": [
{
"mode": "<string>",
"invocations": 123,
"successful": 123,
"vendor_errors": 123,
"exceptions": 123,
"success_rate_pct": 123,
"p95_latency_ms": 123
}
],
"error_breakdown": [
{
"error_category": "<string>",
"count": 123,
"share_pct": 123
}
]
}{
"error": "<string>",
"message": "<string>",
"retryable": true,
"retry_after": 123
}{
"error": "<string>",
"message": "<string>",
"retryable": true,
"retry_after": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}