My agentic slop goes here. Not intended for anyone else!
1# JMAP Query Examples for Personal Email Management 2 3This directory contains 10 comprehensive JMAP query examples that demonstrate the full range of the JMAP protocol for personal email management. Each example provides realistic, practical queries that users would actually perform on their email, along with detailed explanations of the JMAP concepts and protocol features involved. 4 5## Overview of Query Examples 6 7### [01. Last Week's Unread Email](01-recent-unread-mail.md) 8**Use Case**: Retrieve all unread emails from the past 7 days 9**JMAP Concepts**: Email/query filtering, date ranges, keyword negation, result references 10**Complexity**: Beginner - Basic filtering and sorting patterns 11 12### [02. Apple Mail Orange Flagged Messages](02-apple-mail-orange-flagged.md) 13**Use Case**: Find the oldest message marked with Apple Mail's orange flag 14**JMAP Concepts**: Vendor-specific keywords, ascending sort, Apple Mail extensions 15**Complexity**: Intermediate - Vendor keyword handling and edge cases 16 17### [03. Large Emails with Attachments from This Month](03-large-attachments-recent.md) 18**Use Case**: Find storage-heavy emails with attachments larger than 1MB 19**JMAP Concepts**: Size filtering, attachment detection, MIME structure analysis 20**Complexity**: Intermediate - Complex filtering and body structure handling 21 22### [04. Complete Conversation Thread](04-conversation-thread.md) 23**Use Case**: Retrieve all emails in a specific conversation thread 24**JMAP Concepts**: Thread/get, email threading, chronological ordering, full content 25**Complexity**: Intermediate - Thread operations and conversation reconstruction 26 27### [05. Draft Emails Needing Attention](05-draft-attention-needed.md) 28**Use Case**: Find forgotten draft emails that need completion 29**JMAP Concepts**: Mailbox role discovery, draft management, content analysis 30**Complexity**: Advanced - Multi-step queries and mailbox role handling 31 32### [06. Recent Emails Sent to Company Domain](06-sent-company-domain.md) 33**Use Case**: Track outgoing emails to colleagues within company domain 34**JMAP Concepts**: EmailSubmission/query, domain filtering, delivery tracking 35**Complexity**: Advanced - Submission tracking and envelope analysis 36 37### [07. VIP Contacts Marked Important](07-vip-important-contacts.md) 38**Use Case**: Find emails from VIP contacts marked as important 39**JMAP Concepts**: Complex OR/AND filtering, contact-based queries, priority management 40**Complexity**: Advanced - Multi-level boolean logic and priority systems 41 42### [08. Current Vacation Response Status](08-vacation-response-status.md) 43**Use Case**: Check out-of-office configuration and auto-reply activity 44**JMAP Concepts**: VacationResponse singleton, auto-reply tracking, date validation 45**Complexity**: Advanced - Singleton objects and auto-reply correlation 46 47### [09. Identity Management and Configuration](09-identity-management-setup.md) 48**Use Case**: Review all sending identities and their recent usage 49**JMAP Concepts**: Identity/get, signature management, identity-submission correlation 50**Complexity**: Advanced - Identity workflows and professional communication patterns 51 52### [10. Comprehensive Multi-Method Dashboard](10-comprehensive-multi-method.md) 53**Use Case**: Complete email dashboard with statistics, recent activity, and system status 54**JMAP Concepts**: Complex result references, batch operations, dashboard aggregation 55**Complexity**: Expert - Multi-method coordination and advanced result reference chains 56 57## JMAP Protocol Coverage 58 59These examples collectively demonstrate: 60 61### Core JMAP Methods (RFC 8620) 62-**Core/echo** - Basic connectivity testing 63-**Email/get** - Object retrieval with property selection 64-**Email/query** - Searching and filtering with complex conditions 65-**Thread/get** - Conversation thread retrieval 66-**Mailbox/get** - Folder information and statistics 67-**Mailbox/query** - Finding mailboxes by role and properties 68 69### Email Extensions (RFC 8621) 70-**EmailSubmission/query** - Tracking sent emails and delivery status 71-**EmailSubmission/get** - Submission details and envelope information 72-**Identity/get** - Sending identity management 73-**VacationResponse/get** - Out-of-office configuration 74 75### Advanced Protocol Features 76-**Result References** - Chaining method results with `#ids` and `resultOf` 77-**Complex Filtering** - Boolean AND/OR logic with nested conditions 78-**Property Selection** - Efficient partial object loading 79-**Sorting and Pagination** - Result ordering and limit handling 80-**Date Range Queries** - Time-based filtering with UTC timestamps 81-**Keyword Management** - Standard and custom keyword handling 82-**Mailbox Roles** - System folder discovery and role-based queries 83-**MIME Structure** - Body part analysis and attachment handling 84-**Batch Operations** - Multiple methods in single requests 85 86## Query Patterns and Techniques 87 88### Filtering Patterns 89- **Date Ranges**: `after`/`before` for time-based queries 90- **Keyword Logic**: `hasKeyword` with boolean values and negation 91- **Size Filtering**: `minSize`/`maxSize` for storage management 92- **Domain Matching**: Wildcard patterns like `*@company.com` 93- **Mailbox Filtering**: `inMailbox` for folder-specific queries 94 95### Sorting Strategies 96- **Chronological**: `receivedAt`/`sentAt` for time-based ordering 97- **Priority**: `size` for storage optimization 98- **Mixed Ordering**: Ascending vs descending based on use case 99 100### Result Reference Techniques 101- **Simple References**: `resultOf` with `path` for ID extraction 102- **Array Extraction**: `path: "/ids"` for query result IDs 103- **Property Extraction**: `path: "/list/*/threadId"` for object properties 104- **Nested References**: Multi-level method dependencies 105 106### Performance Optimization 107- **Property Minimization**: Request only needed properties 108- **Batch Processing**: Multiple methods in single requests 109- **Smart Limits**: Appropriate result set sizes for use cases 110- **Parallel Queries**: Independent operations run simultaneously 111 112## Business Use Cases Covered 113 114### Personal Productivity 115- Inbox management and unread email processing 116- Draft completion and pending communication workflow 117- Priority email identification and VIP management 118- Storage optimization and attachment management 119 120### Professional Communication 121- Identity management for different professional contexts 122- Company domain communication tracking 123- Vacation response configuration and monitoring 124- Meeting and collaboration email management 125 126### System Administration 127- Email system health monitoring 128- Delivery status tracking and troubleshooting 129- Account configuration validation 130- Usage pattern analysis and optimization 131 132## Integration Examples 133 134Each query example includes: 135- **Complete JMAP JSON requests** that can be used directly 136- **Expected response structures** with realistic data 137- **Detailed explanations** of each JMAP concept used 138- **Business logic applications** for real-world scenarios 139- **Advanced variations** for extended functionality 140- **Error handling patterns** for robust implementations 141 142## Getting Started 143 1441. **Beginners**: Start with queries 1-3 for basic JMAP patterns 1452. **Intermediate**: Move to queries 4-6 for complex filtering and threading 1463. **Advanced**: Study queries 7-9 for multi-method coordination 1474. **Experts**: Analyze query 10 for comprehensive dashboard implementation 148 149Each query is self-contained and can be understood independently, but they build upon each other to demonstrate increasingly sophisticated JMAP usage patterns. 150 151## Implementation Notes 152 153These examples are designed for the OCaml JMAP library documented in this repository, but the JSON requests and concepts apply to any JMAP implementation. The queries demonstrate best practices for: 154 155- **Type Safety**: Leveraging OCaml's type system for JMAP objects 156- **Error Handling**: Proper result validation and error propagation 157- **Performance**: Efficient queries that minimize server load 158- **Maintainability**: Clear, documented query structures 159- **RFC Compliance**: Adherence to JMAP specifications (RFC 8620/8621) 160 161## References 162 163- [RFC 8620: The JSON Meta Application Protocol (JMAP)](https://www.rfc-editor.org/rfc/rfc8620.html) 164- [RFC 8621: The JSON Meta Application Protocol (JMAP) for Mail](https://www.rfc-editor.org/rfc/rfc8621.html) 165- [JMAP Method Documentation](../jmap/jmap_methods.mli) 166- [Email Type Definitions](../jmap-email/email.mli)