Menu QaldyDocs

Logs, alerts and digest

An app’s logs and metrics, alert rules and their history, the weekly digest and the public status page. 12 routes, from the API’s own OpenAPI document.

12 routes. Every path starts at https://cloud-api.qaldy.com. Sign-in, tokens, errors and limits are on the overview.

Routes

MethodPathWhat it does
GET/​v1/​apps/​{id}/​logsThe last log lines of an app (its own output, runs and gate decisions)
GET/​v1/​apps/​{id}/​metricsRequests, errors, latency, CPU time and runs of an app, with the period before
GET/​v1/​workspaces/​{ws}/​alertsAlert rules, what is firing now and the latest history
GET/​v1/​workspaces/​{ws}/​alerts/​historyAlert history, newest first
POST/​v1/​workspaces/​{ws}/​alerts/​rulesAdd an alert rule
PUT/​v1/​workspaces/​{ws}/​alerts/​rules/​{id}Replace an alert rule
DELETE/​v1/​workspaces/​{ws}/​alerts/​rules/​{id}Remove an alert rule (an alert it had open is closed)
POST/​v1/​workspaces/​{ws}/​alerts/​rules/​{id}/​testSend a test alert through the rule’s channels
GET/​v1/​workspaces/​{ws}/​observe/​digest/​previewThis week’s digest as it would be emailed to you (nothing is sent)
POST/​v1/​workspaces/​{ws}/​observe/​digest/​send-testEmail this week’s digest to yourself only
GET/​v1/​workspaces/​{ws}/​observe/​settingsThe weekly digest and the public status page: switches and who gets what
PATCH/​v1/​workspaces/​{ws}/​observe/​settingsSwitch the digest or the status page on or off; a recipient can unsubscribe themselves

Reference

GET /v1/apps/{id}/logs

The last log lines of an app (its own output, runs and gate decisions).

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: can_edit on the app; tokens: read
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters
levelquery"debug" · "info" · "warn" · "error"
qquerystring1 to 100 characters
runIdquerystring1 to 128 characters
beforequeryintegerat least 1
limitqueryinteger1 to 500. default 200

Response 200

FieldTypeRequiredNotes
linesobject[]yes
lines[].idintegeryesat least 1
lines[].atstring (date-time)yes
lines[].appIdstringyesat least 1 characters
lines[].runIdstring or nullyesat least 1 characters
lines[].level"debug" · "info" · "warn" · "error"yes
lines[].source"app" · "platform" · "gate"yes
lines[].messagestringyesup to 2000 characters
hasMorebooleanyes
keepDaysintegeryesat least 1

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/apps/{id}/metrics

Requests, errors, latency, CPU time and runs of an app, with the period before.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: can_view on the app; tokens: read
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters
rangequery"24h" · "7d"default "24h"

Response 200

FieldTypeRequiredNotes
appIdstringyesat least 1 characters
range"24h" · "7d"yes
fromstring (date-time)yes
tostring (date-time)yes
bucketMsintegeryesat least 60000
bucketsobject[]yes
buckets[].atstring (date-time)yes
buckets[].requestsintegeryesat least 0
buckets[].errorsintegeryesat least 0
buckets[].p50Msnumber or nullyesat least 0
buckets[].p95Msnumber or nullyesat least 0
buckets[].cpuMsnumber or nullyesat least 0
buckets[].runsintegeryesat least 0
buckets[].failedRunsintegeryesat least 0
totalsobjectyes
totals.requestsintegeryesat least 0
totals.errorsintegeryesat least 0
totals.errorRatenumber or nullyes0 to 1
totals.p50Msnumber or nullyesat least 0
totals.p95Msnumber or nullyesat least 0
totals.cpuMsnumber or nullyesat least 0
totals.runsintegeryesat least 0
totals.failedRunsintegeryesat least 0
totals.runP50Msnumber or nullyesat least 0
totals.runP95Msnumber or nullyesat least 0
previousobjectyes
previous.requestsintegeryesat least 0
previous.errorsintegeryesat least 0
previous.errorRatenumber or nullyes0 to 1
previous.p50Msnumber or nullyesat least 0

…and 7 more fields. The full schema is in openapi.json.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/workspaces/{ws}/alerts

Alert rules, what is firing now and the latest history.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
rulesobject[]yes
openobject[]yes
open[].idstringyesat least 1 characters
open[].atstring (date-time)yes
open[].ruleIdstring or nullyes
open[].kind"error_rate" · "quiet" · "budget" · "heartbeat"yes
open[].state"fired" · "resolved" · "test"yes
open[].appIdstring or nullyes
open[].appNamestring or nullyes
open[].titlestringyes1 to 200 characters
open[].detailstringyesup to 600 characters
open[].deliveriesobject[]yes
recentobject[]yes
recent[].idstringyesat least 1 characters
recent[].atstring (date-time)yes
recent[].ruleIdstring or nullyes
recent[].kind"error_rate" · "quiet" · "budget" · "heartbeat"yes
recent[].state"fired" · "resolved" · "test"yes
recent[].appIdstring or nullyes
recent[].appNamestring or nullyes
recent[].titlestringyes1 to 200 characters
recent[].detailstringyesup to 600 characters
recent[].deliveriesobject[]yes
channelsobjectyes
channels.telegramobject[]yes
channels.emailAvailablebooleanyes
channels.emailRecipientsintegeryesat least 0
appsobject[]yes
apps[].idstringyesat least 1 characters
apps[].namestringyesat least 1 characters

