Information
- Terms of Service
- License: MIT
- OpenAPI version:
3.1.0
Astro Notes: end-to-end encrypted, Markdown-only note service. Note content and metadata are opaque ciphertext to the server. Binary values cross the wire as standard base64.
Three WebSocket upgrades sit beside the HTTP operations. OpenAPI cannot describe them, so they are specified here.
GET /v1/notes/{id}/live?ticket=… joins a note’s relay.GET /v1/changes/live?ticket=… opens the caller’s change feed.GET /v1/device-links/{id}/events watches one device-link handshake.A ticket is single-use and comes from the matching ticket operation. An upgrade is refused with 401 when its ticket is invalid or expired, with 403 when a browser sends another site’s Origin, and the handshake watch with 404 when the handshake is unknown or expired.
Binary frames exist on the note relay only. The server reads none of their content: each is ciphertext, relayed unchanged to the other connections in the room, and refused above 1048576 bytes.
Text frames are JSON control messages, told apart by t.
On the note relay the server sends {"t":"role","editor":true} (whether this connection holds an editor seat), {"t":"slot"} (a seat was freed) and {"t":"last","value":true} (whether this connection is alone in the room). A client sends {"t":"claim"} to take a freed seat.
On the change feed the server sends {"t":"changed"} (a note moved: pull /v1/changes) and {"t":"account"} (the account moved: read it again). To Orbit members it also carries the command bridge: {"t":"bridge","m":BridgeMessage} (one transmission), {"t":"bridge-gap"} (this socket fell behind: fetch the page again), {"t":"bridge-seal","user":uuid,"publicKey":base64,"epochId":base64} (sent to one nominated member: seal the key to that user) and {"t":"bridge-keys"} (try your keys again). A client sends {"t":"bridge-airlock"} while it holds no usable key, and {"t":"bridge-aboard"} the moment one opens.
The handshake watch sends {"t":"link"} (the handshake advanced: read it again) and nothing else.
The server pings every 30 seconds and closes a connection silent for 75 seconds. It closes with 1000 normally, and with 4001 when a reader fell too far behind: reconnect and sync again.
How the service is built, every problem type, and this reference
Opaque session token from login/register/recover.
Security scheme type: http