Xeonr Developer Docs

Report a renderer crash

POST
/uplim.api.v1.IntegrationsService/ReportRendererCrash

Records that the renderer for an integration archive failed (render error, unhandled exception, or unhandled rejection). Best-effort telemetry used for diagnosing broken renderers in production.

Authorization

OAuth2 upl:bucket:read
AuthorizationBearer <token>

OAuth 2.0 authorization

In: header

Scope: upl:bucket:read

Header Parameters

Connect-Protocol-Version?number

Define the version of the Connect protocol

Connect-Timeout-Ms?number

Define the timeout, in ms

Request Body

application/json

archiveUploadId?string

The renderer archive that crashed. UUID of the upload whose renderer config the host is serving.

Formatuuid
kind?string

enum.defined_only = true

Value in"RENDERER_CRASH_KIND_UNSPECIFIED" | "RENDERER_CRASH_KIND_RENDER" | "RENDERER_CRASH_KIND_ERROR" | "RENDERER_CRASH_KIND_UNHANDLED_REJECTION"
name?string

Error.name from the SDK (e.g. "TypeError"). Bounded so we can index by it without blowing log lines up.

Lengthlength <= 256
message?string

Error.message — the user-facing failure description.

Lengthlength <= 4096
stack?string

Full stack trace, when the browser gives us one. Renderers in production builds may have minified stacks; we don't try to source-map server-side.

Lengthlength <= 32768
rendererLocation?string|null

Where the renderer thinks it was when it crashed — the iframe's window.location.href at the time the boundary fired. Useful for narrowing down which entry / hash-route was active.

Lengthlength <= 2048
reportedAtMs?string

Iframe-side timestamp (Unix millis). The server records its own received_at — this lets us see how long crashes sat in the host before being forwarded, which matters when the host buffers. validate:skip client clock, passed through to telemetry verbatim; any value accepted

Formatint64
integrationId?string|null

Optional opaque integration ID, if the host knows which integration owns the renderer that crashed. Helps grouping when one archive is shared by several integrations.

Formatuuid
contentTypeId?string|null

The content type whose renderer config drove the iframe load. Optional because bucket / folder renderers aren't matched via a content type (their config attaches to a bucket type instead). Lets integration devs filter their crash list by content type.

Formatuuid
userAgent?string|null

navigator.userAgent at crash time, clamped. Most useful field for narrowing "only happens in Safari"-style bugs. Bounded so a goofy UA string can't blow the row up.

Lengthlength <= 512
viewportWidth?integer

window.innerWidth / window.innerHeight at crash time. 0 means the iframe never measured (extremely rare; serves as a "missing" marker rather than a real value). validate:skip passed through to telemetry verbatim; uint32 already excludes negatives

viewportHeight?integer

validate:skip passed through to telemetry verbatim; uint32 already excludes negatives

buildHash?string|null

Optional build hash from the renderer's config.json. Lets us group crashes per renderer build even when several builds share an archive_upload_id — e.g. when a developer iterates inside a single session. Populated by renderer-plugin-vite when present; empty when the build pipeline doesn't stamp one.

Lengthlength <= 64
[key: string]?never

Response Body

application/json

application/json

curl -X POST "https://uploads-api.xeonr.io/uplim.api.v1.IntegrationsService/ReportRendererCrash" \  -H "Connect-Protocol-Version: 1" \  -H "Connect-Timeout-Ms: 1000" \  -H "Content-Type: application/json" \  -d '{}'
{}
{
  "code": "not_found",
  "message": "string",
  "details": [
    {
      "type": "string",
      "value": "string",
      "debug": {}
    }
  ]
}