Skip to content

App.published

Emitted each time an App is published.

App.publish emits App.published when it completes on an App.

PropertyValue
Emitted byApp.publish
NounApp
WakesNone.

Payload

Each delivery is an Event record. data holds what App.publish returns.

FieldTypeRequiredDescription
namestringrequiredApp.published.
atdatetimerequiredWhen it happened.
seqintegerIts position in the namespace, one more than the Event before; any seq is a cursor into the history.
datajsonrequiredThe Thing as the Action left it.
data.appApprequiredThe App, now released.
data.app.kindstringrequiredOne of api, mcp, cli, sdk, site, app, docs, or webhooks.
data.app.pathstringWhere it is mounted on its Domain, such as /api.
data.app.conformsTojsonThe Standards it also speaks, each mapping the Standard’s operations onto the Product’s Verbs.
data.app.personaslist of PersonaThe Personas it serves.
data.app.viewslist of DashboardIts Dashboards, compiled by default from the Persona’s Role: a list and record per Noun, a form per Verb.
data.app.slotsjsonNamed places where a Component replaces a default part, such as a record header or the ask control.

Example

JSON
{
  "$id": "https://api.sb/routewise.dev/events/event_1",
  "$type": "Event",
  "name": "App.published",
  "at": "2026-10-22T12:00:00Z",
  "data": {
    "app": {
      "$id": "https://api.sb/routewise.dev/apps/app_1",
      "$type": "App",
      "kind": "api",
      "path": "/",
      "conformsTo": {
        "standard": "openai-chat",
        "operations": {
          "chat.completions.create": "Listing.write"
        }
      },
      "personas": [
        "persona_1"
      ],
      "views": [
        "dashboard_1"
      ],
      "slots": {}
    }
  },
  "seq": 1
}