Activity

Every write in a workspace lands in its activity: who did it, when, through which door, and what it touched. Playcode adds its own facts too, like an email delivered or bounced. Activity on the Developers page shows the latest 20; eventSearch in the API reads it all.

On this page

The Activity list

#
Column Shows
When How long ago it happened
Type What happened, like domain.updated
Who You, a member's id, Playcode for its own facts, or "a former member"
Door the app, the agent, the CLI, the API, MCP, or Playcode
Subject The first characters of the changed resource's id

Read it through the API

#

eventSearch reads the workspace's events, newest first. From the CLI: playcode events eventSearch --workspaceUid <workspace uid>.

Argument What it does
workspaceUid The workspace to read. Required
filter.types Exact types, like domain.updated, or a family with a star, like domain.*
filter.subjectUid Only events about this resource
orderBy CREATED_DESC, newest first (the default), or CREATED_ASC
after An event's id: only events past it, in the chosen order
first How many: 50 by default, 100 at most

To follow the workspace without missing or repeating an event, read with CREATED_ASC and pass the last id you saw as after.

What an event holds

#
Field What it is
uid The event's id
type What happened: <subject>.<verb>, like domain.connected
subjectType, subjectUid The resource it is about
workspaceUid The workspace it happened in
actorUserUid Who acted; empty when Playcode acted, or after that person's account was erased
via The door: ui, agent, cli, api, mcp, or platform
tokenUid The access token that acted, when one did
requestId The request that wrote it, for support
data The call's arguments. Secret-looking fields read [redacted], and long values are cut
previous For an .updated event, the changed fields' earlier values
createdAt When it happened

Event types

#
Family Types
Domains domain.created, domain.updated, domain.connected, domain.disconnected, domain.moved, domain.transferred, domain.edgeChanged, domain.eligibilitySet, domain.verificationResent, domain.transferCodeRevealed, dnsZone.created, dnsZone.updated, dnsZone.deleted, dnsZone.restored
Projects project.updated, projectFile.updated, projectFile.deleted, projectPublish.created, projectPublish.cancelled, commandRun.created, commandRun.cancelled, commandRun.deleted
Chats chat.created, chatMessage.created
App email and settings appMailRecipient.created, appMailRecipient.deleted, appMailSenderDomain.created, appMailHeld.delivered, appMailPolicy.resumed, appEnvVar.updated, appService.enabled, and the other appMail..., appEnvVar... and network... types
Email delivery, from Playcode mail.delivered, mail.bounced, mail.complained
An app's video renders, from Playcode job.completed, job.failed
Connections, from Playcode connection.revoked
Tokens and webhooks accessToken.created, accessToken.deleted, oauthApp.revoked, secretKey.rotated, webhookEndpoint.created, webhookEndpoint.updated, webhookEndpoint.deleted, webhookEndpoint.rotated, webhookDelivery.retried
Consent proposal.created, proposal.declined

Who sees what

#
Reader Sees
A member in the app Every event of the workspace
An access token or a signed-in tool The events of the families it holds a permission for: domains:* sees domain and DNS events, projects:* project events, chats:* chat events, mail:send email delivery events
A webhook endpoint Every event that matches its types, whoever caused it

Limits

#
  • Events are kept 400 days.
  • Reads do not land here, and neither do refused calls.
  • A publish's result is not an event yet: projectPublish.created marks only its start.
  • The list on the Developers page shows the latest 20 events. Use eventSearch for the rest.