#[non_exhaustive]pub struct Session {
pub capabilities: HashMap<String, Value>,
pub accounts: HashMap<String, AccountInfo>,
pub primary_accounts: HashMap<String, String>,
pub username: String,
pub api_url: String,
pub download_url: String,
pub upload_url: String,
pub event_source_url: String,
pub state: State,
}Expand description
JMAP Session object returned by GET /.well-known/jmap (RFC 8620 §2).
Contains only the base RFC 8620 fields. Extension-specific fields
(e.g. JMAP Chat ownerUserId) are surfaced by extension crates that
parse the capabilities and accounts maps.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.capabilities: HashMap<String, Value>Map of capability URI → capability object (RFC 8620 §2).
Values are kept as raw JSON so callers can extract extension-specific capability objects without this crate knowing their schema.
accounts: HashMap<String, AccountInfo>Map of account ID → AccountInfo (RFC 8620 §2).
primary_accounts: HashMap<String, String>Map of capability URI → primary account ID (RFC 8620 §2).
username: StringUsername associated with the current credentials (RFC 8620 §2).
api_url: StringURL for JMAP API POST requests (RFC 8620 §2).
download_url: StringURL template for blob downloads (RFC 8620 §2).
URI Template (level 1) containing variables accountId, blobId,
type, and name.
upload_url: StringURL template for blob uploads (RFC 8620 §2).
URI Template (level 1) containing variable accountId.
event_source_url: StringURL template for SSE push event stream (RFC 8620 §2, §7.3).
URI Template (level 1) containing variables types, closeafter,
and ping.
state: StateOpaque session state token (RFC 8620 §2).
Changes whenever any session property changes. Returned in every API
response as sessionState; clients compare to detect staleness.
Implementations§
Source§impl Session
impl Session
Sourcepub fn primary_account_id(&self, capability: &str) -> Option<&str>
pub fn primary_account_id(&self, capability: &str) -> Option<&str>
Returns the primary account ID for the given capability URI, if set.
Example: session.primary_account_id("urn:ietf:params:jmap:mail")
Sourcepub fn websocket_capability(
&self,
) -> Result<Option<WebSocketCapability>, ClientError>
pub fn websocket_capability( &self, ) -> Result<Option<WebSocketCapability>, ClientError>
Returns the parsed WebSocketCapability for the JMAP WebSocket
transport, if advertised (RFC 8887).
Ok(None)— server does not advertise JMAP WebSocket support.Ok(Some(...))— WebSocket is supported; useresult.urlto connect.Err— capability key is present but the value is malformed.