cURL
curl --request GET \
--url 'https://app.teable.ai/api/admin/observability/computed-outbox?refresh=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'const url = 'https://app.teable.ai/api/admin/observability/computed-outbox?refresh=SOME_STRING_VALUE';
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}const http = require('https');
const options = {
method: 'GET',
hostname: 'app.teable.ai',
port: null,
path: '/api/admin/observability/computed-outbox?refresh=SOME_STRING_VALUE',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();import http.client
conn = http.client.HTTPSConnection("app.teable.ai")
headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/api/admin/observability/computed-outbox?refresh=SOME_STRING_VALUE", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.teable.ai/api/admin/observability/computed-outbox",
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.teable.ai/api/admin/observability/computed-outbox"
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.teable.ai/api/admin/observability/computed-outbox")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.teable.ai/api/admin/observability/computed-outbox")
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{
"status": "healthy",
"reasons": [
"queue_unavailable"
],
"sampledAt": "<string>",
"config": {
"provider": "bullmq",
"producerEnabled": true,
"consumerEnabled": true,
"monitorIntervalMs": 123
},
"queue": {
"configured": true,
"reachable": true,
"workers": 123,
"waiting": 123,
"active": 123,
"delayed": 123,
"failed": 123,
"paused": 123,
"prioritized": 123,
"completed": 123,
"completedRetentionLimit": 123,
"failedRetentionLimit": 123,
"recentCompleted": [
{
"taskId": "<string>",
"baseId": "<string>",
"cause": "created",
"finishedAt": "<string>",
"attemptsMade": 123,
"baseName": "<string>",
"spaceId": "<string>",
"spaceName": "<string>",
"processingDurationMs": 123
}
],
"recentFailed": [
{
"taskId": "<string>",
"baseId": "<string>",
"failedAt": "<string>",
"failedReason": "<string>",
"attemptsMade": 123,
"baseName": "<string>",
"spaceId": "<string>",
"spaceName": "<string>",
"cause": "created",
"ledgerState": "pending"
}
],
"isPaused": true,
"workerConcurrency": {
"processDefault": 123,
"override": 123,
"min": 123,
"max": 123
},
"claimConcurrency": {
"processDefault": {
"perBase": 123,
"perSeedTable": 123
},
"override": {
"perBase": 123,
"perSeedTable": 123
},
"min": 123,
"max": 123
},
"error": "<string>"
},
"outbox": {
"duePending": 123,
"scheduledPending": 123,
"activeProcessing": 123,
"staleProcessing": 123,
"dead": 123,
"oldestDueAgeMs": 123,
"targetCount": 123,
"unavailableTargetCount": 123,
"storage": [
{
"duePending": 123,
"scheduledPending": 123,
"activeProcessing": 123,
"staleProcessing": 123,
"dead": 123,
"oldestDueAgeMs": 123,
"storage": "default",
"targetCount": 123,
"unavailableTargetCount": 123,
"pausedPending": 123,
"anomalyGroups": 123,
"oldestPausedAgeMs": 123,
"activePauseScopeCount": 123
}
],
"pausedPending": 123,
"anomalyGroups": 123,
"oldestPausedAgeMs": 123,
"activePauseScopeCount": 123,
"error": "<string>"
},
"activity": {
"scope": "process",
"lastPublishAt": "<string>",
"lastPublishResult": "accepted",
"lastPublishCause": "<string>",
"lastConsumeAt": "<string>",
"lastConsumeOutcome": "processed",
"lastDeliveryLagMs": 123,
"lastExecutionDurationMs": 123
},
"pauses": {
"activeScopeCount": 123,
"pausedPending": 123,
"oldestPausedAgeMs": 123
},
"dataDbHealth": {
"unhealthyByodbConnections": 123
}
}admin
Get adminobservabilitycomputed outbox
Get the current BullMQ and durable computed outbox health snapshot
Required token scopes: instance|read
GET
/
admin
/
observability
/
computed-outbox
cURL
curl --request GET \
--url 'https://app.teable.ai/api/admin/observability/computed-outbox?refresh=SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'const url = 'https://app.teable.ai/api/admin/observability/computed-outbox?refresh=SOME_STRING_VALUE';
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}const http = require('https');
const options = {
method: 'GET',
hostname: 'app.teable.ai',
port: null,
path: '/api/admin/observability/computed-outbox?refresh=SOME_STRING_VALUE',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();import http.client
conn = http.client.HTTPSConnection("app.teable.ai")
headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/api/admin/observability/computed-outbox?refresh=SOME_STRING_VALUE", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.teable.ai/api/admin/observability/computed-outbox",
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.teable.ai/api/admin/observability/computed-outbox"
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.teable.ai/api/admin/observability/computed-outbox")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.teable.ai/api/admin/observability/computed-outbox")
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{
"status": "healthy",
"reasons": [
"queue_unavailable"
],
"sampledAt": "<string>",
"config": {
"provider": "bullmq",
"producerEnabled": true,
"consumerEnabled": true,
"monitorIntervalMs": 123
},
"queue": {
"configured": true,
"reachable": true,
"workers": 123,
"waiting": 123,
"active": 123,
"delayed": 123,
"failed": 123,
"paused": 123,
"prioritized": 123,
"completed": 123,
"completedRetentionLimit": 123,
"failedRetentionLimit": 123,
"recentCompleted": [
{
"taskId": "<string>",
"baseId": "<string>",
"cause": "created",
"finishedAt": "<string>",
"attemptsMade": 123,
"baseName": "<string>",
"spaceId": "<string>",
"spaceName": "<string>",
"processingDurationMs": 123
}
],
"recentFailed": [
{
"taskId": "<string>",
"baseId": "<string>",
"failedAt": "<string>",
"failedReason": "<string>",
"attemptsMade": 123,
"baseName": "<string>",
"spaceId": "<string>",
"spaceName": "<string>",
"cause": "created",
"ledgerState": "pending"
}
],
"isPaused": true,
"workerConcurrency": {
"processDefault": 123,
"override": 123,
"min": 123,
"max": 123
},
"claimConcurrency": {
"processDefault": {
"perBase": 123,
"perSeedTable": 123
},
"override": {
"perBase": 123,
"perSeedTable": 123
},
"min": 123,
"max": 123
},
"error": "<string>"
},
"outbox": {
"duePending": 123,
"scheduledPending": 123,
"activeProcessing": 123,
"staleProcessing": 123,
"dead": 123,
"oldestDueAgeMs": 123,
"targetCount": 123,
"unavailableTargetCount": 123,
"storage": [
{
"duePending": 123,
"scheduledPending": 123,
"activeProcessing": 123,
"staleProcessing": 123,
"dead": 123,
"oldestDueAgeMs": 123,
"storage": "default",
"targetCount": 123,
"unavailableTargetCount": 123,
"pausedPending": 123,
"anomalyGroups": 123,
"oldestPausedAgeMs": 123,
"activePauseScopeCount": 123
}
],
"pausedPending": 123,
"anomalyGroups": 123,
"oldestPausedAgeMs": 123,
"activePauseScopeCount": 123,
"error": "<string>"
},
"activity": {
"scope": "process",
"lastPublishAt": "<string>",
"lastPublishResult": "accepted",
"lastPublishCause": "<string>",
"lastConsumeAt": "<string>",
"lastConsumeOutcome": "processed",
"lastDeliveryLagMs": 123,
"lastExecutionDurationMs": 123
},
"pauses": {
"activeScopeCount": 123,
"pausedPending": 123,
"oldestPausedAgeMs": 123
},
"dataDbHealth": {
"unhealthyByodbConnections": 123
}
}Autorisierungen
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Abfrageparameter
Force a fresh sample when 1/true. Cached samples are returned by default.
Verfügbare Optionen:
0, 1, true, false Antwort
200 - application/json
Successful response
Verfügbare Optionen:
healthy, degraded, critical Verfügbare Optionen:
queue_unavailable, queue_paused, consumer_unavailable, failed_jobs, dead_letters, stale_processing, overdue_pending, paused_backlog, target_unavailable 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
Zuletzt geändert am 15. September 2026
War diese Seite hilfreich?

