Get desktop application:
View/edit binary Protocol Buffers messages
the element of change tree used to store and internal apply smartBlock history
set of actions to apply
snapshot - when not null, the Content will be ignored
file keys related to changes content
creation timestamp
version of business logic
business-level type of change applied to object
integrationName is the RAW app name of the paired API key that authored this change — exactly as the app link recorded it, never normalized (normalization is many-to-one and lossy; the DELETE ownership rule compares this value exactly). Stamped by heart from the authenticated session — never accepted from a request. Bounded at key issuance (domain.MaxIntegrationNameLen). Empty for changes not authored through an API key.
Used in:
Used in:
Used in:
Used in:
Used in:
Used in: ,
Used in:
Used in:
Used in:
Used in:
Used in: , ,
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in: ,
logId -> lastChangeId
snapshot data
all file keys related to doc
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
set of actions to apply
file keys related to changes content
creation timestamp
version of business logic
business-level type of change applied to object
integrationName mirrors Change.integrationName (the two messages share wire numbers by design; 1/2/5 are historical — do not reuse).
Used in:
json
Used in:
Used in:
Event – type of message, that could be sent from a middleware to the corresponding front-end.
Used in: , , ,
(message has no fields)
(message has no fields)
Used in:
Used in:
JsonApiStatus reports the outcome of one bind attempt for the local JSON API server (core/api). Broadcast after the initial bind at AccountSelect/AccountCreate and after every AccountChangeJsonApiAddr, whichever session triggered it. Not emitted when the server is disabled (an empty listen address). AccountChangeJsonApiAddr's response carries this exact same message as `status`, so the event and the RPC response are never two schemas to keep in sync.
Used in:
the effective, OS-confirmed bound address on success; the requested address on failure, since nothing bound
raw OS error text — debug/log only, never shown to the user verbatim; empty when success = true
LinkApprovalHide takes a pending prompt off screen once it is answered, denied or expired. Identified by the caller, since a request that was never approved never had a code.
Used in:
LinkApprovalRequest asks the user to approve a local-link pairing. It names who is asking and nothing else: the 4-digit code does not exist yet and is never broadcast. The user's answer goes back through AccountLocalLinkApproveChallenge, which mints the code and returns it to that one caller. Replaces the former LinkChallenge event, which carried the code to every session.
Used in:
the permission the app claims to need; pre-fills the prompt's permission control. Untrusted like `name`, and never a ceiling — the human approving decides. Read is the zero value, so a read claim is indistinguishable from no claim (both render the safe default).
Used in: ,
origin of the browser caller that asked for the challenge, e.g. "chrome-extension://<id>" or "http://localhost:3000". Empty for native clients, which send no Origin header. Taken from the header the browser sets, never from the request body, so it names the caller even when `name` is arbitrary. Show it to the user: it is the only attributable part of a pairing request.
Recovery is the account start-up status stream (GO-7471): a recovery-scoped, monotonic event log covering every app open, from the first millisecond of AccountSelect until every space has published its load result. Rpc.Account.RecoveryState serves the folded Snapshot from the same state, so push and pull cannot drift. Clients apply Updates with the same runId and id == last+1; on a gap or a new runId they re-pull the snapshot. Every payload is a level, never a delta.
(message has no fields)
Used in:
Used in:
empty = waiting for a peer
pull rounds started; a new round means "still trying"
Used in:
Used in:
dials observed since the last Connected
Used in:
nodeconf node types, e.g. coordinator, tree, file
Used in:
Used in: ,
Used in:
reserved, no producer yet
ErrorInfo (not "Error": enum values and nested messages share the enclosing scope, and SpaceState.Error already takes that name)
Used in: , , , , , ,
raw error text for logs/diagnostics; clients may log it, must never headline it
Used in:
true: the SpaceView set was confirmed against the network ("no more spaces to download"); false: the completeness gate opened on its stall bound and no completeness claim may be made — keep relying on the SpaceView subscription for spaces that appear later
Used in:
LocalPeersState is the fold's headline for the LAN layer, derived from every LocalPeer's dial state and space-exchange answer. The negative verdict surfaces only once every connected LAN peer has answered and none holds the account; one positive answer flips it at once.
Used in: ,
discovered, dialing, or connected and awaiting the exchange
every discovered peer failed to connect
every connected peer answered: it does not hold the account
at least one peer holds the account's tech space
Used in:
ModeUnknown is the zero value and is never emitted: an unset field must not read as a cold recovery, the worse failure direction.
Used in: ,
fresh device: the account repo did not exist
the repo existed
account creation paths
Used in:
display only; never compare across directions
scheme as any-sync reports it: quic, yamux, ...
0 = unknown (inbound)
Used in:
Used in:
display only
Used in: , , , , ,
PeerSpaceExchange reports what the space exchange with a LAN peer said — a fact, not a verdict: whether the peer holds this account's tech space and how many spaces it shares. exchanged=false means no answer is known (the peer was dropped from the peer store).
Used in:
NOT monotone: the phase is derived from the run's current condition and moves back when that condition regresses (losing the last node connection mid-fetch goes FetchingAccount -> Connecting; the WaitingForNetwork overlay returns to the phase it interrupted). Clients must render the phase last received rather than dropping backward transitions. Only Done and Failed are terminal. Phases may be skipped (a warm start never enters FetchingAccount); clients must accept any forward jump.
Used in: ,
calm, auto-retrying resting state; not an error screen
account-level fatal; AccountSelect itself failed
NotStarted is the idle snapshot's phase: no recovery run has begun in this process (Snapshot.runId is empty). A new number on purpose: the zero value would read as LookingForPeers before anything happens.
Used in:
set for WaitingForNetwork and Failed
Folded state. Served by Rpc.Account.RecoveryState and pushed once to each new session. The RPC is total: before any run it returns the idle snapshot (runId empty, phase NotStarted) rather than an error.
Used in:
empty: no run has begun, ignore the rest
account-level only
meaningful once done; see Finished
last failed pull; cleared at AccountReady
Used in:
a space exchange answered; the two fields below apply
Used in:
Used in:
Used in: ,
Loaded = the space controller published LocalStatusOk: mandatory objects fetched, tree sync started. Object-level progress after that is on Event.Space.SyncStatus.Update.
Used in: ,
Removed: the space left this run (deleted or removed while recovering); drop it from the list, it is excluded from counters
Stalled: the run settled around this space but it never published a load result. Not terminal — the load may still complete, and the state will change again if it does — so Finished does not fire while a space is stalled. Render it as a determinate stall with a retry ("79 of 80 loaded, 1 stalled"), never as ongoing progress.
Used in:
pull attempts, a level
Used in:
Used in:
random per run; a change means "new run, reset"
monotonic within runId, starts at 1; gap => re-pull
unix ms
sent only to a newly attached session: snapshot-on-subscribe
* Message, that will be sent to the front on each account found after an AccountRecoverRequest
Used in:
Number of an account in an all found accounts list
An Account, that has been found for the mnemonic
Used in:
(message has no fields)
Event to show internal blocks on a client. Example Scenarios A. Block Creation 1. Block A have been created on a client C1 2. Client C2 receives Event.Block.Add(Block A), Event.Block.Update(Page.children) B. Partial block load 1. Client C1 opens Page1, that contains, for example, 133 blocks. 2. M -> F: ShowFullScreen(Root, blocks1-50) 3. M -> F: Block.Add(blocks51-100) 3. M -> F: Block.Add(blocks101-133)
Used in:
id -> block
(message has no fields)
Used in:
dataview block's id
Used in:
dataview block's id
Used in:
dataview block's id
Used in:
dataview block's id
relation key to remove
sent when the dataview relation has been changed or added
Used in:
dataview block's id
relation key to update
Used in:
dataview block's id
relation key to remove
sent when the dataview relation has been changed or added
Used in:
dataview block's id
relation id to update
Used in:
Used in:
not used
Used in:
dataview block's id
Used in:
dataview block's id
Used in:
dataview block's id
view id to remove
Used in:
dataview block's id
view ids in new order
sent when the view have been changed or added
Used in:
dataview block's id
view id, client should double check this to make sure client
doesn't switch the active view in the middle
Used in:
Used in:
Relation used for cover in gallery
Hide icon near name
Gallery card size
Image fits container
Group view by this relationKey
Enable backgrounds in groups
Limit of objects shown in widget
Id of template object set default for the view
Default object type that is chosen for new object created
within the view
Wrap content in view
List view size setting
Alternate row background colors in grid view
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
* Middleware to front end event message, that will be sent on one of this scenarios: Precondition: user A opened a block 1. User A drops a set of files/pictures/videos 2. User A creates a MediaBlock and drops a single media, that corresponds to its type.
Used in:
if empty => create new blocks
filepaths to the files
(message has no fields)
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
(message has no fields)
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
(message has no fields)
Used in:
Used in:
Used in:
Used in:
Used in:
total number of non-deleted messages (includes replies)
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
(message has no fields)
ProfileCreated is emitted whenever the middleware writes a snapshot archive on its own (e.g. the memory-growth detector), so clients can surface it or queue the archive for upload without polling the profiles directory. Archives produced as a result of a client RPC (DebugRunProfiler) are NOT re-announced via this event — the RPC response already carries the path.
Used in:
reason is a short, stable, UPPER_SNAKE_CASE label describing why the middleware produced this report. It is NOT the DebugRunProfiler Reason enum — values come from the internal call sites: - "MEMORY_GROWTH" : the desktop memory-growth detector tripped - "LONG_RPC" : an RPC exceeded the long-execution threshold - "DB_CORRUPTION" : an anystore/spacestore database failed to open More reasons may be added over time; clients should forward unknown values to Sentry as-is.
jsonInfo is JSON-encoded context produced by the middleware (reason- specific keys like "sysMemory", "method", "durationMs", "db", "code"). Clients forward it verbatim to Sentry as the event context.
path is the absolute path to the snapshot archive on disk; empty when the reason is event-only (e.g. DB_CORRUPTION) and no artifact was produced.
full is true when the archive carries a timed CPU profile + trace in addition to heap and goroutines. False for fast snapshots and for event-only reports.
(message has no fields)
Used in:
Used in:
Used in:
Used in:
(message has no fields)
Used in:
id of the import report page listing per-object issues; empty when the run was clean (importv2)
number of issues recorded during the run (importv2)
Statistic is the structured progress surface of one importv2 run: per-phase counters — deliberately NO blended overall percentage (fetching is rate-limit-bound at ~1.5 items/s, creating runs at persist speed: any blended bar crawls for an hour and then leaps) — plus the three-state running/throttled/retrying model: rate limiting is normal operation, not an error. The same message is served by ObjectImportRunStatus/ObjectImportRunList for runs with no live engine.
Used in:
the durable run id; stable across restarts
correlates with the legacy progress process
unix ms; clients show elapsed without their own clock
false while the total is indeterminate (a cursor-chained scan has no total until it ends): render a count-up, never a fake bar
pages and files are SEPARATE counters: 500 small files and one huge one behave nothing alike
files only; 0 = unknown
Throttled: when the rate-limit window reopens
Retrying: attempt N...
...of M
Error only
recent-window rate, per phase
0 = unknown; honest computation only
for phrasing "stop and remove the N objects created"
closing now loses nothing (resume exists for the current phase)
live issue counts — abort a bad import at minute 20, not minute 110
"Fetching: Q3 Planning" — the strongest not-stuck signal. USER CONTENT: displayable, never loggable.
Used in:
passes 1-2: nothing has entered the space yet
pass 3 onward: cancel deletes what was created
Used in:
Used in:
expected and calm; carries resumesInMs
transient failure under backoff
something is actually wrong
(message has no fields)
Used in:
Used in:
(message has no fields)
Used in:
freshness, last successful fetch, last error and revision of the products
Used in:
freshness, last successful fetch, last error and revision of the status
Used in: , ,
deprecated, source is no longer used
deprecated
deprecated
received to update per-message read status (if needed to
highlight the unread messages in the UI)
received to update per-message mention read status (if needed
to highlight the unread mentions in the UI)
received whenever the total number of non-deleted messages in
in case new unread messages received or chat state changed
(message has no fields)
Used in:
Used in:
(message has no fields)
Used in:
Used in:
Used in:
orphan ids (objects at any level + files at level >= 2) created within contextId
the object that was archived / deleted / had a link removed
Used in:
Used in:
(message has no fields)
Amend (i.e. add a new key-value pair or update an existing key-value pair) existing state
Used in:
context objectId
slice of changed key-values
Used in:
should not be null
Overwrite current state
Used in:
context objectId
can not be a partial state. Should replace client details
state
Unset existing detail keys
Used in:
context objectId
(message has no fields)
Used in:
context objectId
Used in:
context objectId
Used in:
notifies that objects were removed
(message has no fields)
Used in:
(message has no fields)
Adds new document to subscriptions
Used in:
object id
id of previous doc in order, empty means first
subscription id
Used in:
total available records
how many records available after
how many records available before
subscription id
Used in:
Indicates new position of document
Used in:
object id
id of previous doc in order, empty means first
subscription id
Removes document from subscription
Used in:
object id
subscription id
(message has no fields)
Used in:
only for ios for now, fallback to NotPossible if not
Used in:
(message has no fields)
Used in:
Used in:
(message has no fields)
Used in:
Used in:
Used in:
(message has no fields)
Message is one decrypted, signature-verified pub/sub message received on a topic matching at least one active Rpc.Pubsub.Subscribe subscription. The space is carried by Event.Message.spaceId. Delivery is ephemeral, at-most-once: messages published while not subscribed are never seen.
Used in:
topic is the concrete '/'-separated topic the message was published to
payload is the application payload, decrypted with the space read key
identity is the signature-verified account id of the sender; a client also receives its own published messages back (local echo)
subIds are the local subscription ids whose pattern matched the topic
(message has no fields)
Used in:
Used in:
Used in:
(message has no fields)
Used in:
(message has no fields)
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in: ,
(message has no fields)
(message has no fields)
* Middleware to front end event message, that will be sent in this scenario: Precondition: user A opened a block 1. User B opens the same block 2. User A receives a message about p.1
Used in:
Account of the user, that opened a block
* Middleware to front end event message, that will be sent in this scenario: Precondition: user A and user B opened the same block 1. User B closes the block 2. User A receives a message about p.1
Used in:
Account of the user, that left the block
* Middleware to front end event message, that will be sent in this scenario: Precondition: user A and user B opened the same block 1. User B selects some inner blocks 2. User A receives a message about p.1
Used in:
Account of the user, that selected blocks
Ids of selected blocks.
* Middleware to front end event message, that will be sent in this scenario: Precondition: user A and user B opened the same block 1. User B sets cursor or selects a text region into a text block 2. User A receives a message about p.1
Used in:
Account of the user, that selected a text
Id of the text block, that have a selection
Range of the selection
Used in:
key path; example: [user, email]
modify op: set, unset, inc, etc.
json value; example: '"new@email.com"'
(message has no fields)
Used in: , ,
Used in:
(message has no fields)
Used in:
(message has no fields)
Used in:
(message has no fields)
Used in:
(message has no fields)
Used in:
(message has no fields)
Used in:
Used in:
(message has no fields)
Used in:
Used in:
aka homepage
deprecated
Used in:
Used in: