Menu QaldyDocs

Audit and egress

The audit log and its hash-chain check, and what each app is allowed to reach. 21 routes, from the API’s own OpenAPI document.

21 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}/​flowOne app's data flow: what it reads, where it can send, and the policy in words
GET/​v1/​workspaces/​{ws}/​auditThe audit log, newest first: ids and metadata only (workspace admins)
GET/​v1/​workspaces/​{ws}/​audit/​checkpointsSigned daily checkpoints of the audit chain, and the key that checks them (admins)
POST/​v1/​workspaces/​{ws}/​audit/​checkpointsSign a checkpoint of the chain now, if it moved since the last one (admins)
GET/​v1/​workspaces/​{ws}/​audit/​exportThe audit chain as JSON Lines, oldest first, up to 10,000 events (admins)
GET/​v1/​workspaces/​{ws}/​audit/​sinksWhere this workspace streams its audit log (admins)
POST/​v1/​workspaces/​{ws}/​audit/​sinksStream the audit log to an HTTPS webhook or an S3 bucket (admins)
PATCH/​v1/​workspaces/​{ws}/​audit/​sinks/​{id}Rename, pause or resume a destination (admins)
DELETE/​v1/​workspaces/​{ws}/​audit/​sinks/​{id}Stop streaming to a destination and forget it (admins)
POST/​v1/​workspaces/​{ws}/​audit/​sinks/​{id}/​testSend one test message to a destination (admins)
GET/​v1/​workspaces/​{ws}/​audit/​verifyRecompute this workspace's audit chain now (workspace admins)
PUT/​v1/​workspaces/​{ws}/​connections/​{id}/​expiryRecord the day a connection’s key stops working, or clear it (admins)
POST/​v1/​workspaces/​{ws}/​connections/​{id}/​rotationReplace a connection’s key in place: the old one serves until the new one works (admins)
DELETE/​v1/​workspaces/​{ws}/​connections/​{id}/​rotationThrow the waiting key away; the old one stays (admins)
POST/​v1/​workspaces/​{ws}/​connections/​{id}/​rotation/​checkTry the waiting key again (admins)
POST/​v1/​workspaces/​{ws}/​connections/​{id}/​rotation/​switchUse the waiting key without a successful check; the audit log says so (admins)
GET/​v1/​workspaces/​{ws}/​flowThe information-flow policy, what can be labelled and what the gate decided (admins)
PUT/​v1/​workspaces/​{ws}/​flowReplace the information-flow policy (admins). The revision you started from must still be current
GET/​v1/​workspaces/​{ws}/​security/​egressWhat each app may reach, and the calls the gate refused (workspace admins)
GET/​v1/​workspaces/​{ws}/​security/​keysSealed keys: when stored, rotated and due to expire, never the keys (admins)
POST/​v1/​workspaces/​{ws}/​security/​panicRevoke every token, session, backend key, connection key and webhook secret at once (admins)

Reference

GET /v1/apps/{id}/flow

One app's data flow: what it reads, where it can send, and the policy in words.

  • 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: can_view on the app; tokens: no
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
appIdstringyesat least 1 characters
namestringyesat least 1 characters
status"draft" · "building" · "healthy" · "warning" · "failing" · "paused"yes
activebooleanyes
held"pii" · "financial" · "secret"[]yes
sourcesobject[]yes
sources[].kind"table" · "connection"yes
sources[].keystringyes1 to 100 characters
sources[].namestringyes1 to 120 characters
sources[].labels"pii" · "financial" · "secret"[]yes
sources[].columnsstring[]yesup to 32 items
sinksobject[]yes
sinks[].destinationstringyesup to 300 characters
sinks[].kind"connector" · "http" · "host" · "ai"yes
sinks[].namestringyes1 to 253 characters
sinks[].actionstring or nullyesup to 64 characters
sinks[].scopestring or nullyesup to 100 characters
sinks[].reasonstring or nullyesup to 200 characters
sinks[].verdictsobject[]yes
limitsobjectyes
limits.requestBytesintegeryes256 to 262144
limits.runBytesintegeryes1024 to 4194304
decisionsobject[]yes
decisions[].atstring (date-time)yes
decisions[].decision"blocked" · "allowed"yes
decisions[].appIdstringyesat least 1 characters
decisions[].appNamestring or nullyes
decisions[].runIdstring or nullyes
decisions[].labels"pii" · "financial" · "secret"[]yes
decisions[].destinationstringyesup to 300 characters

…and 3 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}/audit

