Operator Inbox API
Service Lasso owns the durable operator Inbox. Service Admin and workflow producers should use the runtime APIs below instead of storing Inbox state in the UI.
Inbox records are persisted under the workspace .state directory and survive Service Admin refreshes and runtime restarts. Records store safe metadata only. Raw secrets, credentials, provider tokens, cookies, private keys, passwords, bearer tokens, and raw payloads must be excluded or redacted before persistence.
Item Model
Each item uses the service-lasso.operator-inbox-item.v1 shape:
id: stable runtime id derived fromdedupeKeydedupeKey: producer-owned key used to upsert recurring noticestitle,summary,details: bounded human-readable texttype:system,workflow,service,update,security,help, orerrorseverity:info,success,warning,error, orcriticalsource:runtime,service,workflow,updater,broker,admin-ui, orsystemstate:unreadorreadvisibility:visibleorhiddencreatedAt,updatedAt,readAt,hiddenAtrelatedTarget: optional safe references such asserviceId,workflowId,updateId,auditId,backupExportId, orrouteaction: optional action metadata withlabel,target,kind, andavailability
Routes
GET /api/operator/inbox
GET /api/operator/inbox/:id
GET /api/operator/inbox/counts
POST /api/operator/inbox/record
POST /api/operator/inbox/:id/read
POST /api/operator/inbox/:id/unread
POST /api/operator/inbox/:id/hide
POST /api/operator/inbox/:id/unhide
POST /api/operator/inbox/bulk
GET /api/operator/inbox supports filter, type, state, visibility, severity, source, limit, and cursor.
Supported filter values are:
all: visible itemsunread: visible unread itemsupdates: visible update itemssystem: visible system itemsworkflow: visible workflow itemsservice: visible service itemserrors: visible error or critical itemshidden: hidden items
POST /api/operator/inbox/record upserts an item by dedupeKey. Existing read/hidden state is preserved while title, summary, details, severity, target, and action metadata refresh.
POST /api/operator/inbox/bulk accepts:
{
"action": "read",
"ids": ["inbox-update-core-available"]
}
Bulk mutation is intentionally limited to read and hide, so broad UI actions cannot accidentally restore or unread important records.
Runtime Producers
Runtime code should prefer the shared producer helpers instead of hand-building Inbox item payloads. The helpers generate stable dedupe keys and safe related-target metadata:
emitOperatorInboxSystemEventfor runtime startup, first-run setup, and authentication/session noticesemitOperatorInboxServiceEventfor lifecycle failures/recoveries and health degraded/unhealthy/recovered transitionsemitOperatorInboxWorkflowEventfor scheduled workflow/action run outcomesemitOperatorInboxUpdateEventfor update available, downloaded, installed, failed, deferred, and restart-required noticesemitOperatorInboxDiagnosticsEventfor diagnostics bundle, export, and archive completion noticesemitOperatorInboxBrokerEventfor Secrets Broker needs-attention when Core already reports the Broker as not discovered, not running, or vault-not-ready
The runtime currently records durable Inbox items when startup completes, first-run setup is required or completed, service lifecycle actions fail, health status actually transitions, scheduled service actions finish, update check/download/install actions produce operator-facing update state, archive exports complete, diagnostics bundles are prepared, and Core already reports Secrets Broker attention. Producers keep correlation keys stable for recurring conditions, update the same item in place, and skip poll-driven repeats. Generated text is metadata only: secrets, tokens, filesystem paths, and raw logs are redacted or omitted.
Service Admin Contract
Service Admin should use:
GET /api/operator/inbox?filter=unreadfor unread menus and badgesGET /api/operator/inbox/countsfor header/sidebar countsPOST /api/operator/inbox/:id/readwhen an operator opens or acknowledges an itemPOST /api/operator/inbox/:id/hidefor dismiss actions that should be restorableGET /api/operator/inbox?filter=hiddenandPOST /api/operator/inbox/:id/unhidefor restore surfaces