mailjet 1.8.2 → 1.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: d54cf6674adadbb1dd8a8c8bf2ce842a77227ecc06bfddd461e966afb28a6be0
4
- data.tar.gz: 2dc9a441b19debbe344d99929f5cef00d6dc815dd3f08f100b489bbfbecacf16
3
+ metadata.gz: 0d0848688b6e2cc4cdc79891142ebdb5589ba9104e9a3a8542272879c3eae647
4
+ data.tar.gz: 410632493ccee4d6239af3f0062a8babe986139329a1fe7d0d6eca50e2e28fd5
5
5
  SHA512:
6
- metadata.gz: a86bc5f7940f9edd25d946ae98acf323a9aa3707693d8548c100684a8fe8ffb692ad45b208e7f321b30735cd23146263dc3e3d7d8c1065464a8e050f12b024bc
7
- data.tar.gz: 1c00d516a00931715017eac97473ec89c4afa179d65291384b237045dd56e44d09b628dec2c611fa053c3a03da68a58b85c8418dfa6678c45d20ffe1ea07d4ca
6
+ metadata.gz: 20c7088de3527b7a0ae07f3e88087cf112e7009e2b1e9399847457481da6ddc6e0842a6bb985e8740dbfd6231b4a22c6c0a727607d8e1f2faf76d0a4cadefc29
7
+ data.tar.gz: ca85d5e43414bd5bd2523bfb857ff08759a16b5f69d2ee9f74a66007fae5dd988eb213d5ef3d3b292c8671018ab74789dababa3f4af48aeb46fa8d94bd6a3619
data/README.md CHANGED
@@ -67,6 +67,10 @@ Check out all the resources and Ruby code examples in the [Offical Documentation
67
67
  - [Retrieve the first object matching the query](retrieve-the-first-object-matching-the-query)
68
68
  - [PUT request](#put-request)
69
69
  - [DELETE request](#delete-request)
70
+ - [Deprecated resources](#deprecated-resources)
71
+ - [Newsletters to campaign drafts](#newsletters-to-campaign-drafts)
72
+ - [Legacy statistics to statcounters](#legacy-statistics-to-statcounters)
73
+ - [Domain statistics to recipient ESP statistics](#domain-statistics-to-recipient-esp-statistics)
70
74
  - [Send emails with ActionMailer](#send-emails-with-actionmailer)
71
75
  - [Track email delivery](#track-email-delivery)
72
76
  - [Testing](#testing)
@@ -204,7 +208,7 @@ You can find the list of all available resources for this library, as well as th
204
208
  ### Naming conventions
205
209
 
206
210
  - Class names' first letter is capitalized followed by the rest of the resource name in lowercase (e.g. `listrecipient` will be `Listrecipient` in ruby)
207
- - Ruby attribute names are the underscored versions of API attributes names (e.g. `IsActive` will be `is_active` in ruby)
211
+ - Ruby attribute names are the underscored versions of API attributes names (e.g. `IsUnsubscribed` will be `is_unsubscribed` in ruby)
208
212
 
209
213
  ## Request examples
210
214
 
@@ -314,13 +318,13 @@ Here's an example of a PUT request:
314
318
  ```ruby
315
319
  > recipient = Mailjet::Listrecipient.first
316
320
  => #<Mailjet::Listrecipient>
317
- > recipient.is_active = false
318
- => false
321
+ > recipient.is_unsubscribed = true
322
+ => true
319
323
  > recipient.attributes
320
324
  => {...} # attributes hash
321
325
  > recipient.save
322
326
  => true
323
- > recipient.update_attributes(is_active: true)
327
+ > recipient.update_attributes(is_unsubscribed: false)
324
328
  => true
325
329
  ```
326
330
 
@@ -338,6 +342,98 @@ Here's an example of a `DELETE` request:
338
342
 
339
343
  Upon a successful `DELETE` request the response will not include a response body, but only a `204 No Content` response code.
340
344
 
345
+ ## Deprecated resources
346
+
347
+ Mailjet has [deprecated some Email API endpoints](https://dev.mailjet.com/openapi/openapi-mailjet/deprecated-endpoints) and plans to shut them down. Since 1.9.0, the classes that wrap them print a warning the first time they are used, naming the replacement; run Ruby with `-W0` to silence it. They will be removed in 2.0.0, once Mailjet shuts the endpoints down.
348
+
349
+ | Deprecated class | Replacement |
350
+ | --- | --- |
351
+ | `Newsletter` | `Campaigndraft` |
352
+ | `Newsletter_detailcontent` | `Campaigndraft_detailcontent` |
353
+ | `Newsletter_schedule` | `Campaigndraft_schedule` |
354
+ | `Newsletter_send` | `Campaigndraft_send` |
355
+ | `Newsletter_status` | `Campaigndraft_status` |
356
+ | `Newsletter_test` | `Campaigndraft_test` |
357
+ | `Apikeytotals` | `Statcounters` with `counter_source: "APIKey"` |
358
+ | `Campaigngraphstatistics` | `Statcounters` with `counter_source: "Campaign"` |
359
+ | `Campaignstatistics` | `Statcounters` with `counter_source: "Campaign"` |
360
+ | `Graphstatistics` | `Statcounters` with `counter_resolution: "Day"` or `"Hour"` |
361
+ | `Liststatistics` | `Statcounters` with `counter_source: "List"` |
362
+ | `Messagestatistics` | `Statcounters` with `counter_timing: "Message"` |
363
+ | `Openstatistics` | `Statcounters` with `counter_timing: "Message"` |
364
+ | `Senderstatistics` | `Statcounters` with `counter_source: "Sender"` |
365
+ | `Domainstatistics` | `Statistics_recipient_esp` |
366
+
367
+ ### Newsletters to campaign drafts
368
+
369
+ The `Campaigndraft` classes take the same calls as the `Newsletter` ones. `Sender` is the ID of a validated sender (see `Mailjet::Sender`).
370
+
371
+ ```ruby
372
+ draft = Mailjet::Campaigndraft.create(
373
+ "Locale" => "en_US",
374
+ "Title" => "October news",
375
+ "Subject" => "October news",
376
+ "Sender" => sender_id,
377
+ "SenderEmail" => "sender@example.com",
378
+ "ContactsListID" => contacts_list_id
379
+ )
380
+ Mailjet::Campaigndraft_detailcontent.create(id: draft.id, "Text-part" => "Hello", "Html-part" => "<p>Hello</p>")
381
+ Mailjet::Campaigndraft_send.create(id: draft.id)
382
+ ```
383
+
384
+ One call behaves differently: `Campaigndraft_detailcontent.find` returns an array, where `Newsletter_detailcontent.find` returned a single object.
385
+
386
+ ```ruby
387
+ # Before
388
+ content = Mailjet::Newsletter_detailcontent.find(newsletter_id)
389
+
390
+ # After
391
+ content = Mailjet::Campaigndraft_detailcontent.find(draft_id).first
392
+ ```
393
+
394
+ ### Legacy statistics to statcounters
395
+
396
+ `Statcounters` takes a source, a timing and a resolution. The `Day` and `Hour` resolutions also need a `from_ts`/`to_ts` range; without one the API answers 400.
397
+
398
+ ```ruby
399
+ # Before
400
+ Mailjet::Campaignstatistics.find(campaign_id)
401
+
402
+ # After
403
+ Mailjet::Statcounters.all(
404
+ source_id: campaign_id,
405
+ counter_source: "Campaign",
406
+ counter_timing: "Message",
407
+ counter_resolution: "Lifetime"
408
+ )
409
+
410
+ # Totals for your API key, replacing Apikeytotals
411
+ Mailjet::Statcounters.all(counter_source: "APIKey", counter_timing: "Message", counter_resolution: "Lifetime")
412
+
413
+ # Daily counts, replacing the graph statistics
414
+ Mailjet::Statcounters.all(
415
+ source_id: campaign_id,
416
+ counter_source: "Campaign",
417
+ counter_timing: "Message",
418
+ counter_resolution: "Day",
419
+ from_ts: Time.utc(2026, 10, 1).to_i,
420
+ to_ts: Time.utc(2026, 11, 1).to_i
421
+ )
422
+ ```
423
+
424
+ ### Domain statistics to recipient ESP statistics
425
+
426
+ `Statistics_recipient_esp` groups a campaign's statistics by recipient email service provider (Gmail, Microsoft and so on) rather than by domain, and it needs a campaign ID.
427
+
428
+ ```ruby
429
+ # Before
430
+ Mailjet::Domainstatistics.all
431
+
432
+ # After
433
+ Mailjet::Statistics_recipient_esp.all(campaign_id: campaign_id)
434
+ Mailjet::Statistics_recipient_esp.all(campaign_id: campaign_id, esp_name: "gmail")
435
+ ```
436
+
341
437
  ## Send emails with ActionMailer
342
438
 
343
439
  A quick walkthrough to use Rails Action Mailer [here](http://guides.rubyonrails.org/action_mailer_basics.html).
@@ -498,7 +594,7 @@ Mailjet::ContactPii.delete(contact_ID)
498
594
 
499
595
  You can setup your Rack application in order to receive feedback on emails you sent (clicks, etc.)
500
596
 
501
- First notify Mailjet of your desired endpoint (say: 'http://www.my_domain.com/mailjet/callback') at https://www.mailjet.com/account/triggers
597
+ First notify Mailjet of your desired endpoint (say: 'http://www.my_domain.com/mailjet/callback') at https://app.mailjet.com/account/triggers
502
598
 
503
599
  Then configure Mailjet's Rack application to catch these callbacks.
504
600
 
@@ -80,13 +80,14 @@ module Mailjet
80
80
  end
81
81
 
82
82
  def handle_exception(e, additional_headers, payload = {})
83
- return e.response_body if e.response_headers[:content_type].include?("text/plain")
83
+ response_content_type = e.response_headers&.[](:content_type) || ''
84
+ return e.response_body if response_content_type.include?("text/plain")
84
85
 
85
86
  params = additional_headers[:params] || {}
86
87
  formatted_payload = (additional_headers[:content_type] == :json) ? Yajl::Parser.parse(payload) : payload
87
88
  params = params.merge!(formatted_payload) if formatted_payload.is_a?(Hash)
88
89
 
89
- response_body = if e.response_headers[:content_type].include?("application/json")
90
+ response_body = if response_content_type.include?("application/json")
90
91
  e.response_body
91
92
  else
92
93
  "{}"
@@ -3,6 +3,7 @@ require 'yajl'
3
3
  require 'active_support'
4
4
  require 'active_support/core_ext/string'
5
5
  require 'active_support/core_ext/hash/indifferent_access'
6
+ require 'active_support/core_ext/object/blank'
6
7
 
7
8
 
8
9
 
@@ -23,12 +24,13 @@ module Mailjet
23
24
  def self.included(base)
24
25
  base.extend ClassMethods
25
26
  base.class_eval do
26
- cattr_accessor :resource_path, :public_operations, :read_only, :filters, :resourceprop, :read_only_attributes, :action, :non_json_urls, :version
27
+ cattr_accessor :resource_path, :public_operations, :read_only, :filters, :resourceprop, :read_only_attributes, :action, :non_json_urls, :version, :replaced_by
27
28
  cattr_writer :connection
28
29
 
29
30
  self.read_only_attributes = []
30
31
 
31
32
  def self.connection(options = {})
33
+ warn_if_deprecated
32
34
  class_variable_get(:@@connection) || default_connection(options)
33
35
  end
34
36
 
@@ -240,6 +242,8 @@ module Mailjet
240
242
  'Html-part'
241
243
  elsif key == "inline_attachments"
242
244
  'Inline_attachments'
245
+ elsif method == :camelcase && key.to_s == "esp_name"
246
+ 'ESP_Name'
243
247
  else
244
248
  key.to_s.send(method)
245
249
  end
@@ -258,6 +262,14 @@ module Mailjet
258
262
  .merge(options.symbolize_keys.slice(*OPTIONS))
259
263
  end
260
264
 
265
+ # deprecated resources set replaced_by and warn once, on first use
266
+ def warn_if_deprecated
267
+ return if replaced_by.nil? || @deprecation_warned
268
+
269
+ @deprecation_warned = true
270
+ Kernel.warn("[mailjet] #{name} is deprecated and will be removed in 2.0.0. Use #{replaced_by} instead.")
271
+ end
272
+
261
273
  end
262
274
 
263
275
  attr_accessor :attributes, :persisted
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/apikeytotals'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statcounters with counter_source: "APIKey"'
6
7
  self.filters = []
7
8
  self.resourceprop = [:blocked_count, :bounced_count, :clicked_count, :delivered_count, :last_activity, :opened_count, :processed_count, :queued_count, :spamcomplaint_count, :unsubscribed_count]
8
9
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/campaigngraphstatistics'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statcounters with counter_source: "Campaign"'
6
7
  self.filters = [:click, :ids, :open, :range, :spam, :unsub]
7
8
  self.resourceprop = [:click_count, :id, :opencount, :spamcount, :tick, :unsubcount]
8
9
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/campaignstatistics'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statcounters with counter_source: "Campaign"'
6
7
  self.filters = [:blocked, :bounced, :campaign_status, :click, :contacts_list, :from_type, :is_deleted, :is_starred, :last_activity_at, :max_last_activity_at, :min_last_activity_at, :news_letter, :open, :queued, :sender, :sent, :spam, :subject, :unsubscribed]
7
8
  self.resourceprop = [:blocked_count, :bounced_count, :campaign, :clicked_count, :delivered_count, :last_activity_at, :news_letter, :opened_count, :processed_count, :queued_count, :spam_complaint_count, :unsubscribed_count]
8
9
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/domainstatistics'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statistics_recipient_esp'
6
7
  self.filters = [:campaign_id, :campaign_status, :contacts_list, :custom_campaign, :from, :from_domain, :from_id, :from_ts, :from_type, :is_deleted, :is_newsletter_tool, :is_starred, :message_status, :period, :to_ts]
7
8
  self.resourceprop = [:blocked_count, :bounced_count, :clicked_count, :delivered_count, :domain, :id, :opened_count, :processed_count, :queued_count, :spam_complaint_count, :unsubscribed_count]
8
9
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/graphstatistics'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statcounters with counter_resolution: "Day" or "Hour"'
6
7
  self.filters = [:campaign_id, :campaign_status, :contact, :contacts_list, :custom_campaign, :from, :from_domain, :from_id, :from_ts, :from_type, :is_deleted, :is_newsletter_tool, :is_starred, :message_status, :period, :scale, :to_ts]
7
8
  self.resourceprop = [:blocked_count, :bounced_count, :clicked_count, :delivered_count, :opened_count, :processed_count, :queued_count, :ref_timestamp, :sendtime_start, :spamcomplaint_count, :unsubscribed_count]
8
9
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/liststatistics'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statcounters with counter_source: "List"'
6
7
  self.filters = [:address, :calc_active_unsub, :exclude_id, :is_deleted, :name]
7
8
  self.resourceprop = [:active_count, :active_unsubscribed_count, :address, :blocked_count, :bounced_count, :clicked_count, :created_at, :delivered_count, :id, :is_deleted, :last_activity_at, :name, :opened_count, :spam_complaint_count, :subscriber_count, :unsubscribed_count]
8
9
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/messagestatistics'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statcounters with counter_timing: "Message"'
6
7
  self.filters = [:campaign_id, :campaign_status, :contact_email, :contact_id, :custom_campaign, :from, :from_domain, :from_id, :from_ts, :from_type, :is_deleted, :is_newsletter_tool, :is_starred, :message_status, :period, :to_ts]
7
8
  self.resourceprop = [:average_click_delay, :average_clicked_count, :average_open_delay, :average_opened_count, :blocked_count, :bounced_count, :campaign_count, :clicked_count, :delivered_count, :opened_count, :processed_count, :queued_count, :spam_complaint_count, :transactional_count, :unsubscribed_count]
8
9
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/newsletter'
5
5
  self.public_operations = [:get, :put, :post]
6
+ self.replaced_by = 'Mailjet::Campaigndraft'
6
7
  self.filters = [:campaign, :contacts_list, :delivered_at, :edit_mode, :is_archived, :is_campaign, :is_deleted, :is_handled, :is_starred, :modified, :news_letter_template, :segmentation, :status, :subject]
7
8
  self.resourceprop = [:callback, :campaign, :contacts_list, :created_at, :delivered_at, :edit_mode, :edit_type, :footer, :footer_address, :footer_wysiwyg_type, :header_filename, :header_link, :header_text, :header_url, :id, :ip, :is_handled, :is_starred, :is_text_part_included, :locale, :modified_at, :permalink, :permalink_host, :permalink_wysiwyg_type, :politeness_mode, :reply_email, :segmentation, :segmentation_id, :sender, :sender_email, :sender_name, :status, :subject, :template, :test_address, :title, :url, 'CampaignID', 'CampaignALT', 'ContactsListID', 'ContactsListALT', 'SegmentationID', 'SegmentationALT', :contacts_list_id]
8
9
  end
@@ -4,6 +4,7 @@ module Mailjet
4
4
  self.action = "detailcontent"
5
5
  self.resource_path = "REST/newsletter/id/#{self.action}"
6
6
  self.public_operations = [:get, :post]
7
+ self.replaced_by = 'Mailjet::Campaigndraft_detailcontent'
7
8
  self.filters = []
8
9
  self.resourceprop = [:text_part, :html_part, :headers, :mjml_content]
9
10
 
@@ -4,6 +4,7 @@ module Mailjet
4
4
  self.action = "schedule"
5
5
  self.resource_path = "REST/newsletter/id/#{self.action}"
6
6
  self.public_operations = [:get, :post, :delete]
7
+ self.replaced_by = 'Mailjet::Campaigndraft_schedule'
7
8
  self.filters = []
8
9
  self.resourceprop = [:date]
9
10
 
@@ -4,6 +4,7 @@ module Mailjet
4
4
  self.action = "send"
5
5
  self.resource_path = "REST/newsletter/id/#{self.action}"
6
6
  self.public_operations = [:post]
7
+ self.replaced_by = 'Mailjet::Campaigndraft_send'
7
8
  self.filters = []
8
9
  self.resourceprop = []
9
10
  end
@@ -4,6 +4,7 @@ module Mailjet
4
4
  self.action = 'status'
5
5
  self.resource_path = "REST/newsletter/id/#{self.action}"
6
6
  self.public_operations = [:get]
7
+ self.replaced_by = 'Mailjet::Campaigndraft_status'
7
8
  self.filters = []
8
9
  self.resourceprop = []
9
10
 
@@ -4,6 +4,7 @@ module Mailjet
4
4
  self.action = "test"
5
5
  self.resource_path = "REST/newsletter/id/#{self.action}"
6
6
  self.public_operations = [:post]
7
+ self.replaced_by = 'Mailjet::Campaigndraft_test'
7
8
  self.filters = []
8
9
  self.resourceprop = [:email, :name]
9
10
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/openstatistics'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statcounters with counter_timing: "Message"'
6
7
  self.filters = [:campaign_id, :campaign_status, :contacts_list, :custom_campaign, :from, :from_domain, :from_id, :from_ts, :from_type, :is_deleted, :is_newsletter_tool, :is_starred, :message_status, :period, :to_ts]
7
8
  self.resourceprop = [:opened_count, :opened_delay, :processed_count]
8
9
 
@@ -3,6 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/senderstatistics'
5
5
  self.public_operations = [:get]
6
+ self.replaced_by = 'Mailjet::Statcounters with counter_source: "Sender"'
6
7
  self.filters = [:domain, :email, :sender]
7
8
  self.resourceprop = [:blocked_count, :bounced_count, :clicked_count, :delivered_count, :last_activity_at, :opened_count, :processed_count, :queued_count, :sender, :spam_complaint_count, :unsubscribed_count]
8
9
 
@@ -3,7 +3,7 @@ module Mailjet
3
3
  include Mailjet::Resource
4
4
  self.resource_path = 'REST/statcounters'
5
5
  self.public_operations = [:get]
6
- self.filters = [:source_id, :counter_resolution, :counter_source, :counter_timing]
6
+ self.filters = [:source_id, :counter_resolution, :counter_source, :counter_timing, :from_ts, :to_ts]
7
7
  self.resourceprop = [
8
8
  :api_key_id,
9
9
  :event_click_delay,
@@ -0,0 +1,30 @@
1
+ module Mailjet
2
+ class Statistics_recipient_esp
3
+ include Mailjet::Resource
4
+ self.resource_path = 'REST/statistics/recipient-esp'
5
+ self.public_operations = [:get]
6
+ self.filters = [:campaign_id, :esp_name]
7
+ self.resourceprop = [
8
+ :attempted_messages_count,
9
+ :click_through_rate,
10
+ :clicked_messages_count,
11
+ :deferred_messages_count,
12
+ :deferred_rate,
13
+ :delivered_messages_count,
14
+ :esp_name,
15
+ :hard_bounced_messages_count,
16
+ :hard_bounced_rate,
17
+ :open_rate,
18
+ :opened_messages_count,
19
+ :soft_bounced_messages_count,
20
+ :soft_bounced_rate,
21
+ :spam_reports_count,
22
+ :spam_reports_rate,
23
+ :unsubscribed_messages_count,
24
+ :unsubscribed_rate,
25
+ ]
26
+
27
+ self.read_only = true
28
+
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Mailjet
2
- VERSION = "1.8.2"
2
+ VERSION = "1.9.0"
3
3
  end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailjet
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Nappy
8
8
  - Jean-Baptiste Escoyez
9
9
  - Aurélien AMILIN
10
10
  - Benoit Bénézech
11
+ autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 1980-01-02 00:00:00.000000000 Z
14
+ date: 2026-10-23 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: activesupport
@@ -268,6 +269,7 @@ files:
268
269
  - lib/mailjet/resources/senderstatistics.rb
269
270
  - lib/mailjet/resources/statcounters.rb
270
271
  - lib/mailjet/resources/statistics_linkclick.rb
272
+ - lib/mailjet/resources/statistics_recipient_esp.rb
271
273
  - lib/mailjet/resources/template.rb
272
274
  - lib/mailjet/resources/template_detailcontent.rb
273
275
  - lib/mailjet/resources/toplinkclicked.rb
@@ -305,11 +307,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
305
307
  - !ruby/object:Gem::Version
306
308
  version: '0'
307
309
  requirements: []
308
- rubygems_version: 3.6.9
310
+ rubygems_version: 3.0.3.1
311
+ signing_key:
309
312
  specification_version: 4
310
313
  summary: Mailjet a powerful all-in-one email service provider clients can use to get
311
314
  maximum insight and deliverability results from both their marketing and transactional
312
315
  emails. Our analytics tools and intelligent APIs give senders the best understanding
313
316
  of how to maximize benefits for each individual contact, with each email sent.
314
317
  test_files: []
315
- ...