…and 1 more fields. The full schema is in openapi.json.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/workspaces/{ws}/alerts/history

Alert history, newest first.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
limitqueryinteger1 to 100. default 30
cursorquerystringup to 80 characters

Response 200

FieldTypeRequiredNotes
eventsobject[]yes
events[].idstringyesat least 1 characters
events[].atstring (date-time)yes
events[].ruleIdstring or nullyes
events[].kind"error_rate" · "quiet" · "budget" · "heartbeat"yes
events[].state"fired" · "resolved" · "test"yes
events[].appIdstring or nullyes
events[].appNamestring or nullyes
events[].titlestringyes1 to 200 characters
events[].detailstringyesup to 600 characters
events[].deliveriesobject[]yes
nextCursorstring or nullyes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/workspaces/{ws}/alerts/rules

Add an alert rule.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Request body (application/json)

An empty object: {}.

Response 200

A object.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

PUT /v1/workspaces/{ws}/alerts/rules/{id}

Replace an alert rule.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 64 characters

Request body (application/json)

An empty object: {}.

Response 200

A object.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

DELETE /v1/workspaces/{ws}/alerts/rules/{id}

Remove an alert rule (an alert it had open is closed).

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 64 characters

Response 200

FieldTypeRequiredNotes
oktrueyes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/workspaces/{ws}/alerts/rules/{id}/test

Send a test alert through the rule’s channels.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 64 characters

Request body (application/json)

An empty object: {}.

Response 200

FieldTypeRequiredNotes
idstringyesat least 1 characters
atstring (date-time)yes
ruleIdstring or nullyes
kind"error_rate" · "quiet" · "budget" · "heartbeat"yes
state"fired" · "resolved" · "test"yes
appIdstring or nullyes
appNamestring or nullyes
titlestringyes1 to 200 characters
detailstringyesup to 600 characters
deliveriesobject[]yes
deliveries[].channel"in_app" · "email" · "telegram"yes
deliveries[].okbooleanyes
deliveries[].reasonstring or nullyesup to 64 characters

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/workspaces/{ws}/observe/digest/preview

This week’s digest as it would be emailed to you (nothing is sent).

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
subjectstringyesat least 1 characters
htmlstringyesat least 1 characters
textstringyesat least 1 characters
tostringyesat least 1 characters
fromstring (date-time)yes
untilstring (date-time)yes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/workspaces/{ws}/observe/digest/send-test

Email this week’s digest to yourself only.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Request body (application/json)

An empty object: {}.

Response 200

FieldTypeRequiredNotes
sentbooleanyes
reasonstring or nullyes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/workspaces/{ws}/observe/settings

The weekly digest and the public status page: switches and who gets what.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: member
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
digestobjectyes
digest.enabledbooleanyes
digest.isRecipientbooleanyes
digest.subscribedbooleanyes
digest.recipientsintegeryesat least 0
digest.lastSentAtstring (date-time) or nullyes
digest.nextSendAtstring (date-time)yes
digest.emailAvailablebooleanyes
statusobjectyes
status.settingsobjectyes
status.pathstringyesat least 1 characters
status.appsobject[]yes
canEditbooleanyes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

PATCH /v1/workspaces/{ws}/observe/settings

Switch the digest or the status page on or off; a recipient can unsubscribe themselves.

  • Authentication: the console’s session cookie.
  • Token: not available. This route is for a signed-in person in the console (403 console_only for a token).
  • Who: admin; a digest recipient may change their own subscribed
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
digestobject
digest.enabledboolean
digest.subscribedboolean
statusobject
status.enabledboolean
status.titlestring or nullup to 80 characters
status.appIdsstring[]up to 50 items

Response 200

FieldTypeRequiredNotes
digestobjectyes
digest.enabledbooleanyes
digest.isRecipientbooleanyes
digest.subscribedbooleanyes
digest.recipientsintegeryesat least 0
digest.lastSentAtstring (date-time) or nullyes
digest.nextSendAtstring (date-time)yes
digest.emailAvailablebooleanyes
statusobjectyes
status.settingsobjectyes
status.pathstringyesat least 1 characters
status.appsobject[]yes
canEditbooleanyes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

Type to search. Up and down to choose, Enter to open, Esc to close.