Same order as the request. An identifier resolves to the inbox with its
latest non-revoked association, or to no inbox. Revocation can reveal an
older active association. Lookup uses normalized (identifier, kind), but
response entries echo original inputs, including duplicates.
Atomic: every envelope is stored or none is. No envelope count limit; the
request is at most 25 MiB, each envelope at most 1 MiB, and there are
at most 1000 distinct topics.
At most one identity update per inbox per request. A repeat of an envelope
already stored on its topic (same MessageHash) is not an error: the stored
meta is returned as success.
Same order as the request, including duplicates. An oversized response
can fail with a size error after commit. Retry exact envelope bytes;
failure to receive a response does not establish rollback.
One result per topic that has an envelope. A topic with no envelope is
absent from results. An oversized response fails with a transport size
error or RESOURCE_EXHAUSTED from an application check; omission never means
the byte budget was exhausted.
Up to limit matches across the queried topics, ascending within each
topic. The order across topics carries no meaning. Client rule: for each
topic that returned rows, set its cursor to that topic’s highest returned
sequence_id; leave every other cursor unchanged; if has_more, query again.
Each stored envelope appears once. An oversized encoded response fails
with a transport size error or RESOURCE_EXHAUSTED from an application check;
results are not silently omitted to fit.
describe how to create a single network
connection.
Implement this trait if your type connects to a single
network channel/connection (like gRPc or HTTP)
The XIP-83 bidirectional subscription: one long-lived stream carrying
group and welcome messages, mutated in place (no reconnect on membership
change) and kept alive with WebSocket-style ping/pong. Native-only —
gRPC-Web transports cannot speak full-duplex, so browsers stay on
XmtpMlsStreams with a client-side watchdog.