What this provider can narrow on when reading messages. See MessageRetrievalCapabilities.
Deliberately declares nothing supported. A provider that can push a filter down overrides this and says so; one that has not been updated keeps describing itself accurately instead of promising a filter it silently ignores.
ProtectedProviderReturns the name of this provider for use in error messages. Override in subclasses to provide a more descriptive name.
Convenience gate: true when this provider supports inbound push in ANY form
(subscription-managed or inbound-parse), false otherwise. Lets callers cleanly
short-circuit — if (provider.SupportsPush) { ... } — instead of probing individual
operations.
Derived from GetSubscriptionCapabilities so it stays in lockstep with actual
capability: providers that support push return capabilities and thereby report
SupportsPush === true for free; providers that don't return undefined and report
false. Subclasses normally do NOT override this — override
GetSubscriptionCapabilities instead.
Archives a message. Override in subclasses that support this operation.
Parameters for archiving the message
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Cancels a calendar event organized by the target mailbox. Override in subclasses that support this operation.
Optionalcredentials: ProviderCredentialsBaseCancels an event. An event that is already gone counts as cancelled.
the calendar (required), the event's ID in it, and an optional comment
Optionalcredentials: ProviderCredentialsBaseoptional per-request credentials override
Creates a new calendar event and optionally sends invitations or creates an online meeting link. Override in subclasses that support this operation.
Optionalcredentials: ProviderCredentialsBaseExpo push has no draft concept; creating drafts is not supported.
Optionalcredentials: ExpoPushCredentialsCreates an event in the target calendar. With attendees, the provider sends the invitations.
the calendar (required) and the event
Optionalcredentials: ProviderCredentialsBaseoptional per-request credentials override
Creates a push-notification subscription with the remote messaging service. Override in subclasses that support this operation.
Parameters describing what to watch and where to notify
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Deletes a message. Override in subclasses that support this operation.
Parameters for deleting the message
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Deletes an existing subscription. The caller MUST pass credentials for the same account/app registration used to create the subscription. Implementations should treat "already gone" (e.g. 404) as success - deletion is idempotent from the consumer's perspective. Override in subclasses that support this operation.
Parameters identifying the subscription to delete
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Downloads an attachment from a message. Override in subclasses that support this operation.
Parameters for downloading the attachment
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Suggests optimal meeting times across attendees within a time window. Override in subclasses that support this operation.
Optionalcredentials: ProviderCredentialsBaseExpo push is send-only; forwarding is not supported.
Optionalcredentials: ExpoPushCredentialsReads one event, with each attendee's response.
the calendar (required) and the event's ID in it
Optionalcredentials: ProviderCredentialsBaseoptional per-request credentials override
Reads calendar events for one identifier.
CONCRETE, NOT ABSTRACT, and deliberately so: making it abstract would break every existing provider at compile time for a capability most of them will never have. A provider that supports it overrides this and adds 'GetEvents' to getSupportedOperations(); everything else inherits a refusal that NAMES ITSELF, so a caller learns which provider declined rather than receiving an empty list it cannot distinguish from an empty calendar.
That distinction is the whole reason this returns Success:false rather than {Events: []}.
"This provider cannot look" and "there was nothing in the window" are different facts, and a
caller advancing a watermark must not treat the first as the second.
which calendar, what window, how many
Optionalcredentials: ProviderCredentialsBaseoptional per-request credentials override
Queries free/busy schedule slots for one or more email addresses. Override in subclasses that support this operation.
Optionalcredentials: ProviderCredentialsBaseExpo push is send-only; retrieving messages is not supported.
Optionalcredentials: ExpoPushCredentialsGets a single message by ID. Override in subclasses that support this operation.
Parameters for retrieving the message
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Returns this provider's subscription capabilities, or undefined when subscriptions
are not supported. Consumers use this to schedule renewals and validate change types
generically. Override in subclasses that support subscriptions.
INVARIANT: returning a defined value here REQUIRES the four subscription operations to appear in getSupportedOperations.
SubscriptionCapabilities when supported, otherwise undefined
Push is a real-time, send-only channel — only SendSingleMessage is supported.
Lists attachments on a message. Override in subclasses that support this operation.
Parameters for listing attachments
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Lists folders/mailboxes available in the provider. Override in subclasses that support this operation.
Parameters for listing folders
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Marks message(s) as read or unread. Override in subclasses that support this operation.
Parameters for marking messages
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Moves a message to a different folder. Override in subclasses that support this operation.
Parameters for moving the message
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Parses and validates an inbound push notification. This is a pure operation: no
network calls. It MUST be safe on hostile/garbage input - never throw on malformed
payloads; return Success: false with SuggestedResponseStatus: 400 instead.
When the result carries a ParseNotificationResult.Handshake, the consumer must send exactly that response and process nothing else (endpoint validation). Override in subclasses that support this operation.
Transport-neutral capture of the inbound webhook request
Optionalcredentials: ProviderCredentialsBaseOptional credentials override (for schemes that verify signatures)
Promise
Renews an existing subscription before it expires. The caller MUST pass credentials for the same account/app registration used to create the subscription. Override in subclasses that support this operation.
Parameters identifying the subscription and the new expiration
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Expo push is send-only; replying is not supported.
Optionalcredentials: ExpoPushCredentialsResponds to a calendar invitation (Accept, TentativelyAccept, or Decline). Override in subclasses that support this operation.
Optionalcredentials: ProviderCredentialsBaseSearches messages using a query string. Override in subclasses that support this operation.
Parameters for searching messages
Optionalcredentials: ProviderCredentialsBaseOptional credentials override for this request
Promise
Sends a single push notification via the Expo Push API.
Maps the framework message model onto the Expo payload:
message.To → the recipient Expo push tokenmessage.ProcessedSubject (fallback message.Subject) → titlemessage.ProcessedBody (fallback message.Body) → bodymessage.ContextData.pushData / .data → dataThe processed message to send.
Optionalcredentials: ExpoPushCredentialsOptional per-request credential override. When omitted, the Expo access token (if any) is read from the environment.
The framework's standard MessageResult.
Checks if this provider supports a specific operation.
The operation to check
true if the operation is supported
Reads what changed in a calendar since a sync token, or the whole window when there is none.
the calendar (required), the token from the last sync, and the window for a full sync
Optionalcredentials: ProviderCredentialsBaseoptional per-request credentials override
Updates an existing calendar event. Override in subclasses that support this operation.
Optionalcredentials: ProviderCredentialsBaseChanges the given fields of an event. A changed attendee list replaces the old one.
the calendar (required), the event's ID in it, and the changes
Optionalcredentials: ProviderCredentialsBaseoptional per-request credentials override
Probes whether the configured enterprise credential is authorized to read mail and/or calendar for a specific mailbox (Exchange RBAC / Workspace scope preflight check).
Optionalcredentials: ProviderCredentialsBase
Implementation of the Expo push-notification provider for MemberJunction's Communication framework. Sends mobile push notifications to Expo push tokens via the Expo Push API using a simple HTTPS POST (no SDK dependency).
Remarks
Push notifications are a fire-and-forget, send-only channel. Consequently this provider implements only SendSingleMessage; the mailbox-style operations (
GetMessages,ForwardMessage,ReplyToMessage,CreateDraft) return a "not supported" result, consistent with the base-class contract.