No description available.
Parameters
The explicit set of block ids to subscribe to. The server delivers ops only for these blocks — it does not walk children, registers, or any other ref relation. Clients that want a tree should subscribe to the root, read child ids from its data, then add those to the subscription.
The server-assigned sequence number to resume from.
Errors
InvalidAuth
Invalid auth credentials on the WebSocket upgrade.
View raw schema
{
"errors": [
{
"description": "Invalid auth credentials on the WebSocket upgrade.",
"name": "InvalidAuth"
}
],
"message": {
"schema": {
"refs": [
"#op",
"#heartbeat",
"#error"
],
"type": "union"
}
},
"parameters": {
"properties": {
"blockIds": {
"description": "The explicit set of block ids to subscribe to. The server delivers ops only for these blocks — it does not walk children, registers, or any other ref relation. Clients that want a tree should subscribe to the root, read child ids from its data, then add those to the subscription.",
"items": {
"format": "at-uri",
"type": "string"
},
"type": "array"
},
"cursor": {
"description": "The server-assigned sequence number to resume from.",
"type": "integer"
}
},
"type": "params"
},
"type": "subscription"
}
Server→client. Non-fatal error report. The server closes the WebSocket on fatal errors instead of sending this frame.
For errors triggered by a specific `#opSubmit` (e.g. `AuthorMismatch`, `Forbidden`, malformed op), `project` and `opId` are both set so the client can correlate the rejection to the submitted op. For subscribe-level errors (e.g. `UnknownProject`, project-level `Forbidden`), `project` is set and `opId` is omitted. Connection-level errors omit both.
Properties
Stable machine-readable code. Implementations should treat unknown codes as opaque.
Known values: Forbidden, Malformed
The server-assigned sequence number at the time of the error.
Human-readable description; not stable across server versions.
View raw schema
{
"description": "Server→client. Non-fatal error report. The server closes the WebSocket on fatal errors instead of sending this frame.\n\nFor errors triggered by a specific `#opSubmit` (e.g. `AuthorMismatch`, `Forbidden`, malformed op), `project` and `opId` are both set so the client can correlate the rejection to the submitted op. For subscribe-level errors (e.g. `UnknownProject`, project-level `Forbidden`), `project` is set and `opId` is omitted. Connection-level errors omit both.",
"properties": {
"code": {
"description": "Stable machine-readable code. Implementations should treat unknown codes as opaque.",
"knownValues": [
"Forbidden",
"Malformed"
],
"type": "string"
},
"cursor": {
"description": "The server-assigned sequence number at the time of the error.",
"type": "integer"
},
"message": {
"description": "Human-readable description; not stable across server versions.",
"type": "string"
}
},
"required": [
"code",
"cursor"
],
"type": "object"
}
Server→client. Liveness ping for one active subscription; carries the latest seq at the time of emission so clients can detect a stuck cursor when no ops are flowing.
Properties
Latest seq the server has assigned.
ISO 8601 instant the heartbeat was emitted.
View raw schema
{
"description": "Server→client. Liveness ping for one active subscription; carries the latest seq at the time of emission so clients can detect a stuck cursor when no ops are flowing.",
"properties": {
"cursor": {
"description": "Latest seq the server has assigned.",
"type": "integer"
},
"ts": {
"description": "ISO 8601 instant the heartbeat was emitted.",
"format": "datetime",
"type": "string"
}
},
"required": [
"cursor",
"ts"
],
"type": "object"
}
Server→client. One CRDT op was just added
Properties
The block id of the block that the op was applied to
server assigned sequence number for the op
The did of the editor that applied the op
View raw schema
{
"description": "Server→client. One CRDT op was just added",
"properties": {
"blockId": {
"description": "The block id of the block that the op was applied to",
"format": "at-uri",
"type": "string"
},
"cursor": {
"description": "server assigned sequence number for the op",
"type": "integer"
},
"editor": {
"description": "The did of the editor that applied the op",
"format": "did",
"type": "string"
},
"op": {
"closed": true,
"description": "the op",
"refs": [
"page.corvus.block#create",
"page.corvus.block#insert",
"page.corvus.block#delete",
"page.corvus.block#set",
"page.corvus.block#increment",
"page.corvus.block#add",
"page.corvus.block#remove"
],
"type": "union"
}
},
"required": [
"cursor",
"blockId",
"op"
],
"type": "object"
}