JSON Meta Application Protocol (JMAP)

Created

  • 2019-03-28

Last Updated

  • 2025-05-02

Available Formats


JMAP Capabilities

Expert(s)

  • Neil Jenkins, Chris Newman, Arnt Gulbrandsen, Joris Baum

Reference

  • RFC 8620: The JSON Meta Application Protocol (JMAP)

Available Formats

Range Registration Procedures
intended use field is “common" or “placeholder” Specification Required
all other values Expert Review
Capability Name Intended Use Change Controller Security and Privacy Considerations Reference
urn:ietf:params:jmap:core common IETF RFC 8620, Section 8 RFC 8620, Section 2
urn:ietf:params:jmap:error: placeholder IETF RFC 8620, Section 8 RFC 8620, Section 9.5
urn:ietf:params:jmap:mail common IETF RFC 8621, Section 9 RFC 8621
urn:ietf:params:jmap:mdn common IETF RFC 9007, Section 5 RFC 9007
urn:ietf:params:jmap:smimeverify common IETF RFC 9219, Section 6 RFC 9219
urn:ietf:params:jmap:submission common IETF RFC 8621, Section 9 RFC 8621
urn:ietf:params:jmap:vacationresponse common IETF RFC 8621, Section 9 RFC 8621
urn:ietf:params:jmap:blob common IETF RFC 9404, Section 5 RFC 9404
urn:ietf:params:jmap:quota common IETF RFC 9425, Section 7 RFC 9425
urn:ietf:params:jmap:sieve common IETF RFC 9661, Section 5 RFC 9661
urn:ietf:params:jmap:principals common IETF RFC 9670, Section 6 RFC 9670
urn:ietf:params:jmap:principals:owner common IETF RFC 9670, Section 6 RFC 9670
urn:ietf:params:jmap:contacts common IETF RFC 9610, Section 6 RFC 9610
urn:ietf:params:jmap:calendars common IETF RFC-ietf-jmap-calendars-22, Section 1.5.1 RFC-ietf-jmap-calendars-22
urn:ietf:params:jmap:principals:availability common IETF RFC-ietf-jmap-calendars-22, Section 1.5.2 RFC-ietf-jmap-calendars-22
urn:ietf:params:jmap:webpush-vapid common IETF RFC 9749, Section 6 RFC 9749

JMAP Error Codes

Registration Procedure(s)

  • Expert Review

Expert(s)

  • Neil Jenkins, Chris Newman, Arnt Gulbrandsen, Joris Baum

Reference

  • RFC 8620: The JSON Meta Application Protocol (JMAP)

Available Formats

