nylas 6.8.1 → 6.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 537c2669d5e30d03ad70d6acbd18c782865038fcff32779ffca36ece16234900
4
- data.tar.gz: bf78777657d01f6907505b473d5304419d95a8f8984455604fe59c86e5a1279b
3
+ metadata.gz: dd4f82c67af569b7d104e68c7dc95e078b20e23dd13f773ba2b7ed2d1936e78b
4
+ data.tar.gz: 644b49eb5d7f85fbc648185ce9c4b5a5606383d349cd7aca5f1f29abdb5240f3
5
5
  SHA512:
6
- metadata.gz: bb7bca82b3c7dbb97b8365a4ef5882d86f41256952e17f854e03e1eff92d16a8cee53f57a971a8bc70209d26a7f5721915a6d458b8582adc24aaf9a055257469
7
- data.tar.gz: 52196420bcaeb94ea0b31c2a513b57dee5a8dd7eed2f5689564cba0d84e2b63b91751a0616881e0813b63a02a29cd16a1064d78f0a57b6e1e6c4ce31fa0e395f
6
+ metadata.gz: 13043c7a48867fa7c6e640e2c599664ca5f4b7b368964593ae468fd49e5758db2bb603ad26e3b98f1c74a092d561ea0fa69273798026e8b75bdcb9249afcf340
7
+ data.tar.gz: 0cacad52c7aaff32ca2c7cfeada427743a9ef6a85fe559c86b3ed1527688120918a3a0e159296ef21385137bc8027c5cf4d234ea6049acf6e5e9630cb346c035
data/CHANGELOG.md ADDED
@@ -0,0 +1,407 @@
1
+ # Changelog
2
+
3
+ ### [6.9.0] / 2026-10-26
4
+ * Required HTTParty 0.24.0 or later to exclude versions affected by CVE-2025-68696 (potential SSRF and API key leakage)
5
+ * Treat 207 Multi-Status responses as successful, so a response that carries partial results is returned instead of raising an error
6
+ * Documented `tracking_options.domain_name` hash support for custom link and open tracking hostnames. See the [message tracking documentation](https://developer.nylas.com/docs/v3/email/message-tracking/)
7
+ * Documented Contact `metadata` and `metadata_pair` hashes, and added `contact.updated` and `contact.deleted` webhook trigger constants
8
+ * Updated CI runner images and SDK reference documentation deployment, made Ruby 3.0/3.1/3.2 versions explicit, and added gem builds to the Ruby test matrix
9
+ * Corrected gem metadata and SDK reference links, and included the changelog, README, and license in the gem package
10
+ * Updated the local test command to match the supported Ruby 3.0+ test suite
11
+ * Declared the RDoc development dependency so SDK reference documentation also builds on Ruby 4.0, and verified documentation output in CI
12
+ * Required YARD 0.9.44 or later for development to exclude known documentation server path traversal vulnerabilities
13
+ * Updated the coverage formatter for compatibility with current REXML releases
14
+
15
+ ### [6.8.1]
16
+ * Documented `tentative_as_busy` support in the `Calendars#get_free_busy` request body, consistent with other Nylas SDKs
17
+
18
+ ### [6.8.0]
19
+ * Added Policies resource for managing application policies
20
+ * Added Rules resource for managing inbox rules and listing rule evaluations
21
+ * Added Lists resource support for creating application lists
22
+ * Added Workspaces resource for managing workspaces, auto-grouping, manual assignment, `default`, `policy_id`, and `rule_ids`
23
+ * Added Domains resource and `ServiceAccountSigner` support for signed Service Account Manage Domains requests, including canonical signed bodies, encoded domain paths, info, and verify operations
24
+ * Added Applications update support (PATCH /v3/applications)
25
+ * Documented Applications update `callback_uris` ID preservation and Workspaces `auto_group` filters
26
+ * Corrected RedirectUris update verb from PUT to PATCH
27
+ * Fixed HTTParty content type issue when request body is nil - POST, PUT, PATCH, and DELETE now default to empty object to ensure Content-Type: application/json is sent (#536)
28
+ * Added support for request_body parameter on DELETE (e.g. cancellation_reason for bookings) (#536)
29
+
30
+ ### [6.7.1]
31
+ * Fix large attachment handling with string keys and custom content_ids
32
+
33
+ ### [6.7.0]
34
+ * Added access to response headers
35
+
36
+ ### [6.6.0]
37
+ * Added support for `single_level` query parameter in Folders API for Microsoft accounts
38
+ * Added support for `include_hidden_folders` query parameter in folders list endpoint for Microsoft accounts to control whether hidden folders are included in the response
39
+ * Added support for passing in string contents for multipart and base64 (<3MB) attachments (#528)
40
+ * Fixed HTTParty encoding compatibility issue with multipart requests (#528)
41
+
42
+ ### 6.5.0 / 2025-06-13
43
+ * Replaced `rest-client` dependency with `httparty` for improved maintainability and security
44
+ - `rest-client` is no longer actively maintained and has known security vulnerabilities
45
+ - `httparty` is actively maintained and provides better performance
46
+ - All existing functionality remains backwards compatible - no customer code changes required
47
+ - Removed workaround for `rest-client` cookie jar threading bug
48
+ * Added support for new `fields` query parameter values in Messages API:
49
+ - `include_tracking_options`: Returns messages and their tracking settings
50
+ - `raw_mime`: Returns the grant_id, object, id, and raw_mime fields only
51
+ * Added support for `tracking_options` field in message responses containing:
52
+ - `opens`: Boolean indicating if message open tracking is enabled
53
+ - `thread_replies`: Boolean indicating if thread replied tracking is enabled
54
+ - `links`: Boolean indicating if link clicked tracking is enabled
55
+ - `label`: String label describing the message tracking purpose
56
+ * Added support for `raw_mime` field in message responses containing Base64url-encoded message data
57
+ * Added `MessageFields` module with constants for all valid field values to improve developer experience
58
+ * Fixed multipart email sending bug where large attachments would fail due to multipart flag key mismatch (#525)
59
+ - `FileUtils.handle_message_payload` transforms keys to symbols (`:multipart`)
60
+ - `HttpClient.build_request` was only checking for string keys (`"multipart"`)
61
+ - Now checks for both string and symbol keys to maintain full backwards compatibility
62
+ - Prevents encoding errors when sending emails with attachments larger than 3MB
63
+
64
+ ### 6.4.0 / 2025-04-30
65
+ * Added support for Notetaker APIs
66
+ * Added support for Notetaker via the calendar and event APIs
67
+ * Added MESSAGE_BOUNCE_DETECTED to the webhook triggers
68
+ * Fixed issue to raise an explicit exception when the response lacks a JSON body (#520)
69
+
70
+ ### 6.3.0 / 2025-03-03
71
+ * Removed `file_path` from `File` object to match the Send API schema
72
+ * Added events import function to the RubySDK
73
+ * Added response headers to Ruby SDK
74
+
75
+ ### 6.2.3 / 2025-01-23
76
+ * Fixed issue where errors were not properly thrown due to an instance type of `String` instead of `Hash`
77
+
78
+ ### 6.2.2 / 2024-12-02
79
+ * Added support for private Scheduling configuration.
80
+ * Added ability to add optional `content_id` to support inline image on `send`.
81
+ * Added custom filename support for large attachments.
82
+ * Adjusted the gendoc to show that the `provider_error` is a Hash.
83
+
84
+ ### 6.2.1 / 2024-11-12
85
+ * Added support for scheduler APIs
86
+ * Added `query_params` field to `Folders` & `Threads` find
87
+ * Added custom filename support for attachments
88
+
89
+
90
+ ### 6.2.0 / 2024-09-24
91
+ * Added query support for folders
92
+ * Added dependency on `ostruct` gem
93
+ * Enable SDK to reattach large files to messages on retry
94
+ * Downgraded `rest-client` to `2.0` for better compatibility
95
+
96
+ ### 6.1.1 / 2024-08-20
97
+ * Fixed sending attachments less than 3MB
98
+
99
+ ### 6.1.0 / 2024-06-25
100
+ * Added query support for messages
101
+ * Added support for clean messages
102
+ * Added support for getting access token info
103
+ * Added new webhook triggers
104
+
105
+ ### 6.0.3 / 2024-03-05
106
+ * Improved message sending and draft create/update performance
107
+ * Change default timeout to match API (90 seconds)
108
+ * Fixed error when invoking `Auth.detect_provider`
109
+
110
+ ### 6.0.2 / 2024-02-27
111
+ * Fixed the HTTP operation of updating grants
112
+ * Fixed endpoint URL of rotating webhooks
113
+
114
+ ### 6.0.1 / 2024-02-12
115
+ * Fixed a bug during OAuth URL building
116
+ * Fixed a bug where the `next_cursor` field was omitted for list responses
117
+
118
+ ### 6.0.0 / 2024-02-05
119
+ * **BREAKING CHANGE**: Ruby SDK v6 supports the Nylas API v3 exclusively, dropping support for any endpoints that are not available in v3.
120
+ * **BREAKING CHANGE**: Officially support minimum Ruby v3
121
+ * **BREAKING CHANGE**: Removed all models and typing from the SDK
122
+ * **REMOVED**: Local Webhook development support is removed due to incompatibility
123
+ * Rewritten the majority of SDK to be more modular and efficient
124
+ * Created error classes for the different API errors as well as SDK-specific errors
125
+ * Added a configurable timeout for outgoing calls to the API
126
+
127
+ ### 5.17.0 / 2022-04-04
128
+ * Add support for verifying webhook signatures
129
+ * Add `event.updated_at`
130
+ * Allow native authentication to return the full response like the `exchange_code_for_token`
131
+
132
+ ### 5.16.0 / 2022-03-14
133
+ * Add missing `provider_id` attribute to `Label`
134
+ * Add `organizer_email` and `organizer_name` to `Event`
135
+ * Add missing job status webhook triggers
136
+ * Fix `MESSAGE_LINK_CLICKED` trigger
137
+
138
+ ### 5.15.0 / 2022-02-02
139
+ * Add local webhook testing support
140
+ * Add `tzinfo`, `faye-websocket`, `eventmachine` as runtime dependencies
141
+
142
+ ### 5.14.0 / 2022-12-16
143
+ * Added support for rate limit errors
144
+ * Added `disable_provider_selection` option for building auth URL
145
+ * Improved performance by skipping creating instance of StringIO before parsing JSON
146
+
147
+ ### 5.13.0 / 2022-10-21
148
+ * Add timezone fields to the `When` class
149
+ * Adds visibility attribute to `Event` class
150
+ * Add support for calendar colors (for Microsoft calendars)
151
+
152
+ ### 5.12.1 / 2022-08-12
153
+ * Add support for getting `ids` and `count` for collections not supported by the API
154
+ * Fix Ruby 3.x compatibility for expanding keyword arguments
155
+
156
+ ### 5.12.0 / 2022-07-29
157
+ * Add missing hosted authentication parameters
158
+ * Add `reply_to_message_id` field in `Messages`
159
+ * Fix calendar availability failing when `round_robin` is `nil`
160
+
161
+ ### 5.11.0 / 2022-07-08
162
+ * Add support for event reminders
163
+ * Add `metadata` field to `JobStatus`
164
+
165
+ ### 5.10.0 / 2022-05-10
166
+ * Support collective and group events
167
+ * Fix `ModelNotFilterableError` when querying for accounts with metadata
168
+
169
+ ### 5.9.2 / 2022-05-04
170
+ * Fix calendar availability not serializing `FreeBusy` and `OpenHours` properly
171
+ * Fix Authentication demo app using deprecated Google scopes
172
+
173
+ ### 5.9.1 / 2022-04-20
174
+ * Add missing `phone_number` field in `Participant`
175
+ * Fix `NoMethodError` when calling `NewMessage#send!`
176
+
177
+ ### 5.9.0 / 2022-04-07
178
+ * Add Outbox support
179
+ * Add new `authentication_type` field in Account
180
+ * Add support for basic authentication
181
+ * Enable Nylas API v2.5 support
182
+
183
+ ### 5.8.0 / 2022-03-18
184
+ * Improved support for `Webhook` objects
185
+ * Support `calendars` for availability methods
186
+ * Fix `interval_minutes` keyword for availability methods
187
+
188
+ ### 5.7.0 / 2022-01-21
189
+ * Add job status support
190
+ * Add `Event` to ICS support
191
+ * Add support for getting access token information
192
+ * Improved support for Application Details
193
+ * Enable ability to delete `Account` objects
194
+ * Fix saving and deleting `Folder` objects
195
+
196
+ ### 5.6.1 / 2021-12-13
197
+ * Enabled support for adding metadata to a `NewMessage`/`Draft`
198
+ * Fix bug where updating an Event results in an API error
199
+
200
+ ### 5.6.0 / 2021-11-22
201
+ * Add support for event notifications
202
+ * Add more Scheduler support
203
+ * Add metadata support for `Calendar`, `Message` and `Account`
204
+ * Modify `exchange_code_for_token` to allow returning a full body
205
+
206
+ ### 5.5.0 / 2021-10-28
207
+ * Add Component CRUD Support
208
+ * Add Scheduler support
209
+ * Add support for calendar availability
210
+ * Add support for `File` delete operation
211
+ * Fix issue where `file_ids` get reset to empty
212
+
213
+ ### 5.4.1 / 2021-09-27
214
+ * Fix draft send method to send existing draft when tracking is enabled
215
+
216
+ ### 5.4.0 / 2021-09-23
217
+ * Add support for Event Conferencing
218
+ * Fix update draft failing if version is not explicitly set
219
+ * Fix draft `.send` logic
220
+
221
+ ### 5.3.0 / 2021-08-18
222
+ * Add support for Neural API
223
+ * Fix issue where `Delta` did not have a header attribute for expanded headers
224
+ * Fix ArgumentError when calling `Nylas::API#send!` due to missing double splat (**)
225
+ * Fix issue where server errors are not reported if HTML is returned
226
+ * Fix issue where expanded `Thread` objects were not returning messages
227
+
228
+ ### 5.2.0 / 2021-06-07
229
+ * Add support for `Room Resource`
230
+ * Fix issue where "302 Redirect" response codes were treated as errors
231
+ * Fix issue where `api` value was overriden when calling `message.expanded`
232
+
233
+ ### 5.1.0 / 2021-06-07
234
+ * Add support for read only attributes
235
+ * Add `save_all_attributes` and `update_all_attributes` methods to support
236
+ nullifying attributes.
237
+ * Add support new `Event` metadata feature
238
+ * Fix attributes assignment for `Delta`
239
+ * Fix issue where files couldn't be attached to drafts
240
+ * Fix exception raise when content-type is not JSON
241
+ * Fix issue where draft version wouldn't update after `update` or `save`
242
+
243
+ ### 5.0.0 / 2021-05-07
244
+
245
+ * Send `Nylas-API-Version` header to API with latest supported version.
246
+ * Fix issue sending message using raw mime type.
247
+ * Support for `messages.expanded.find(id)` to return expanded message.
248
+ * Add support for hosted authentication
249
+ * Fix bug to not send `id`, `object` and `account_id` on events update call
250
+
251
+ ### 4.6.7 / 2021-04-22
252
+
253
+ * Support for Ruby 3.
254
+ * Add support for `/free-busy` endpoint
255
+ * Fix issue where download a file fetch via `find` failed,
256
+
257
+ ### 4.6.6 / 2021-04-06
258
+
259
+ * Add support for `notify_participants` when creating events
260
+ * Add provider attribute to account
261
+
262
+ ### 4.6.5 / 2021-02-22
263
+
264
+ * Add `content_disposition` field to File
265
+ * Fix thread-safety issue in HTTP::CookieJar loading
266
+
267
+ ### 4.6.4 / 2021-02-03
268
+
269
+ * fix failing http_client spec after merging main
270
+ * Skip parsing response if content is not JSON
271
+ * Add missing http status codes / errors.
272
+ * Add reply_to to NewMessage
273
+ * Add message tracking to drafts.
274
+ * Truncate the returned filename so it's less than 256 characters and compatible with rb_sysopen.
275
+ * Bump required rest client dep to >= 2.0, remove travis ci tests for rest client 1, ruby v2.3
276
+ * Use to_json helper instead of JSON.dump.
277
+
278
+ ### 4.6.3 / 2020-12-18
279
+
280
+ * Remove folder on message.save for updates
281
+ * Fix JSON parsing behavior
282
+ * Fix rubocop warnings for http_client and spec
283
+ * No longer rescue json parse errors, use Yajl instead of JSON for parsing responses (due to unicode issue).
284
+ * Add specs for changes to message.save
285
+ * Store folder id in folder_id and remove folder if present before saving.
286
+ * Adding secondary_address field to physical address model
287
+
288
+ ### 4.6.2 / 2020-09-08
289
+
290
+ * Add support to move `message` and `thread` between `folder`.
291
+ * Handle new attributes added to API gracefully
292
+ * Add is_primary and other new Calendar attributes
293
+
294
+ ### 4.6.1 / 2020-01-06
295
+
296
+ * Fix a bug with `when` blocks when creating events
297
+ * Add support for the Event.ical_uid field
298
+
299
+ ### 4.6.0 / 2019-09-25
300
+
301
+ * Add support for `/contacts/groups` endpoint.
302
+ * Fix issue when calling `.save` on `message` (https://github.com/nylas/nylas-ruby/pull/233)
303
+ * Add support for Rails 6.
304
+ * Fix issue for updating `message` with sending `label_ids` (https://github.com/nylas/nylas-ruby/pull/231)
305
+ * Support for `when` in `Nylas::Event` for more attributes.
306
+ * Add internal transfer api to support initialize related objects.
307
+ * Fix encoding issues when downloading attachments.
308
+
309
+ ### 4.5.0 / 2019-04-15
310
+
311
+ * Add support for `source` attribute in Contact model
312
+
313
+ ### 4.4.0 / 2019-04-05
314
+
315
+ * Add support for `/ip_addresses` endpoint
316
+ * Add optional argument for `Model#to_json`
317
+ * Reintroduce support for Ruby 2.3
318
+ * Add Rails 4 bundler support to setup script
319
+ * Specify gemfiles called in test script
320
+
321
+ ### 4.3.0 / 2019-03-18
322
+
323
+ * Drop support for Ruby 2.2 and 2.3: they have reached end-of-life
324
+ * Add support for Ruby 2.5 and 2.6
325
+ * Add `scopes` argument to `Nylas::API#authenticate` for
326
+ [selective sync](https://docs.nylas.com/docs/how-to-use-selective-sync)
327
+ * Add `Account#revoke_all`
328
+ * Add X-Nylas-Client-Id header for HTTP requests
329
+
330
+ ### 4.2.4 / 2018-08-07
331
+ * Enables silent addition of fields to API without impact to SDK
332
+ * Fixes api attribute breakage on enumeration (https://github.com/nylas/nylas-ruby/issues/188)
333
+
334
+ ### 4.0.0 / 2018-01-??
335
+ * Drop support for ruby 2.0 and below
336
+ * Add support for v2 of the Contacts API
337
+ * Switch to an ActiveModel/ActiveQuery compliant interface for interacting with
338
+ objects and APIs
339
+
340
+ ### 3.2.0 / 2017-11-16
341
+ * Add support for Ruby 2.4+
342
+ * Add support for Rails 4+
343
+ * Filters now work correctly for all models
344
+ * `.each` now pages requests
345
+ * Numerous other bug fixes
346
+
347
+ ### 3.1.1 / 2017-06-23
348
+ * Fix deleting event request (https://github.com/nylas/nylas-ruby/issues/101)
349
+
350
+ ### 3.1.0 / 2017-05-10
351
+ * Adds support for message tracking (https://github.com/cberkom)
352
+
353
+ ### 3.0.0 / 2016-11-04
354
+
355
+ * Removes `interpret_http_status` to be included in `interpret_response`
356
+ * Improve error handling
357
+ * Add native authentication example code
358
+ * Add webhooks example code
359
+ * Removes experimental JRuby support
360
+
361
+ [full changelog](https://github.com/nylas/nylas-ruby/compare/v2.0.1...v3.0.0)
362
+
363
+ ### 2.0.1 / 2016-02-12
364
+
365
+ * Fix folders and labels updates for threads and messages
366
+ * Revert pull request #71
367
+
368
+ [full changelog](https://github.com/nylas/nylas-ruby/compare/v2.0.0...v2.0.1)
369
+
370
+ ### 2.0.0 / 2016-02-05
371
+
372
+ * Remove get_cursor method that calls deprecated generate_cursor endpoint
373
+ * Modify `delta_stream method` to remove built-in `EventMachine.run` block and allow for multiple streams. `delta_stream` must now be called from inside an `EventMachine.run` block
374
+ * `url_for_authentication` now accepts a `:state` parameter (see https://nylas.com/docs#server_side_explicit_flow for more details)
375
+
376
+ [full changelog](https://github.com/nylas/nylas-ruby/compare/v1.3.0...v2.0.0)
377
+
378
+ ### 1.3.0 / 2015-12-07
379
+
380
+ * Deprecate the tags API
381
+ * Remove the archive!/unarchive! methods
382
+ * Expose `starred`, `unread`, `has_attachments` in Nylas::Thread
383
+
384
+ [full changelog](https://github.com/nylas/nylas-ruby/compare/v1.2.1...v1.3.0)
385
+
386
+ ### 1.2.0 / 2015-11-19
387
+
388
+ * Add `Messages#files?` [Issue #40](https://github.com/nylas/nylas-ruby/issues/40)
389
+ * Return an external Enumerator when no block given. [Issue #42](https://github.com/nylas/nylas-ruby/issues/42) ([Steven Harman](https://github.com/stevenharman))
390
+ * Expose `folders` in the Delta Stream API.
391
+ * Add `Inbox::Error` base class for all errors. ([Steven Harman](https://github.com/stevenharman))
392
+ * Expose `sync_state` on the `/account` API. ([Steven Harman](https://github.com/stevenharman))
393
+ * Return Enumerator for #deltas when no block given
394
+ * Ruby < 1.9.3 no longer supported
395
+ * Add travis support for Mac OS X
396
+
397
+ [full changelog](https://github.com/nylas/nylas-ruby/compare/v1.1.0...v1.2.0)
398
+
399
+
400
+ ### 1.1.0 / 2015-09-22
401
+
402
+ * `Message#expanded` returns an expanded version of a message
403
+ * Expose the `server_error` field when failing to send messages
404
+ * minor bug fixes
405
+ * various test cleanups ([Steven Harman](https://github.com/stevenharman))
406
+
407
+ [full changelog](https://github.com/nylas/nylas-ruby/compare/v1.0.0...v1.1.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+ ----
3
+
4
+ Copyright (c) 2016 Nylas, Inc. and Contributors
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,185 @@
1
+ <div align="center">
2
+ <a href="https://www.nylas.com/">
3
+ <img width="100%" alt="Nylas" src="https://github.com/user-attachments/assets/137517ae-244d-47a5-8ca7-b12984971fc4" />
4
+ </a>
5
+
6
+ <h1>Nylas Ruby SDK</h1>
7
+
8
+ <p>
9
+ <strong>The official Ruby SDK for Nylas — the infrastructure that powers communications</strong>
10
+ </p>
11
+
12
+ <p>
13
+ <a href="https://rubygems.org/gems/nylas"><img src="https://img.shields.io/gem/v/nylas" alt="version" /></a>
14
+ <a href="https://codecov.io/gh/nylas/nylas-ruby"><img src="https://codecov.io/gh/nylas/nylas-ruby/branch/main/graph/badge.svg?token=IKH0YMH4KA" alt="code coverage" /></a>
15
+ <a href="https://rubygems.org/gems/nylas"><img src="https://img.shields.io/gem/dt/nylas" alt="downloads" /></a>
16
+ <a href="LICENSE.txt"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="license" /></a>
17
+ </p>
18
+
19
+ <p>
20
+ <a href="https://developer.nylas.com/docs/v3/sdks/ruby/">📖 SDK Guide</a> ·
21
+ <a href="https://developer.nylas.com/docs/api/v3/">📚 API Reference</a> ·
22
+ <a href="https://dashboard-v3.nylas.com/register">🚀 Sign up</a> ·
23
+ <a href="https://github.com/orgs/nylas-samples/repositories?q=ruby">💡 Samples</a> ·
24
+ <a href="https://forums.nylas.com">💬 Forum</a>
25
+ </p>
26
+ </div>
27
+
28
+ <br />
29
+
30
+ The official Ruby SDK for [Nylas](https://developer.nylas.com/docs/v3/) — the infrastructure that powers communications. Integrate with Gmail, Microsoft, IMAP, Zoom, and 250+ email, calendar, and meeting providers in 5 minutes. Covers [Email](https://developer.nylas.com/docs/v3/email/), [Calendar](https://developer.nylas.com/docs/v3/calendar/), [Contacts](https://developer.nylas.com/docs/v3/email/contacts/), [Scheduler](https://developer.nylas.com/docs/v3/scheduler/), [Notetaker](https://developer.nylas.com/docs/v3/notetaker/), and [Agent Accounts](https://developer.nylas.com/docs/v3/agent-accounts/).
31
+
32
+ This repository is for contributors and anyone installing the SDK from source. If you just want to use the SDK in your app, head straight to the **[Ruby SDK guide](https://developer.nylas.com/docs/v3/sdks/ruby/)** on developer.nylas.com.
33
+
34
+ ## Get started
35
+
36
+ 1. [Sign up for a free Nylas account](https://dashboard-v3.nylas.com/register).
37
+ 2. Follow the [getting started guide](https://developer.nylas.com/docs/v3/getting-started/) to provision an application and create your API key.
38
+ 3. Bootstrap a project with the Nylas CLI:
39
+
40
+ ```bash
41
+ brew install nylas/nylas-cli/nylas
42
+ nylas init
43
+ ```
44
+
45
+ ## ⚙️ Install
46
+
47
+ > **Requirements:** Ruby 3.0 or later.
48
+
49
+ Add the gem to your Gemfile:
50
+
51
+ ```ruby
52
+ gem "nylas"
53
+ ```
54
+
55
+ Then install:
56
+
57
+ ```bash
58
+ bundle install
59
+ ```
60
+
61
+ Or install it directly:
62
+
63
+ ```bash
64
+ gem install nylas
65
+ ```
66
+
67
+ ### Build from source
68
+
69
+ ```bash
70
+ git clone https://github.com/nylas/nylas-ruby.git
71
+ cd nylas-ruby
72
+ bundle install
73
+ ```
74
+
75
+ Run the test suite with `rspec spec`.
76
+
77
+ ## ⚡️ Usage
78
+
79
+ Initialize the client with your API key:
80
+
81
+ ```ruby
82
+ require "nylas"
83
+
84
+ nylas = Nylas::Client.new(
85
+ api_key: "NYLAS_API_KEY"
86
+ )
87
+ ```
88
+
89
+ Then make a request — for example, list a grant's calendars:
90
+
91
+ ```ruby
92
+ calendars, request_id, next_cursor = nylas.calendars.list(identifier: "GRANT_ID")
93
+ ```
94
+
95
+ Every SDK call returns a tuple. List endpoints return `[data, request_id, next_cursor, headers]`; single-record endpoints return `[data, request_id]`. Destructure the elements you need and ignore the rest with `_`. Use `next_cursor` to paginate:
96
+
97
+ ```ruby
98
+ cursor = nil
99
+ loop do
100
+ page, _request_id, cursor = nylas.calendars.list(
101
+ identifier: "GRANT_ID",
102
+ query_params: { page_token: cursor }
103
+ )
104
+ page.each { |calendar| puts calendar[:name] }
105
+ break unless cursor
106
+ end
107
+ ```
108
+
109
+ For step-by-step walkthroughs, see the developer guides:
110
+
111
+ - [Email](https://developer.nylas.com/docs/v3/email/)
112
+ - [Calendar](https://developer.nylas.com/docs/v3/calendar/)
113
+ - [Scheduler](https://developer.nylas.com/docs/v3/scheduler/)
114
+ - [Notetaker](https://developer.nylas.com/docs/v3/notetaker/)
115
+ - [Agent Accounts](https://developer.nylas.com/docs/v3/agent-accounts/)
116
+ - [Notifications & webhooks](https://developer.nylas.com/docs/v3/notifications/)
117
+
118
+ ### Error handling
119
+
120
+ The SDK raises typed errors you can rescue. API failures raise `Nylas::NylasApiError` (with `type`, `status_code`, `request_id`, `provider_error`, `headers`); OAuth failures raise `Nylas::NylasOAuthError`; request timeouts raise `Nylas::NylasSdkTimeoutError`.
121
+
122
+ ```ruby
123
+ begin
124
+ nylas.messages.find(identifier: "GRANT_ID", message_id: "MESSAGE_ID")
125
+ rescue Nylas::NylasApiError => e
126
+ warn "Nylas API error #{e.status_code} (#{e.type}): #{e.message}"
127
+ rescue Nylas::NylasSdkTimeoutError => e
128
+ warn "Request to #{e.url} timed out after #{e.timeout}s"
129
+ end
130
+ ```
131
+
132
+ ## 💡 Examples
133
+
134
+ - Local examples live in [`examples/`](examples/) (messages, events, folders, notetaker).
135
+ - The [Nylas Samples org](https://github.com/orgs/nylas-samples/repositories?q=ruby) has end-to-end Ruby apps you can clone and run.
136
+
137
+ ## 🤖 AI agents
138
+
139
+ [nylas/skills](https://github.com/nylas/skills) drops Nylas into Claude Code, Cursor, Codex, and other agents that support the skills format:
140
+
141
+ ```bash
142
+ npx skills add nylas/skills
143
+ /plugin marketplace add nylas/skills # Claude Code
144
+ ```
145
+
146
+ The CLI also installs an MCP server for Claude Desktop, Claude Code, Cursor, Windsurf, or VS Code:
147
+
148
+ ```bash
149
+ brew install nylas/nylas-cli/nylas
150
+ nylas mcp install
151
+ ```
152
+
153
+ Walkthrough: [give AI agents email access via MCP](https://cli.nylas.com/guides/give-ai-agents-email-access-via-mcp).
154
+
155
+ ## 📚 Reference
156
+
157
+ - [Ruby SDK guide](https://developer.nylas.com/docs/v3/sdks/ruby/)
158
+ - [API reference](https://developer.nylas.com/docs/api/v3/)
159
+ - [Getting started](https://developer.nylas.com/docs/v3/getting-started/)
160
+ - [Email](https://developer.nylas.com/docs/v3/email/) · [Calendar](https://developer.nylas.com/docs/v3/calendar/) · [Scheduler](https://developer.nylas.com/docs/v3/scheduler/) · [Notetaker](https://developer.nylas.com/docs/v3/notetaker/) · [Agent Accounts](https://developer.nylas.com/docs/v3/agent-accounts/) · [Notifications](https://developer.nylas.com/docs/v3/notifications/)
161
+ - [Data residency](https://developer.nylas.com/docs/dev-guide/platform/data-residency/)
162
+ - [Nylas CLI](https://cli.nylas.com)
163
+ - [Forum](https://forums.nylas.com)
164
+
165
+ ## ✨ Upgrading
166
+
167
+ See [CHANGELOG.md](CHANGELOG.md) for release notes, and [UPGRADE.md](UPGRADE.md) for the 5.x → 6.x migration guide. The 6.x line targets Nylas API v3; if you're still on v2.7 or earlier, stay on the 5.x SDK.
168
+
169
+ ## 💙 Contributing
170
+
171
+ Bug reports, questions, and pull requests are welcome. See [Contributing.md](Contributing.md) for the workflow, and the [Nylas Forum](https://forums.nylas.com) for broader discussion.
172
+
173
+ ## 🔒 Security
174
+
175
+ To report a security vulnerability, follow the [Nylas Vulnerability Disclosure Policy](https://www.nylas.com/security/vulnerability-disclosure-policy/). Please don't open a public GitHub issue for security reports.
176
+
177
+ ## 🔗 Other Nylas SDKs
178
+
179
+ - [nylas-nodejs](https://github.com/nylas/nylas-nodejs)
180
+ - [nylas-python](https://github.com/nylas/nylas-python)
181
+ - [nylas-java](https://github.com/nylas/nylas-java) (Java & Kotlin)
182
+
183
+ ## 📝 License
184
+
185
+ MIT — see [LICENSE.txt](LICENSE.txt).
data/lib/nylas/errors.rb CHANGED
@@ -83,5 +83,5 @@ module Nylas
83
83
  end
84
84
  end
85
85
 
86
- HTTP_SUCCESS_CODES = [200, 201, 202, 302].freeze
86
+ HTTP_SUCCESS_CODES = [200, 201, 202, 207, 302].freeze
87
87
  end
@@ -19,7 +19,7 @@ module Nylas
19
19
  # Get info about a specific token based on the identifier you include.
20
20
  # Use either the ID Token or Access Token.
21
21
  #
22
- # @param ID of the request.
22
+ # @param query_params [Hash, nil] Query parameters containing the token to inspect.
23
23
  # @return [Hash] Token Info.
24
24
  def access_token_info(query_params: nil)
25
25
  get(
@@ -14,7 +14,10 @@ module Nylas
14
14
  # Return all contacts.
15
15
  #
16
16
  # @param identifier [String] Grant ID or email account to query.
17
- # @param query_params [Hash, nil] Query params to pass to the request.
17
+ # @param query_params [Hash, nil] Query params to pass to the request. Use
18
+ # `metadata_pair: { key1: "value" }` to filter by one indexed metadata
19
+ # key (`key1` through `key5`). Metadata filters cannot be combined with
20
+ # provider-side contact filters.
18
21
  # @return [Array(Array(Hash), String, String)] The list of contacts, API Request ID, and next cursor.
19
22
  def list(identifier:, query_params: nil)
20
23
  get_list(
@@ -39,7 +42,8 @@ module Nylas
39
42
  # Create a contact.
40
43
  #
41
44
  # @param identifier [String] Grant ID or email account in which to create the object.
42
- # @param request_body [Hash] The values to create the contact with.
45
+ # @param request_body [Hash] The values to create the contact with. The
46
+ # optional `metadata` hash is stored by Nylas, not by the provider.
43
47
  # @return [Array(Hash, String)] The created contact and API Request ID.
44
48
  def create(identifier:, request_body:)
45
49
  post(
@@ -52,7 +56,9 @@ module Nylas
52
56
  #
53
57
  # @param identifier [String] Grant ID or email account in which to update an object.
54
58
  # @param contact_id [String] The id of the contact to update.
55
- # @param request_body [Hash] The values to update the contact with
59
+ # @param request_body [Hash] The values to update the contact with. Omitting
60
+ # `metadata` or setting it to `nil` preserves existing metadata, a hash
61
+ # replaces it, and an empty hash clears it.
56
62
  # @return [Array(Hash, String)] The updated contact and API Request ID.
57
63
  def update(identifier:, contact_id:, request_body:)
58
64
  put(
@@ -39,9 +39,12 @@ module Nylas
39
39
  #
40
40
  # @param identifier [String] Grant ID or email account in which to create the draft.
41
41
  # @param request_body [Hash] The values to create the message with.
42
+ # Use `:tracking_options` with `:links` or `:opens` enabled to track the draft. To use a custom
43
+ # tracking hostname, set `:domain_name` inside `:tracking_options` to an active hostname owned
44
+ # by your organization.
42
45
  # If you're attaching files, you must pass an array of [File] objects, or
43
46
  # you can pass in base64 encoded strings if the total attachment size is less than 3mb.
44
- # You can also use {FileUtils::attach_file_request_builder} to build each object attach.
47
+ # You can also use {Nylas::FileUtils.attach_file_request_builder} to build each attachment.
45
48
  # @return [Array(Hash, String)] The created draft and API Request ID.
46
49
  def create(identifier:, request_body:)
47
50
  payload, opened_files = FileUtils.handle_message_payload(request_body)
@@ -61,9 +64,12 @@ module Nylas
61
64
  # @param identifier [String] Grant ID or email account in which to update the draft.
62
65
  # @param draft_id [String] The id of the draft to update.
63
66
  # @param request_body [Hash] The values to create the message with.
67
+ # To replace the draft's custom tracking hostname, set `:tracking_options` with `:links` or
68
+ # `:opens` enabled and a `:domain_name`. Omit `:tracking_options` to preserve the draft's
69
+ # existing tracking settings.
64
70
  # If you're attaching files, you must pass an array of [File] objects, or
65
71
  # you can pass in base64 encoded strings if the total attachment size is less than 3mb.
66
- # You can also use {FileUtils::attach_file_request_builder} to build each object attach.
72
+ # You can also use {Nylas::FileUtils.attach_file_request_builder} to build each attachment.
67
73
  # @return [Array(Hash, String)] The updated draft and API Request ID.
68
74
  def update(identifier:, draft_id:, request_body:)
69
75
  payload, opened_files = FileUtils.handle_message_payload(request_body)
@@ -114,9 +114,14 @@ module Nylas
114
114
  #
115
115
  # @param identifier [String] Grant ID or email account from which to delete an object.
116
116
  # @param request_body [Hash] The values to create the message with.
117
+ # Use `:tracking_options` with `:links` or `:opens` enabled to track a message. To use a custom
118
+ # tracking hostname, set `:domain_name` inside `:tracking_options` to an active hostname owned
119
+ # by your organization. Omit `:domain_name` to use the default Nylas tracking hostname.
120
+ # Set `:send_at` to a Unix timestamp to schedule the message; custom tracking hostnames are
121
+ # validated when the send is scheduled and revalidated before delivery.
117
122
  # If you're attaching files, you must pass an array of [File] objects, or
118
123
  # you can pass in base64 encoded strings if the total attachment size is less than 3mb.
119
- # You can also use {FileUtils::attach_file_request_builder} to build each object attach.
124
+ # You can also use {Nylas::FileUtils.attach_file_request_builder} to build each attachment.
120
125
  # @return [Array(Hash, String)] The sent message and the API Request ID.
121
126
  def send(identifier:, request_body:)
122
127
  payload, opened_files = FileUtils.handle_message_payload(request_body)
@@ -5,11 +5,16 @@ require_relative "../handler/api_operations"
5
5
 
6
6
  module Nylas
7
7
  # Module representing the possible 'trigger' values in a Webhook.
8
+ # Native iCloud contacts support CONTACT_UPDATED and CONTACT_DELETED. Yahoo
9
+ # contacts support neither trigger, including for changes made through the
10
+ # Nylas API. There is no CONTACT_CREATED trigger.
8
11
  # @see https://developer.nylas.com/docs/api#post/a/client_id/webhooks
9
12
  module WebhookTrigger
10
13
  CALENDAR_CREATED = "calendar.created"
11
14
  CALENDAR_UPDATED = "calendar.updated"
12
15
  CALENDAR_DELETED = "calendar.deleted"
16
+ CONTACT_UPDATED = "contact.updated"
17
+ CONTACT_DELETED = "contact.deleted"
13
18
  EVENT_CREATED = "event.created"
14
19
  EVENT_UPDATED = "event.updated"
15
20
  EVENT_DELETED = "event.deleted"
data/lib/nylas/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nylas
4
- VERSION = "6.8.1"
4
+ VERSION = "6.9.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nylas
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.8.1
4
+ version: 6.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nylas, Inc.
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.21'
32
+ version: '0.24'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.21'
39
+ version: '0.24'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: mime-types
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -119,20 +119,40 @@ dependencies:
119
119
  - - ">="
120
120
  - !ruby/object:Gem::Version
121
121
  version: 1.3.0
122
+ - !ruby/object:Gem::Dependency
123
+ name: rdoc
124
+ requirement: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '6.3'
129
+ - - "<"
130
+ - !ruby/object:Gem::Version
131
+ version: '8.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '6.3'
139
+ - - "<"
140
+ - !ruby/object:Gem::Version
141
+ version: '8.0'
122
142
  - !ruby/object:Gem::Dependency
123
143
  name: yard
124
144
  requirement: !ruby/object:Gem::Requirement
125
145
  requirements:
126
146
  - - "~>"
127
147
  - !ruby/object:Gem::Version
128
- version: 0.9.34
148
+ version: 0.9.44
129
149
  type: :development
130
150
  prerelease: false
131
151
  version_requirements: !ruby/object:Gem::Requirement
132
152
  requirements:
133
153
  - - "~>"
134
154
  - !ruby/object:Gem::Version
135
- version: 0.9.34
155
+ version: 0.9.44
136
156
  - !ruby/object:Gem::Dependency
137
157
  name: rubocop
138
158
  requirement: !ruby/object:Gem::Requirement
@@ -243,14 +263,14 @@ dependencies:
243
263
  requirements:
244
264
  - - "~>"
245
265
  - !ruby/object:Gem::Version
246
- version: 2.1.0
266
+ version: '3.2'
247
267
  type: :development
248
268
  prerelease: false
249
269
  version_requirements: !ruby/object:Gem::Requirement
250
270
  requirements:
251
271
  - - "~>"
252
272
  - !ruby/object:Gem::Version
253
- version: 2.1.0
273
+ version: '3.2'
254
274
  - !ruby/object:Gem::Dependency
255
275
  name: webrick
256
276
  requirement: !ruby/object:Gem::Requirement
@@ -277,6 +297,9 @@ executables: []
277
297
  extensions: []
278
298
  extra_rdoc_files: []
279
299
  files:
300
+ - CHANGELOG.md
301
+ - LICENSE.txt
302
+ - README.md
280
303
  - lib/nylas.rb
281
304
  - lib/nylas/client.rb
282
305
  - lib/nylas/config.rb
@@ -314,12 +337,13 @@ files:
314
337
  - lib/nylas/resources/workspaces.rb
315
338
  - lib/nylas/utils/file_utils.rb
316
339
  - lib/nylas/version.rb
340
+ homepage: https://www.nylas.com
317
341
  licenses:
318
342
  - MIT
319
343
  metadata:
320
344
  bug_tracker_uri: https://github.com/nylas/nylas-ruby/issues
321
- changelog_uri: https://github.com/nylas/nylas-ruby/blob/master/CHANGELOG.md
322
- documentation_uri: https://developer.nylas.com/docs/sdks/ruby/
345
+ changelog_uri: https://github.com/nylas/nylas-ruby/blob/main/CHANGELOG.md
346
+ documentation_uri: https://developer.nylas.com/docs/v3/sdks/ruby/
323
347
  homepage_uri: https://www.nylas.com
324
348
  source_code_uri: https://github.com/nylas/nylas-ruby
325
349
  github_repo: https://github.com/nylas/nylas-ruby
@@ -337,7 +361,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
337
361
  - !ruby/object:Gem::Version
338
362
  version: '0'
339
363
  requirements: []
340
- rubygems_version: 4.0.3
364
+ rubygems_version: 4.0.20
341
365
  specification_version: 4
342
366
  summary: Gem for interacting with the Nylas API
343
367
  test_files: []