MethodPathSummaryAuth
POST/v1/observability/frontend-eventsAppend a sanitized frontend eventSession
GET/v1/observability/logsList authorized observability factsSession
GET/v1/observability/logs/exportExport authorized observability facts as bounded CSVSession

Contract file:api/openapi/v1/observability-log.yaml

Operation details

POST /v1/observability/frontend-events

Append a sanitized frontend event

operationId
recordObservabilityFrontendEvent
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

Tenant sessions append only to their own actor and subject scope. Platform sessions require platform.admin and one explicit target_scope_id. Source IP, actor, and request ID are derived from the trusted request and session.

Parameters

recordObservabilityFrontendEvent Parameters
NameInTypeRequiredDescription
target_scope_idquerystring(uuid)No—

Request body

application/json · Required:Yes

recordObservabilityFrontendEvent Request body
NameTypeRequiredDescription
event_codestring: route_error / api_error / render_errorYes—
routestringYes—
reason_codestringYes—
result_codestring: success / denied / failureYes—
releasestringYes—

Responses

recordObservabilityFrontendEvent Responses
StatusDescription
202Event accepted into the durable audit fact stream.
400Stable error code without raw dependency messages.
401Stable error code without raw dependency messages.
403Stable error code without raw dependency messages.
503Stable error code without raw dependency messages.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/observability/logs

List authorized observability facts

operationId
listObservabilityLogs
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

Tenant sessions are restricted to their own scope and facts where they are the actor or subject. Platform sessions require platform.admin and one explicit target_scope_id. Platform automation may capture a signed opaque audit boundary, then query an exact actor after that boundary without exposing stream positions; notification facts cannot be mixed into boundary queries.

Parameters

listObservabilityLogs Parameters
NameInTypeRequiredDescription
target_scope_idquerystring(uuid)No—
kindqueryarray<string: login / operation / notification / frontend>No—
resultqueryarray<string>No—
actionquerystringNo—
action_verbquerystring: create / update / deleteNo—
resource_typequerystringNo—
resource_idquerystringNo—
changequerystringNo—
source_ipquerystring(ipv4) | string(ipv6) | stringNo—
fromquerystring(date-time)No—
toquerystring(date-time)No—
limitqueryintegerNo—
cursorquerystringNo—
audit_boundaryquerystringNoCapture a signed target-scope audit head. Must be used alone with target_scope_id by a platform administrator.
after_audit_boundaryquerystringNoSigned boundary returned by a prior capture. Must be paired with actor_user_id and resent unchanged on cursor pages.
actor_user_idquerystring(uuid)NoExact browser actor for platform filtering. A signed-boundary query must pair this parameter with after_audit_boundary; subject-only notification matching is not permitted in that mode.

Responses

listObservabilityLogs Responses
StatusDescription
200Stable snapshot-bound keyset page.

Fields:items: array<LogFact> snapshot_at: string(date-time) total_count: integer(int64) next_cursor?: string audit_boundary?: string

400Stable error code without raw dependency messages.
401Stable error code without raw dependency messages.
403Stable error code without raw dependency messages.
503Stable error code without raw dependency messages.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/observability/logs/export

Export authorized observability facts as bounded CSV

operationId
exportObservabilityLogs
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

Tenant sessions are restricted to their own scope and facts where they are the actor or subject. Platform sessions require platform.admin and one explicit target_scope_id.

Parameters

exportObservabilityLogs Parameters
NameInTypeRequiredDescription
target_scope_idquerystring(uuid)No—
kindqueryarray<string: login / operation / notification / frontend>No—
resultqueryarray<string>No—
actionquerystringNo—
action_verbquerystring: create / update / deleteNo—
resource_typequerystringNo—
resource_idquerystringNo—
changequerystringNo—
source_ipquerystring(ipv4) | string(ipv6) | stringNo—
fromquerystring(date-time)No—
toquerystring(date-time)No—

Responses

exportObservabilityLogs Responses
StatusDescription
200RFC 4180 CSV limited to 8 MiB with a digest of the exact safe bytes.
400Stable error code without raw dependency messages.
401Stable error code without raw dependency messages.
403Stable error code without raw dependency messages.
503Stable error code without raw dependency messages.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list