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| Name | In | Type | Required | Description |
|---|
target_scope_id | query | string(uuid) | No | — |
|---|
Request body
application/json · Required:Yes
recordObservabilityFrontendEvent Request body| Name | Type | Required | Description |
|---|
event_code | string: route_error / api_error / render_error | Yes | — |
|---|
route | string | Yes | — |
|---|
reason_code | string | Yes | — |
|---|
result_code | string: success / denied / failure | Yes | — |
|---|
release | string | Yes | — |
|---|
Responses
recordObservabilityFrontendEvent Responses| Status | Description |
|---|
202 | Event accepted into the durable audit fact stream. |
|---|
400 | Stable error code without raw dependency messages. |
|---|
401 | Stable error code without raw dependency messages. |
|---|
403 | Stable error code without raw dependency messages. |
|---|
503 | Stable 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| Name | In | Type | Required | Description |
|---|
target_scope_id | query | string(uuid) | No | — |
|---|
kind | query | array<string: login / operation / notification / frontend> | No | — |
|---|
result | query | array<string> | No | — |
|---|
action | query | string | No | — |
|---|
action_verb | query | string: create / update / delete | No | — |
|---|
resource_type | query | string | No | — |
|---|
resource_id | query | string | No | — |
|---|
change | query | string | No | — |
|---|
source_ip | query | string(ipv4) | string(ipv6) | string | No | — |
|---|
from | query | string(date-time) | No | — |
|---|
to | query | string(date-time) | No | — |
|---|
limit | query | integer | No | — |
|---|
cursor | query | string | No | — |
|---|
audit_boundary | query | string | No | Capture a signed target-scope audit head. Must be used alone with target_scope_id by a platform administrator. |
|---|
after_audit_boundary | query | string | No | Signed boundary returned by a prior capture. Must be paired with actor_user_id and resent unchanged on cursor pages. |
|---|
actor_user_id | query | string(uuid) | No | Exact 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| Status | Description |
|---|
200 | Stable snapshot-bound keyset page. Fields:items: array<LogFact> snapshot_at: string(date-time) total_count: integer(int64) next_cursor?: string audit_boundary?: string |
|---|
400 | Stable error code without raw dependency messages. |
|---|
401 | Stable error code without raw dependency messages. |
|---|
403 | Stable error code without raw dependency messages. |
|---|
503 | Stable 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| Name | In | Type | Required | Description |
|---|
target_scope_id | query | string(uuid) | No | — |
|---|
kind | query | array<string: login / operation / notification / frontend> | No | — |
|---|
result | query | array<string> | No | — |
|---|
action | query | string | No | — |
|---|
action_verb | query | string: create / update / delete | No | — |
|---|
resource_type | query | string | No | — |
|---|
resource_id | query | string | No | — |
|---|
change | query | string | No | — |
|---|
source_ip | query | string(ipv4) | string(ipv6) | string | No | — |
|---|
from | query | string(date-time) | No | — |
|---|
to | query | string(date-time) | No | — |
|---|
Responses
exportObservabilityLogs Responses| Status | Description |
|---|
200 | RFC 4180 CSV limited to 8 MiB with a digest of the exact safe bytes. |
|---|
400 | Stable error code without raw dependency messages. |
|---|
401 | Stable error code without raw dependency messages. |
|---|
403 | Stable error code without raw dependency messages. |
|---|
503 | Stable 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