Your question
We are qualifying a local macOS integration with the unmodified official Stalwart
0.16.23 arm64 binary. Our application uses public JMAP and DAV interfaces only.
We need a reliable full backup of an account, including empty collections and
collections with identical display names, without reading internal store files.
Observed and source-supported behavior
- Email, Mailbox, SieveScript, ContactCard and CalendarEvent can be enumerated by
paginated query, then read with explicit ids and state checks. We have tested
this against the official binary with getMaxResults=3 and queryMaxResults=2. - AddressBook/get and Calendar/get with null/omitted ids apply get_max_objects
in the pinned source. We did not find corresponding query handlers in its tree. - Our real-binary test with two collections and getMaxResults=2 returns two rows.
The same response shape cannot establish whether further collections exist;
our application therefore refuses to claim a complete inventory at that limit. - Starting changes from initial state
ntakes Query::All over the stored
changelog. The cannotCalculateChanges check for a truncated log excludes
State::Initial. We have not tested log purge in this experiment and do not
claim that this route provides an exhaustive current inventory. - DAV discovery supplies collection URLs and display names. We have not found a
documented, stable mapping from those URLs to the JMAP ids, especially for
empty or homonymous collections. We will not infer ids by decoding URLs.
Pinned primary references (condensed to respect the forum’s new-user link limit):
Source paths in that tag: crates/jmap/src/addressbook/get.rs; crates/jmap/src/calendar/get.rs; crates/jmap/src/changes/get.rs; crates/store/src/query/log.rs; crates/jmap-proto/src/types/state.rs; crates/dav/src/common/propfind.rs.
Questions
- What supported public interface enumerates every current AddressBook and
Calendar id when the account contains more collections than maxObjectsInGet? - Is initial-state changes intended to support full enumeration after history
retention/purge? If so, which invariant guarantees that all surviving
collections appear, and which versions provide it? - Is there a supported DAV property or documented mapping that identifies the
corresponding JMAP collection id, without relying on display names or contents? - Are there relevant fixes or supported extensions in later official releases,
and what version and capability checks should an integration use? - If the intended deployment requires increasing getMaxResults, is a complete
response explicitly distinguishable from a capped one, and what resource
limits should the application enforce?
A useful answer would include the API/extension name, affected versions,
capability detection, empty/shared/homonymous collection behavior, and a small
reproduction or test reference. No patch or custom engine fork is requested.
Proposed acceptance fixture — not yet executed as a whole
Create seven calendars and seven address books, including empty and homonymous
collections; set getMaxResults=3 and restart only the isolated test engine.
Enumerate by the proposed interface, read all returned ids explicitly and verify
properties and relationships against the known creation responses. Repeat after
collection deletion, log retention/purge and a concurrent change, then restore
from the encrypted backup to a separate account. Incomplete or ambiguous results
must be detectable; no silent omission is acceptable.
I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.
on