JMAP Error Code Intended Use Change Controller Description Reference
accountNotFound common IETF The accountId does not correspond to a valid account. RFC 8620, Section 3.6.2
accountNotSupportedByMethod common IETF The accountId given corresponds to a valid account, but the account does not support this method or data type. RFC 8620, Section 3.6.2
accountReadOnly common IETF This method modifies state, but the account is read-only (as returned on the corresponding Account object in the JMAP Session resource). RFC 8620, Section 3.6.2
anchorNotFound common IETF An anchor argument was supplied, but it cannot be found in the results of the query. RFC 8620, Section 5.5
alreadyExists common IETF The server forbids duplicates, and the record already exists in the target account. An existingId property of type Id MUST be included on the SetError object with the id of the existing record. RFC 8620, Section 5.4
cannotCalculateChanges common IETF The server cannot calculate the changes from the state string given by the client. RFC 8620, Section 5.2, 5.6
forbidden common IETF The action would violate an ACL or other permissions policy. RFC 8620, Section 3.6.2, 5.3, 7.2.1
fromAccountNotFound common IETF The fromAccountId does not correspond to a valid account. RFC 8620, Section 5.4, 6.3
fromAccountNotSupportedByMethod common IETF The fromAccountId given corresponds to a valid account, but the account does not support this data type. RFC 8620, Section 5.4
invalidArguments common IETF One of the arguments is of the wrong type or otherwise invalid, or a required argument is missing. RFC 8620, Section 3.6.2
invalidPatch common IETF The PatchObject given to update the record was not a valid patch. RFC 8620, Section 5.3
invalidProperties common IETF The record given is invalid. RFC 8620, Section 5.3
notFound common IETF The id given cannot be found. RFC 8620, Section 5.3
notJSON common IETF The content type of the request was not application/json, or the request did not parse as I-JSON. RFC 8620, Section 3.6.1
notRequest common IETF The request parsed as JSON but did not match the type signature of the Request object. RFC 8620, Section 3.6.1
overQuota common IETF The create would exceed a server-defined limit on the number or total size of objects of this type. RFC 8620, Section 5.3
rateLimit common IETF Too many objects of this type have been created recently, and a server-defined rate limit has been reached. It may work if tried again later. RFC 8620, Section 5.3
requestTooLarge common IETF The total number of actions exceeds the maximum number the server is willing to process in a single method call. RFC 8620, Section 5.1, 5.3
invalidResultReference common IETF The method used a result reference for one of its arguments, but this failed to resolve. RFC 8620, Section 3.6.2
serverFail common IETF An unexpected or unknown error occurred during the processing of the call. The method call made no changes to the server's state. RFC 8620, Section 3.6.2
serverPartialFail limited IETF Some, but not all, expected changes described by the method occurred. The client MUST resynchronise impacted data to determine the server state. RFC 8620, Section 3.6.2
serverUnavailable common IETF Some internal server resource was temporarily unavailable. Attempting the same operation later (perhaps after a backoff with a random factor) may succeed. RFC 8620, Section 3.6.2
singleton common IETF This is a singleton type, so you cannot create another one or destroy the existing one. RFC 8620, Section 5.3
stateMismatch common IETF An ifInState argument was supplied, and it does not match the current state. RFC 8620, Section 5.3
tooLarge common IETF The action would result in an object that exceeds a server-defined limit for the maximum size of a single object of this type. RFC 8620, Section 5.3
tooManyChanges common IETF There are more changes than the client's maxChanges argument. RFC 8620, Section 5.6
unknownCapability common IETF The client included a capability in the "using" property of the request that the server does not support. RFC 8620, Section 3.6.1
unknownMethod common IETF The server does not recognise this method name. RFC 8620, Section 3.6.2
unsupportedFilter common IETF The filter is syntactically valid, but the server cannot process it. RFC 8620, Section 5.5
unsupportedSort common IETF The sort is syntactically valid but includes a property the server does not support sorting on or a collation method it does not recognise. RFC 8620, Section 5.5
willDestroy common IETF The client requested an object be both updated and destroyed in the same /set request, and the server has decided to therefore ignore the update. RFC 8620, Section 5.3
mailboxHasChild common IETF The Mailbox still has at least one child Mailbox. The client MUST remove these before it can delete the parent Mailbox. RFC 8621, Section 2.5
mailboxHasEmail common IETF The Mailbox has at least one message assigned to it, and the onDestroyRemoveEmails argument was false. RFC 8621, Section 2.5
blobNotFound common IETF At least one blob id referenced in the object doesn't exist. RFC 8621, Section 4.6
tooManyKeywords common IETF The change to the Email's keywords would exceed a server-defined maximum. RFC 8621, Section 4.6
tooManyMailboxes common IETF The change to the set of Mailboxes that this Email is in would exceed a server-defined maximum. RFC 8621, Section 4.6
invalidEmail common IETF The Email to be sent is invalid in some way. RFC 8621, Section 7.5
tooManyRecipients common IETF The envelope RFC-ietf-emailcore-rfc5321bis-43 (supplied or generated) has more recipients than the server allows. RFC 8621, Section 7.5
noRecipients common IETF The envelope RFC-ietf-emailcore-rfc5321bis-43 (supplied or generated) does not have any rcptTo email addresses. RFC 8621, Section 7.5
invalidRecipients common IETF The rcptTo property of the envelope RFC-ietf-emailcore-rfc5321bis-43 (supplied or generated) contains at least one rcptTo value that is not a valid email address for sending to. RFC 8621, Section 7.5
forbiddenMailFrom common IETF The server does not permit the user to send a message with this envelope From address RFC-ietf-emailcore-rfc5321bis-43. RFC 8621, Section 7.5
forbiddenFrom common IETF The server does not permit the user to send a message with the From header field RFC-ietf-emailcore-rfc5322bis-12 of the message to be sent. RFC 8621, Section 6.3, 7.5
forbiddenToSend common IETF The user does not have permission to send at all right now. RFC 8621, Section 7.5
mdnAlreadySent common IETF The message has the "$mdnsent" keyword already set. The client MUST NOT try again to send an MDN for this message. RFC 9007, Section 2.1
unknownDataType common IETF The server does not recognise this data type, or the capability to enable it is not present in the current Request Object. RFC 9404
invalidSieve common IETF The SieveScript violates the Sieve grammar RFC 5228, and/or one or more extensions mentioned in the script's "require" statement(s) are not supported by the Sieve interpreter. RFC 9661, Section 2.4
sieveIsActive common IETF The client tried to destroy the active SieveScript. RFC 9661, Section 2.4
addressBookHasContents common IETF The AddressBook has at least one ContactCard assigned to it, and the "onDestroyRemoveContents" argument was false. RFC 9610, Section 2.3
calendarHasEvent common IETF The Calendar has at least one CalendarEvent assigned to it, and the "onDestroyRemoveEvents" argument was false. RFC-ietf-jmap-calendars-22, Section 4.3
noSupportedScheduleMethods common IETF The server was requested to send scheduling messages, but does not support any of the methods available for at least one of the recipients. RFC-ietf-jmap-calendars-22, Section 5.8
cannotCalculateOccurrences common IETF The server cannot expand a recurrence required to return the results for the requested query. RFC-ietf-jmap-calendars-22, Section 5.10