The audit log, newest first: ids and metadata only (workspace admins).

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: admin; tokens: yes, read scope
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
actionquerystringup to 64 characters
actorquerystring1 to 128 characters
appIdquerystring1 to 128 characters
limitqueryinteger1 to 200. default 50
cursorquerystringup to 200 characters

Response 200

FieldTypeRequiredNotes
itemsobject[]yes
items[].seqintegeryesat least 1
items[].atstring (date-time)yes
items[].actorobjectyes
items[].actionstringyes1 to 64 characters
items[].targetobjectyes
items[].datamap of any or nullyes
items[].prevHashstringyes
items[].hashstringyes
nextCursorstring or nullyes

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

GET /v1/workspaces/{ws}/audit/checkpoints

Signed daily checkpoints of the audit chain, and the key that checks them (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
limitqueryinteger1 to 200. default 30

Response 200

FieldTypeRequiredNotes
configuredbooleanyes
keyIdstring or nullyes
publicKeystring or nullyes
keySource"dedicated" · "derived" · "dev" · null or nullyes
vaultbooleanyes
itemsobject[]yes
items[].workspaceIdstringyesat least 1 characters
items[].seqintegeryesat least 1
items[].hashstringyes
items[].atstring (date-time)yes
items[].keyIdstringyes
items[].signaturestringyes
items[].anchoredAtstring (date-time) or null

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

POST /v1/workspaces/{ws}/audit/checkpoints

Sign a checkpoint of the chain now, if it moved since the last one (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
configuredbooleanyes
keyIdstring or nullyes
publicKeystring or nullyes
keySource"dedicated" · "derived" · "dev" · null or nullyes
vaultbooleanyes
itemsobject[]yes
items[].workspaceIdstringyesat least 1 characters
items[].seqintegeryesat least 1
items[].hashstringyes
items[].atstring (date-time)yes
items[].keyIdstringyes
items[].signaturestringyes
items[].anchoredAtstring (date-time) or null

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

GET /v1/workspaces/{ws}/audit/export

The audit chain as JSON Lines, oldest first, up to 10,000 events (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
fromSeqqueryintegerat least 1. default 1
limitqueryinteger1 to 10000. default 5000

Response 200: JSON Lines (served as application/x-ndjson): one event per line. x-qaldy-export-next names the next fromSeq, if any.

GET /v1/workspaces/{ws}/audit/sinks

Where this workspace streams its audit log (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
itemsobject[]yes
items[].idstringyesat least 1 characters
items[].kind"webhook" · "s3"yes
items[].namestringyesat least 1 characters
items[].targetstringyesat least 1 characters
items[].status"active" · "paused" · "failing"yes
items[].previewbooleanyes
items[].createdAtstring (date-time)yes
items[].lastOkAtstring (date-time) or nullyes
items[].lastAttemptAtstring (date-time) or nullyes
items[].lastError"rejected" · "unreachable" · "timeout" · "private_address" · "dns_failed" · "tls" · "credentials_unavailable" · "role_denied" · … or nullyes
items[].failuresintegeryesat least 0
items[].deliveredSeqintegeryesat least 0
items[].behindintegeryesat least 0
items[].externalIdstring or nullyes
s3Availablebooleanyes
s3Principalstring or nullyes
maxintegeryesat least 1

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

POST /v1/workspaces/{ws}/audit/sinks

Stream the audit log to an HTTPS webhook or an S3 bucket (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Request body (application/json)

An empty object: {}.

Response 200

FieldTypeRequiredNotes
sinkobjectyes
sink.idstringyesat least 1 characters
sink.kind"webhook" · "s3"yes
sink.namestringyesat least 1 characters
sink.targetstringyesat least 1 characters
sink.status"active" · "paused" · "failing"yes
sink.previewbooleanyes
sink.createdAtstring (date-time)yes
sink.lastOkAtstring (date-time) or nullyes
sink.lastAttemptAtstring (date-time) or nullyes
sink.lastError"rejected" · "unreachable" · "timeout" · "private_address" · "dns_failed" · "tls" · "credentials_unavailable" · "role_denied" · … or nullyes
sink.failuresintegeryesat least 0
sink.deliveredSeqintegeryesat least 0
sink.behindintegeryesat least 0
sink.externalIdstring or nullyes
signingSecretstring or nullyes

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

PATCH /v1/workspaces/{ws}/audit/sinks/{id}

Rename, pause or resume a destination (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 64 characters

Request body (application/json)

FieldTypeRequiredNotes
namestring1 to 60 characters
state"active" · "paused"

Response 200

FieldTypeRequiredNotes
idstringyesat least 1 characters
kind"webhook" · "s3"yes
namestringyesat least 1 characters
targetstringyesat least 1 characters
status"active" · "paused" · "failing"yes
previewbooleanyes
createdAtstring (date-time)yes
lastOkAtstring (date-time) or nullyes
lastAttemptAtstring (date-time) or nullyes
lastError"rejected" · "unreachable" · "timeout" · "private_address" · "dns_failed" · "tls" · "credentials_unavailable" · "role_denied" · … or nullyes
failuresintegeryesat least 0
deliveredSeqintegeryesat least 0
behindintegeryesat least 0
externalIdstring or nullyes

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

DELETE /v1/workspaces/{ws}/audit/sinks/{id}

Stop streaming to a destination and forget it (admins).

  • 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; console only
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}/audit/sinks/{id}/test

Send one test message to a destination (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 64 characters

Response 200

FieldTypeRequiredNotes
okbooleanyes
error"rejected" · "unreachable" · "timeout" · "private_address" · "dns_failed" · "tls" · "credentials_unavailable" · "role_denied" · … or nullyes
sinkobjectyes
sink.idstringyesat least 1 characters
sink.kind"webhook" · "s3"yes
sink.namestringyesat least 1 characters
sink.targetstringyesat least 1 characters
sink.status"active" · "paused" · "failing"yes
sink.previewbooleanyes
sink.createdAtstring (date-time)yes
sink.lastOkAtstring (date-time) or nullyes
sink.lastAttemptAtstring (date-time) or nullyes
sink.lastError"rejected" · "unreachable" · "timeout" · "private_address" · "dns_failed" · "tls" · "credentials_unavailable" · "role_denied" · … or nullyes
sink.failuresintegeryesat least 0
sink.deliveredSeqintegeryesat least 0
sink.behindintegeryesat least 0
sink.externalIdstring or nullyes

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

GET /v1/workspaces/{ws}/audit/verify

Recompute this workspace's audit chain now (workspace admins).

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: admin; tokens: yes, read scope
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
okbooleanyes
countintegeryesat least 0
headPrefixstring or nullyes
checkedAtstring (date-time)yes
brokenobject or nullyes
broken.seqintegeryesat least 0
broken.reason"seq-gap" · "prev-hash" · "hash" · "invalid-row" · "head"yes
checkpointobject
checkpoint.state"ok" · "none" · "not_configured" · "failed"yes
checkpoint.totalintegeryesat least 0
checkpoint.lastobject or nullyes
checkpoint.failureobject or nullyes

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

PUT /v1/workspaces/{ws}/connections/{id}/expiry

Record the day a connection’s key stops working, or clear it (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
expiresAtstring (date-time) or nullyes

Response 200

FieldTypeRequiredNotes
connectionIdstringyesat least 1 characters
connectorId"shop" · "stripe" · "gmail" · "telegram" · "sheets" · "slack" · "kaspi" · "1c" · …yes
displayNamestringyesat least 1 characters
sealedTostring or nullyes
storedAtstring (date-time) or nullyes
rotatedAtstring (date-time) or nullyes
expiresAtstring (date-time) or nullyes
expiry"none" · "ok" · "soon" · "expired"yes
daysLeftinteger or nullyes
revokedAtstring (date-time) or nullyes
rotationobject or nullyes
rotation.sincestring (date-time)yes
rotation.reason"auth_rejected" · "upstream_error" · "upstream_failed" · "dns_failed" · "private_address" · "secret_unavailable" · "not_connected" · "gate_unreachable" · … or nullyes
rotation.checkedAtstring (date-time) or nullyes

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

POST /v1/workspaces/{ws}/connections/{id}/rotation

Replace a connection’s key in place: the old one serves until the new one works (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
secretstringyes1 to 4096 characters
expiresAtstring (date-time) or null

Response 200

FieldTypeRequiredNotes
outcome"rotated" · "pending" · "rejected"yes
reason"auth_rejected" · "upstream_error" · "upstream_failed" · "dns_failed" · "private_address" · "secret_unavailable" · "not_connected" · "gate_unreachable" · … or nullyes
checked"gate" · "format" · "none"yes
keyobjectyes
key.connectionIdstringyesat least 1 characters
key.connectorId"shop" · "stripe" · "gmail" · "telegram" · "sheets" · "slack" · "kaspi" · "1c" · …yes
key.displayNamestringyesat least 1 characters
key.sealedTostring or nullyes
key.storedAtstring (date-time) or nullyes
key.rotatedAtstring (date-time) or nullyes
key.expiresAtstring (date-time) or nullyes
key.expiry"none" · "ok" · "soon" · "expired"yes
key.daysLeftinteger or nullyes
key.revokedAtstring (date-time) or nullyes
key.rotationobject or nullyes

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

DELETE /v1/workspaces/{ws}/connections/{id}/rotation

Throw the waiting key away; the old one stays (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
connectionIdstringyesat least 1 characters
connectorId"shop" · "stripe" · "gmail" · "telegram" · "sheets" · "slack" · "kaspi" · "1c" · …yes
displayNamestringyesat least 1 characters
sealedTostring or nullyes
storedAtstring (date-time) or nullyes
rotatedAtstring (date-time) or nullyes
expiresAtstring (date-time) or nullyes
expiry"none" · "ok" · "soon" · "expired"yes
daysLeftinteger or nullyes
revokedAtstring (date-time) or nullyes
rotationobject or nullyes
rotation.sincestring (date-time)yes
rotation.reason"auth_rejected" · "upstream_error" · "upstream_failed" · "dns_failed" · "private_address" · "secret_unavailable" · "not_connected" · "gate_unreachable" · … or nullyes
rotation.checkedAtstring (date-time) or nullyes

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

POST /v1/workspaces/{ws}/connections/{id}/rotation/check

Try the waiting key again (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
outcome"rotated" · "pending" · "rejected"yes
reason"auth_rejected" · "upstream_error" · "upstream_failed" · "dns_failed" · "private_address" · "secret_unavailable" · "not_connected" · "gate_unreachable" · … or nullyes
checked"gate" · "format" · "none"yes
keyobjectyes
key.connectionIdstringyesat least 1 characters
key.connectorId"shop" · "stripe" · "gmail" · "telegram" · "sheets" · "slack" · "kaspi" · "1c" · …yes
key.displayNamestringyesat least 1 characters
key.sealedTostring or nullyes
key.storedAtstring (date-time) or nullyes
key.rotatedAtstring (date-time) or nullyes
key.expiresAtstring (date-time) or nullyes
key.expiry"none" · "ok" · "soon" · "expired"yes
key.daysLeftinteger or nullyes
key.revokedAtstring (date-time) or nullyes
key.rotationobject or nullyes

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

POST /v1/workspaces/{ws}/connections/{id}/rotation/switch

Use the waiting key without a successful check; the audit log says so (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
outcome"rotated" · "pending" · "rejected"yes
reason"auth_rejected" · "upstream_error" · "upstream_failed" · "dns_failed" · "private_address" · "secret_unavailable" · "not_connected" · "gate_unreachable" · … or nullyes
checked"gate" · "format" · "none"yes
keyobjectyes
key.connectionIdstringyesat least 1 characters
key.connectorId"shop" · "stripe" · "gmail" · "telegram" · "sheets" · "slack" · "kaspi" · "1c" · …yes
key.displayNamestringyesat least 1 characters
key.sealedTostring or nullyes
key.storedAtstring (date-time) or nullyes
key.rotatedAtstring (date-time) or nullyes
key.expiresAtstring (date-time) or nullyes
key.expiry"none" · "ok" · "soon" · "expired"yes
key.daysLeftinteger or nullyes
key.revokedAtstring (date-time) or nullyes
key.rotationobject or nullyes

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

GET /v1/workspaces/{ws}/flow

The information-flow policy, what can be labelled and what the gate decided (admins).

  • 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; tokens: no
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
workspaceIdstringyesat least 1 characters
policyobjectyes
policy.sourcesobject[]yesup to 200 items
policy.allowobject[]yesup to 300 items
policy.limitsobjectyes
policy.revisionintegeryes0 to 1000000000
appsobject[]yes
apps[].appIdstringyesat least 1 characters
apps[].namestringyesat least 1 characters
apps[].status"draft" · "building" · "healthy" · "warning" · "failing" · "paused"yes
apps[].tablesobject[]yes
apps[].held"pii" · "financial" · "secret"[]yes
connectionsobject[]yes
connections[].keystringyes
connections[].namestringyes1 to 120 characters
connections[].provider"sheets" · "http"yes
connections[].labels"pii" · "financial" · "secret"[]yes
connections[].appsintegeryesat least 0
destinationsobject[]yes
destinations[].destinationstringyesup to 300 characters
destinations[].kind"connector" · "http" · "host" · "ai"yes
destinations[].namestringyes1 to 253 characters
destinations[].actionstring or nullyesup to 64 characters
destinations[].appsintegeryesat least 1
decisionsobject[]yes
decisions[].atstring (date-time)yes
decisions[].decision"blocked" · "allowed"yes
decisions[].appIdstringyesat least 1 characters
decisions[].appNamestring or nullyes
decisions[].runIdstring or nullyes

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

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

PUT /v1/workspaces/{ws}/flow

Replace the information-flow policy (admins). The revision you started from must still be current.

  • 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; tokens: no
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
sourcesobject[]yesup to 200 items
allowobject[]yesup to 300 items
allow[].label"pii" · "financial" · "secret"yes
allow[].tostringyesup to 300 characters
limitsobjectyes
limits.requestBytesintegeryes256 to 262144
limits.runBytesintegeryes1024 to 4194304
revisionintegeryesat least 0

Response 200

FieldTypeRequiredNotes
workspaceIdstringyesat least 1 characters
policyobjectyes
policy.sourcesobject[]yesup to 200 items
policy.allowobject[]yesup to 300 items
policy.limitsobjectyes
policy.revisionintegeryes0 to 1000000000
appsobject[]yes
apps[].appIdstringyesat least 1 characters
apps[].namestringyesat least 1 characters
apps[].status"draft" · "building" · "healthy" · "warning" · "failing" · "paused"yes
apps[].tablesobject[]yes
apps[].held"pii" · "financial" · "secret"[]yes
connectionsobject[]yes
connections[].keystringyes
connections[].namestringyes1 to 120 characters
connections[].provider"sheets" · "http"yes
connections[].labels"pii" · "financial" · "secret"[]yes
connections[].appsintegeryesat least 0
destinationsobject[]yes
destinations[].destinationstringyesup to 300 characters
destinations[].kind"connector" · "http" · "host" · "ai"yes
destinations[].namestringyes1 to 253 characters
destinations[].actionstring or nullyesup to 64 characters
destinations[].appsintegeryesat least 1
decisionsobject[]yes
decisions[].atstring (date-time)yes
decisions[].decision"blocked" · "allowed"yes
decisions[].appIdstringyesat least 1 characters
decisions[].appNamestring or nullyes
decisions[].runIdstring or nullyes

…and 5 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}/security/egress

What each app may reach, and the calls the gate refused (workspace admins).

  • 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
workspaceIdstringyesat least 1 characters
windowDaysintegeryesat least 1
appsobject[]yes
apps[].appIdstringyesat least 1 characters
apps[].namestringyesat least 1 characters
apps[].status"draft" · "building" · "healthy" · "warning" · "failing" · "paused"yes
apps[].category"interface" · "data" · "messaging" · "money" · "ai" · "time" · "people" · "growth"yes
apps[].connectorsobject[]yes
apps[].extraDomainsobject[]yes
apps[].blockedintegeryesat least 0
apps[].lastBlockedAtstring (date-time) or nullyes
apps[].lastBlockedHoststring or nullyes

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

GET /v1/workspaces/{ws}/security/keys

Sealed keys: when stored, rotated and due to expire, never the keys (admins).

  • 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; console only
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
itemsobject[]yes
items[].connectionIdstringyesat least 1 characters
items[].connectorId"shop" · "stripe" · "gmail" · "telegram" · "sheets" · "slack" · "kaspi" · "1c" · …yes
items[].displayNamestringyesat least 1 characters
items[].sealedTostring or nullyes
items[].storedAtstring (date-time) or nullyes
items[].rotatedAtstring (date-time) or nullyes
items[].expiresAtstring (date-time) or nullyes
items[].expiry"none" · "ok" · "soon" · "expired"yes
items[].daysLeftinteger or nullyes
items[].revokedAtstring (date-time) or nullyes
items[].rotationobject or nullyes

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

POST /v1/workspaces/{ws}/security/panic

Revoke every token, session, backend key, connection key and webhook secret at once (admins).

  • 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; signed-in person only, never a token
ParameterInTypeRequiredNotes
wspathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
confirmstringyes1 to 80 characters
reasonstringup to 200 characters

Response 200

FieldTypeRequiredNotes
atstring (date-time)yes
revokedobjectyes
revoked.accessTokensintegeryesat least 0
revoked.backendKeysintegeryesat least 0
revoked.sessionsintegeryesat least 0
revoked.connectorKeysintegeryesat least 0
revoked.webhookSecretsintegeryesat least 0
othersmap of integerdefault [object Object]
connectionsstring[]yes

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.