JMAP snooze
The Nixt Server JMAP extension for snoozing a message until a time, when it comes back unread on every device.
This page defines a small JMAP extension. Its capability is named by this page’s address:
https://nixtoffice.com/docs/server/jmap-snooze
With it, an app puts a message out of the way until a time: “remind me of this on Monday at 9”. At that time the server brings it back, so it comes back on every device the person uses, whether or not the app that snoozed it is open. Any JMAP client may use it.
The capability
The session lists the capability, with an empty object, in capabilities and in the accountCapabilities of the person’s own account:
"https://nixtoffice.com/docs/server/jmap-snooze": {}
A request that uses the property below names the capability in using, beside urn:ietf:params:jmap:core and urn:ietf:params:jmap:mail.
The snoozed property
The extension adds one property to Email:
| Property | Type | Meaning |
|---|---|---|
snoozed | Object or null | {"until": UTCDate} while the message is snoozed; null when it is not. |
Email/get answers snoozed only when it is named in properties.
Snoozing a message
Set snoozed with Email/set:
["Email/set", {
"accountId": "1-1",
"update": {
"42": {"snoozed": {"until": "2026-10-05T07:00:00Z"}}
}
}, "c0"]
The message moves to the person’s Snoozed mailbox, which is made the first time it is needed and has the role snoozed. The server remembers the mailboxes it was in. A message may be snoozed up to 30 days ahead. Setting snoozed again on a snoozed message changes its time.
At its time, the server moves the message back to the mailboxes it was in, or to the Inbox if those are gone, and marks it unread. Apps see the move as any other change, through Email/changes and push.
Set snoozed to null to bring a message back now, unread, in the same way.
A message moved out of Snoozed by the person, in any app, is no longer snoozed. It stays where it was put.
Over IMAP
IMAP apps see Snoozed as an ordinary folder, marked \Snoozed (RFC 9979) in LIST. Snoozing and waking are moves, so every IMAP app shows the message where it is. An IMAP app that moves a message into Snoozed gives it no time, so it stays until it is moved out.
Errors
Email/set refuses a snoozed value it cannot use with invalidProperties, naming snoozed:
| Description | Cause |
|---|---|
snoozed is {"until": a UTCDate} or null | Anything else. |
a snooze ends in the future | A time already past. |
a message is snoozed at most 30 days | A time more than 30 days ahead. |
Something unclear or out of date on this page? Tell us.