JMAP Data Types

Registration Procedure(s)

  • Specification Required

Expert(s)

  • Ken Murchison, Neil Jenkins, Arnt Gulbrandsen, Joris Baum

Reference

  • RFC 9404: JSON Meta Application Protocol (JMAP) Blob Management Extension

Available Formats

Type Name Can Reference Blobs Can Use for State Change Capability Reference
Core No No urn:ietf:params:jmap:core RFC 8620
PushSubscription No No urn:ietf:params:jmap:core RFC 8620
Mailbox Yes Yes urn:ietf:params:jmap:mail RFC 8621
Thread Yes Yes urn:ietf:params:jmap:mail RFC 8621
Email Yes Yes urn:ietf:params:jmap:mail RFC 8621
EmailDelivery No Yes urn:ietf:params:jmap:mail RFC 8621
SearchSnippet No No urn:ietf:params:jmap:mail RFC 8621
Identity No Yes urn:ietf:params:jmap:submission RFC 8621
EmailSubmission No Yes urn:ietf:params:jmap:submission RFC 8621
VacationResponse No Yes urn:ietf:params:jmap:vacationresponse RFC 8621
MDN No No urn:ietf:params:jmap:mdn RFC 9007
Quota No Yes urn:ietf:params:jmap:quota RFC 9425
SieveScript Yes Yes urn:ietf:params:jmap:sieve RFC 9661
Principal No Yes urn:ietf:params:jmap:principals RFC 9670
ShareNotification No Yes urn:ietf:params:jmap:principals RFC 9670
AddressBook No Yes urn:ietf:params:jmap:contacts RFC 9610
ContactCard Yes Yes urn:ietf:params:jmap:contacts RFC 9610
Calendar No Yes urn:ietf:params:jmap:calendars RFC-ietf-jmap-calendars-22
CalendarEvent Yes Yes urn:ietf:params:jmap:calendars RFC-ietf-jmap-calendars-22
CalendarEventNotification No Yes urn:ietf:params:jmap:calendars RFC-ietf-jmap-calendars-22
ParticipantIdentity No Yes urn:ietf:params:jmap:calendars RFC-ietf-jmap-calendars-22