Skip to content

Commit 7406677

Browse files
authored
feat(messages): add support for tracking_options, raw_mime fields and new MessageFields enum values (#279)
# What did you do? Add support for three new Nylas API message features: 1. New MessageFields enum values: - INCLUDE_TRACKING_OPTIONS: Returns message tracking options data - RAW_MIME: Returns Base64url-encoded raw message content 2. New Message model properties: - trackingOptions: TrackingOptions object with opens, thread_replies, links, and label fields - rawMime: String field containing Base64url-encoded message data 3. Enhanced Messages API methods: - Messages.find() now accepts FindMessageQueryParams to specify fields - Added FindMessageQueryParams class with Builder pattern for consistency Changes include: - Comprehensive test coverage for all new functionality - Java and Kotlin examples demonstrating the new features - Updated documentation and changelog - Backwards compatibility maintained Resolves support for include_tracking_options and raw_mime fields in Messages API. # License <!-- Your PR comment must contain the following line for us to merge the PR. --> I confirm that this contribution is made under the terms of the MIT license and that I have the authority necessary to make this contribution on behalf of its copyright owner.
1 parent bcdafdf commit 7406677

File tree

13 files changed

+920
-14
lines changed

13 files changed

+920
-14
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
# Nylas Java SDK Changelog
22

33

4+
## [Unreleased]
5+
6+
### Added
7+
* Support for `include_tracking_options` and `raw_mime` values in `MessageFields` enum
8+
* Support for `tracking_options` field in `Message` model to access message tracking settings
9+
* Support for `raw_mime` field in `Message` model to access Base64url-encoded message data
10+
* Support for query parameters in `Messages.find()` method to specify fields like `include_tracking_options` and `raw_mime`
11+
* Added `Builder` pattern to `FindMessageQueryParams` for consistency with other query parameter classes
12+
413
## [2.9.0] - Release 2025-05-27
514

615
### Added

examples/.env.example

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@ MEETING_LINK=your_meeting_link_here
88

99
# Nylas API URI - Optional (defaults to https://api.us.nylas.com)
1010
# Only change this if instructed by Nylas support
11-
NYLAS_API_URI=https://api.us.nylas.com
11+
NYLAS_API_URI=https://api.us.nylas.com
12+
13+
# Grant ID - Required for message and event examples
14+
# You can get this from your Nylas Dashboard after connecting an account
15+
NYLAS_GRANT_ID=your_grant_id_here

examples/README.md

Lines changed: 68 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,24 @@ Simple examples demonstrating how to use the Nylas Java/Kotlin SDK.
44

55
## Available Examples
66

7+
### Messages Example
8+
9+
The `MessagesExample` and `KotlinMessagesExample` demonstrate how to use the new message features in the Nylas Java/Kotlin SDK:
10+
11+
- Use the new `MessageFields.INCLUDE_TRACKING_OPTIONS` and `MessageFields.RAW_MIME` enum values
12+
- Access tracking options (opens, thread_replies, links, label) from messages
13+
- Retrieve raw MIME content for messages
14+
- Use the new `FindMessageQueryParams` to specify fields when finding specific messages
15+
- Compare different field options and their effects on returned data
16+
17+
### Events Example
18+
19+
The `EventsExample` demonstrates how to use the Nylas Java/Kotlin SDK to interact with the Events API:
20+
21+
- List events from a calendar
22+
- Filter events by date range
23+
- Show event details
24+
725
### Notetaker Example
826

927
The `NotetakerExample` demonstrates how to use the Nylas Java/Kotlin SDK to interact with the Notetakers API:
@@ -28,20 +46,38 @@ Edit the `.env` file with your details:
2846
# Get your API key from the Nylas Dashboard
2947
NYLAS_API_KEY=your_api_key_here
3048
31-
# Add your meeting link (Zoom, Google Meet, or Microsoft Teams)
49+
# Your grant ID (required for message examples)
50+
NYLAS_GRANT_ID=your_grant_id_here
51+
52+
# Add your meeting link (Zoom, Google Meet, or Microsoft Teams) - for Notetaker example
3253
MEETING_LINK=your_meeting_link_here
3354
```
3455

3556
### 2. Running the Examples
3657

3758
#### Option 1: Using Gradle
3859

39-
Run Java example:
60+
Run Java Messages example:
61+
```bash
62+
./gradlew :examples:run -PmainClass=com.nylas.examples.MessagesExample
63+
```
64+
65+
Run Kotlin Messages example:
66+
```bash
67+
./gradlew :examples:run -PmainClass=com.nylas.examples.KotlinMessagesExampleKt
68+
```
69+
70+
Run Java Events example:
71+
```bash
72+
./gradlew :examples:run -PmainClass=com.nylas.examples.EventsExample
73+
```
74+
75+
Run Java Notetaker example:
4076
```bash
4177
./gradlew :examples:run -PmainClass=com.nylas.examples.NotetakerExample
4278
```
4379

44-
Run Kotlin example:
80+
Run Kotlin Notetaker example:
4581
```bash
4682
./gradlew :examples:run -PmainClass=com.nylas.examples.KotlinNotetakerExampleKt
4783
```
@@ -53,12 +89,12 @@ List available examples:
5389
make list
5490
```
5591

56-
Run the Java example:
92+
Run the Java Notetaker example:
5793
```bash
5894
make java
5995
```
6096

61-
Run the Kotlin example:
97+
Run the Kotlin Notetaker example:
6298
```bash
6399
make kotlin-way
64100
```
@@ -67,9 +103,12 @@ make kotlin-way
67103

68104
1. Open the project in your IDE (IntelliJ IDEA, Eclipse, etc.)
69105
2. Set the required environment variables in your run configuration
70-
3. Run the main method in either:
71-
- `NotetakerExample.java` (Java)
72-
- `KotlinNotetakerExample.kt` (Kotlin)
106+
3. Run the main method in any of the example files:
107+
- `MessagesExample.java` (Java - demonstrates new message features)
108+
- `KotlinMessagesExample.kt` (Kotlin - demonstrates new message features)
109+
- `EventsExample.java` (Java - demonstrates events)
110+
- `NotetakerExample.java` (Java - demonstrates notetakers)
111+
- `KotlinNotetakerExample.kt` (Kotlin - demonstrates notetakers)
73112

74113
## Project Structure
75114

@@ -83,12 +122,31 @@ examples/
83122
└── main/
84123
├── java/ # Java examples
85124
│ └── com/nylas/examples/
86-
│ └── NotetakerExample.java
125+
│ ├── MessagesExample.java # NEW: Message features demo
126+
│ ├── EventsExample.java # Events API demo
127+
│ └── NotetakerExample.java # Notetaker API demo
87128
└── kotlin/ # Kotlin examples
88129
└── com/nylas/examples/
89-
└── KotlinNotetakerExample.kt
130+
├── KotlinMessagesExample.kt # NEW: Message features demo
131+
└── KotlinNotetakerExample.kt # Notetaker API demo
90132
```
91133

134+
## Message Features Demonstrated
135+
136+
The Messages examples showcase the following new features added to the Nylas SDK:
137+
138+
1. **New MessageFields enum values:**
139+
- `MessageFields.INCLUDE_TRACKING_OPTIONS` - Returns tracking options data
140+
- `MessageFields.RAW_MIME` - Returns raw MIME message content
141+
142+
2. **New Message model properties:**
143+
- `trackingOptions` - Contains opens, thread_replies, links, and label tracking data
144+
- `rawMime` - Contains Base64url-encoded raw message data
145+
146+
3. **Enhanced Messages API methods:**
147+
- `Messages.find()` now accepts `FindMessageQueryParams` to specify which fields to include
148+
- Both list and find operations support the new field options
149+
92150
## Additional Information
93151

94152
For more information about the Nylas API, refer to the [Nylas API documentation](https://developer.nylas.com/).

examples/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ tasks.register("listExamples") {
5353
println("Available examples:")
5454
println("- Java-Notetaker: com.nylas.examples.NotetakerExample")
5555
println("- Java-Events: com.nylas.examples.EventsExample")
56+
println("- Java-Messages: com.nylas.examples.MessagesExample")
5657
println("- Kotlin-Notetaker: com.nylas.examples.KotlinNotetakerExampleKt")
58+
println("- Kotlin-Messages: com.nylas.examples.KotlinMessagesExampleKt")
5759
println("\nRun an example with: ./gradlew :examples:run -PmainClass=<example class name>")
5860
}
5961
}

0 commit comments

Comments
 (0)