sendgrid-ruby 4.0.8 → 6.0.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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +21 -0
  3. data/.env_sample +1 -0
  4. data/.github/PULL_REQUEST_TEMPLATE +26 -0
  5. data/.gitignore +1 -0
  6. data/.travis.yml +11 -2
  7. data/CHANGELOG.md +119 -3
  8. data/CODE_OF_CONDUCT.md +41 -0
  9. data/CONTRIBUTING.md +34 -30
  10. data/Gemfile +4 -1
  11. data/LICENSE.txt +1 -1
  12. data/README.md +53 -24
  13. data/Rakefile +7 -2
  14. data/TROUBLESHOOTING.md +41 -15
  15. data/UPGRADE.md +5 -0
  16. data/USAGE.md +1130 -1129
  17. data/USE_CASES.md +280 -16
  18. data/config.ru +4 -0
  19. data/docker/Dockerfile +12 -0
  20. data/docker/README.md +30 -0
  21. data/examples/helpers/mail/example.rb +62 -45
  22. data/examples/helpers/settings/example.rb +23 -0
  23. data/examples/helpers/stats/example.rb +42 -0
  24. data/examples/ips/ips.rb +13 -0
  25. data/examples/mail/mail.rb +2 -2
  26. data/examples/scopes/scopes.rb +49 -3
  27. data/examples/{whitelabel/whitelabel.rb → senderauthentication/senderauthentication.rb} +27 -27
  28. data/examples/suppression/suppression.rb +10 -10
  29. data/gemfiles/Sinatra_1.gemfile +6 -0
  30. data/gemfiles/Sinatra_2.gemfile +6 -0
  31. data/lib/sendgrid-ruby.rb +27 -1
  32. data/lib/sendgrid/client.rb +12 -9
  33. data/lib/sendgrid/helpers/inbound/README.md +98 -0
  34. data/lib/sendgrid/helpers/inbound/app.rb +32 -0
  35. data/lib/sendgrid/helpers/inbound/config.yml +26 -0
  36. data/lib/sendgrid/helpers/inbound/public/index.html +10 -0
  37. data/lib/sendgrid/helpers/inbound/sample_data/default_data.txt +58 -0
  38. data/lib/sendgrid/helpers/inbound/sample_data/raw_data.txt +57 -0
  39. data/lib/sendgrid/helpers/inbound/sample_data/raw_data_with_attachments.txt +298 -0
  40. data/lib/sendgrid/helpers/inbound/send.rb +26 -0
  41. data/lib/sendgrid/helpers/ip_management/ip_management.rb +17 -0
  42. data/lib/sendgrid/helpers/mail/README.md +1 -1
  43. data/lib/sendgrid/helpers/mail/asm.rb +33 -0
  44. data/lib/sendgrid/helpers/mail/attachment.rb +86 -0
  45. data/lib/sendgrid/helpers/mail/bcc_settings.rb +33 -0
  46. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +43 -0
  47. data/lib/sendgrid/helpers/mail/category.rb +20 -0
  48. data/lib/sendgrid/helpers/mail/click_tracking.rb +33 -0
  49. data/lib/sendgrid/helpers/mail/content.rb +20 -0
  50. data/lib/sendgrid/helpers/mail/custom_arg.rb +24 -0
  51. data/lib/sendgrid/helpers/mail/email.rb +29 -0
  52. data/lib/sendgrid/helpers/mail/footer.rb +43 -0
  53. data/lib/sendgrid/helpers/mail/ganalytics.rb +74 -0
  54. data/lib/sendgrid/helpers/mail/header.rb +24 -0
  55. data/lib/sendgrid/helpers/mail/mail.rb +36 -895
  56. data/lib/sendgrid/helpers/mail/mail_settings.rb +63 -0
  57. data/lib/sendgrid/helpers/mail/open_tracking.rb +33 -0
  58. data/lib/sendgrid/helpers/mail/personalization.rb +82 -0
  59. data/lib/sendgrid/helpers/mail/section.rb +24 -0
  60. data/lib/sendgrid/helpers/mail/spam_check.rb +43 -0
  61. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +53 -0
  62. data/lib/sendgrid/helpers/mail/substitution.rb +24 -0
  63. data/lib/sendgrid/helpers/mail/tracking_settings.rb +53 -0
  64. data/lib/sendgrid/helpers/permissions/scope.rb +28 -0
  65. data/lib/sendgrid/helpers/permissions/scopes.yml +309 -0
  66. data/lib/sendgrid/helpers/settings/README.md +14 -0
  67. data/lib/sendgrid/helpers/settings/mail_settings_dto.rb +13 -0
  68. data/lib/sendgrid/helpers/settings/partner_settings_dto.rb +13 -0
  69. data/lib/sendgrid/helpers/settings/settings.rb +28 -0
  70. data/lib/sendgrid/helpers/settings/tracking_settings_dto.rb +24 -0
  71. data/lib/sendgrid/helpers/settings/user_settings_dto.rb +13 -0
  72. data/lib/sendgrid/helpers/stats/email_stats.rb +46 -0
  73. data/lib/sendgrid/helpers/stats/metrics.rb +35 -0
  74. data/lib/sendgrid/helpers/stats/stats_response.rb +31 -0
  75. data/lib/sendgrid/version.rb +2 -2
  76. data/mail_helper_v3.md +390 -0
  77. data/sendgrid-ruby.gemspec +12 -5
  78. data/spec/sendgrid/helpers/ip_management/ip_management_spec.rb +12 -0
  79. data/spec/sendgrid/helpers/settings/mail_settings_dto_spec.rb +32 -0
  80. data/spec/sendgrid/helpers/settings/partner_settings_dto_spec.rb +24 -0
  81. data/spec/sendgrid/helpers/settings/settings_spec.rb +25 -0
  82. data/spec/sendgrid/helpers/settings/tracking_settings_dto_spec.rb +27 -0
  83. data/spec/sendgrid/helpers/settings/user_settings_dto_spec.rb +24 -0
  84. data/spec/sendgrid/helpers/stats/email_stats_spec.rb +112 -0
  85. data/spec/sendgrid/helpers/stats/metrics_spec.rb +46 -0
  86. data/spec/sendgrid/helpers/stats/stats_response_spec.rb +76 -0
  87. data/spec/spec_helper.rb +10 -0
  88. data/test/sendgrid/helpers/mail/test_attachment.rb +35 -0
  89. data/test/sendgrid/helpers/mail/test_category.rb +27 -0
  90. data/test/sendgrid/helpers/mail/test_email.rb +34 -0
  91. data/test/sendgrid/helpers/mail/test_mail.rb +198 -59
  92. data/test/sendgrid/helpers/mail/test_personalizations.rb +161 -0
  93. data/test/sendgrid/permissions/test_scopes.rb +38 -0
  94. data/test/sendgrid/test_sendgrid-ruby.rb +90 -9
  95. metadata +170 -10
@@ -0,0 +1,63 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class MailSettings
5
+ def initialize
6
+ @bcc = nil
7
+ @bypass_list_management = nil
8
+ @footer = nil
9
+ @sandbox_mode = nil
10
+ @spam_check = nil
11
+ end
12
+
13
+ def sandbox_mode=(sandbox_mode)
14
+ @sandbox_mode = sandbox_mode
15
+ end
16
+
17
+ def sandbox_mode
18
+ @sandbox_mode.nil? ? nil : @sandbox_mode.to_json
19
+ end
20
+
21
+ def bypass_list_management=(bypass_list_management)
22
+ @bypass_list_management = bypass_list_management
23
+ end
24
+
25
+ def bypass_list_management
26
+ @bypass_list_management.nil? ? nil : @bypass_list_management.to_json
27
+ end
28
+
29
+ def footer=(footer)
30
+ @footer = footer
31
+ end
32
+
33
+ def footer
34
+ @footer.nil? ? nil : @footer.to_json
35
+ end
36
+
37
+ def bcc=(bcc)
38
+ @bcc = bcc
39
+ end
40
+
41
+ def bcc
42
+ @bcc.nil? ? nil : @bcc.to_json
43
+ end
44
+
45
+ def spam_check=(spam_check)
46
+ @spam_check = spam_check
47
+ end
48
+
49
+ def spam_check
50
+ @spam_check.nil? ? nil : @spam_check.to_json
51
+ end
52
+
53
+ def to_json(*)
54
+ {
55
+ 'bcc' => self.bcc,
56
+ 'bypass_list_management' => self.bypass_list_management,
57
+ 'footer' => self.footer,
58
+ 'sandbox_mode' => self.sandbox_mode,
59
+ 'spam_check' => self.spam_check
60
+ }.delete_if { |_, value| value.to_s.strip == '' }
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class OpenTracking
5
+ def initialize(enable: nil, substitution_tag: nil)
6
+ @enable = enable
7
+ @substitution_tag = substitution_tag
8
+ end
9
+
10
+ def enable=(enable)
11
+ @enable = enable
12
+ end
13
+
14
+ def enable
15
+ @enable
16
+ end
17
+
18
+ def substitution_tag=(substitution_tag)
19
+ @substitution_tag = substitution_tag
20
+ end
21
+
22
+ def substitution_tag
23
+ @substitution_tag
24
+ end
25
+
26
+ def to_json(*)
27
+ {
28
+ 'enable' => self.enable,
29
+ 'substitution_tag' => self.substitution_tag
30
+ }.delete_if { |_, value| value.to_s.strip == '' }
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,82 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class Personalization
5
+
6
+ attr_reader :tos, :ccs, :bccs, :headers, :substitutions, :custom_args,
7
+ :dynamic_template_data
8
+
9
+ def initialize
10
+ @tos = []
11
+ @ccs = []
12
+ @bccs = []
13
+ @subject = nil
14
+ @headers = {}
15
+ @substitutions = {}
16
+ @custom_args = {}
17
+ @dynamic_template_data = {}
18
+ @send_at = nil
19
+ end
20
+
21
+ def add_to(to)
22
+ @tos << to.to_json
23
+ end
24
+
25
+ def add_cc(cc)
26
+ @ccs << cc.to_json
27
+ end
28
+
29
+ def add_bcc(bcc)
30
+ @bccs << bcc.to_json
31
+ end
32
+
33
+ def subject=(subject)
34
+ @subject = subject
35
+ end
36
+
37
+ def subject
38
+ @subject
39
+ end
40
+
41
+ def add_header(header)
42
+ header = header.to_json
43
+ @headers = @headers.merge(header['header'])
44
+ end
45
+
46
+ def add_substitution(substitution)
47
+ substitution = substitution.to_json
48
+ @substitutions = @substitutions.merge(substitution['substitution'])
49
+ end
50
+
51
+ def add_custom_arg(custom_arg)
52
+ custom_arg = custom_arg.to_json
53
+ @custom_args = @custom_args.merge(custom_arg['custom_arg'])
54
+ end
55
+
56
+ def add_dynamic_template_data(dynamic_template_data)
57
+ @dynamic_template_data.merge!(dynamic_template_data)
58
+ end
59
+
60
+ def send_at=(send_at)
61
+ @send_at = send_at
62
+ end
63
+
64
+ def send_at
65
+ @send_at
66
+ end
67
+
68
+ def to_json(*)
69
+ {
70
+ 'to' => self.tos,
71
+ 'cc' => self.ccs,
72
+ 'bcc' => self.bccs,
73
+ 'subject' => self.subject,
74
+ 'headers' => self.headers,
75
+ 'substitutions' => self.substitutions,
76
+ 'custom_args' => self.custom_args,
77
+ 'dynamic_template_data' => self.dynamic_template_data,
78
+ 'send_at' => self.send_at
79
+ }.delete_if { |_, value| value.to_s.strip == '' || value == [] || value == {}}
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,24 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class Section
5
+ def initialize(key: nil, value: nil)
6
+ @section = {}
7
+ (key.nil? || value.nil?) ? @section = nil : @section[key] = value
8
+ end
9
+
10
+ def section=(section)
11
+ @section = section
12
+ end
13
+
14
+ def section
15
+ @section
16
+ end
17
+
18
+ def to_json(*)
19
+ {
20
+ 'section' => self.section
21
+ }.delete_if { |_, value| value.to_s.strip == '' }
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,43 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class SpamCheck
5
+ def initialize(enable: nil, threshold: nil, post_to_url: nil)
6
+ @enable = enable
7
+ @threshold = threshold
8
+ @post_to_url = post_to_url
9
+ end
10
+
11
+ def enable=(enable)
12
+ @enable = enable
13
+ end
14
+
15
+ def enable
16
+ @enable
17
+ end
18
+
19
+ def threshold=(threshold)
20
+ @threshold = threshold
21
+ end
22
+
23
+ def threshold
24
+ @threshold
25
+ end
26
+
27
+ def post_to_url=(post_to_url)
28
+ @post_to_url = post_to_url
29
+ end
30
+
31
+ def post_to_url
32
+ @post_to_url
33
+ end
34
+
35
+ def to_json(*)
36
+ {
37
+ 'enable' => self.enable,
38
+ 'threshold' => self.threshold,
39
+ 'post_to_url' => self.post_to_url
40
+ }.delete_if { |_, value| value.to_s.strip == '' }
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,53 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class SubscriptionTracking
5
+ def initialize(enable: nil, text: nil, html: nil, substitution_tag: nil)
6
+ @enable = enable
7
+ @text = text
8
+ @html = html
9
+ @substitution_tag = substitution_tag
10
+ end
11
+
12
+ def enable=(enable)
13
+ @enable = enable
14
+ end
15
+
16
+ def enable
17
+ @enable
18
+ end
19
+
20
+ def text=(text)
21
+ @text = text
22
+ end
23
+
24
+ def text
25
+ @text
26
+ end
27
+
28
+ def html=(html)
29
+ @html = html
30
+ end
31
+
32
+ def html
33
+ @html
34
+ end
35
+
36
+ def substitution_tag=(substitution_tag)
37
+ @substitution_tag = substitution_tag
38
+ end
39
+
40
+ def substitution_tag
41
+ @substitution_tag
42
+ end
43
+
44
+ def to_json(*)
45
+ {
46
+ 'enable' => self.enable,
47
+ 'text' => self.text,
48
+ 'html' => self.html,
49
+ 'substitution_tag' => self.substitution_tag
50
+ }.delete_if { |_, value| value.to_s.strip == '' }
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,24 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class Substitution
5
+ def initialize(key: nil, value: nil)
6
+ @substitution = {}
7
+ (key.nil? || value.nil?) ? @substitution = nil : @substitution[key] = value
8
+ end
9
+
10
+ def substitution=(substitution)
11
+ @substitution = substitution
12
+ end
13
+
14
+ def substitution
15
+ @substitution
16
+ end
17
+
18
+ def to_json(*)
19
+ {
20
+ 'substitution' => self.substitution
21
+ }.delete_if { |_, value| value.to_s.strip == '' }
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,53 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class TrackingSettings
5
+ def initialize
6
+ @click_tracking = nil
7
+ @open_tracking = nil
8
+ @subscription_tracking = nil
9
+ @ganalytics = nil
10
+ end
11
+
12
+ def click_tracking=(click_tracking)
13
+ @click_tracking = click_tracking
14
+ end
15
+
16
+ def click_tracking
17
+ @click_tracking.nil? ? nil : @click_tracking.to_json
18
+ end
19
+
20
+ def open_tracking=(open_tracking)
21
+ @open_tracking = open_tracking
22
+ end
23
+
24
+ def open_tracking
25
+ @open_tracking.nil? ? nil : @open_tracking.to_json
26
+ end
27
+
28
+ def subscription_tracking=(subscription_tracking)
29
+ @subscription_tracking = subscription_tracking
30
+ end
31
+
32
+ def subscription_tracking
33
+ @subscription_tracking.nil? ? nil : @subscription_tracking.to_json
34
+ end
35
+
36
+ def ganalytics=(ganalytics)
37
+ @ganalytics = ganalytics
38
+ end
39
+
40
+ def ganalytics
41
+ @ganalytics.nil? ? nil : @ganalytics.to_json
42
+ end
43
+
44
+ def to_json(*)
45
+ {
46
+ 'click_tracking' => self.click_tracking,
47
+ 'open_tracking' => self.open_tracking,
48
+ 'subscription_tracking' => self.subscription_tracking,
49
+ 'ganalytics' => self.ganalytics
50
+ }.delete_if { |_, value| value.to_s.strip == '' }
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,28 @@
1
+ # This is used for getting scopes
2
+ require 'yaml'
3
+
4
+ module SendGrid
5
+ class Scope
6
+ SCOPES = YAML.load_file(File.dirname(__FILE__) + '/scopes.yml').freeze
7
+
8
+ class << self
9
+ def admin_permissions
10
+ SCOPES.values.map(&:values).flatten
11
+ end
12
+
13
+ def read_only_permissions
14
+ SCOPES.map { |_, v| v[:read] }.flatten
15
+ end
16
+
17
+ SCOPES.each_key do |endpoint|
18
+ define_method "#{endpoint}_read_only_permissions" do
19
+ SCOPES[endpoint][:read]
20
+ end
21
+
22
+ define_method "#{endpoint}_full_access_permissions" do
23
+ SCOPES[endpoint].values.flatten
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,309 @@
1
+ ---
2
+ :alerts:
3
+ :create:
4
+ - alerts.create
5
+ :delete:
6
+ - alerts.delete
7
+ :read:
8
+ - alerts.read
9
+ :update:
10
+ - alerts.update
11
+ :api_keys:
12
+ :create:
13
+ - api_keys.create
14
+ :delete:
15
+ - api_keys.delete
16
+ :read:
17
+ - api_keys.read
18
+ :update:
19
+ - api_keys.update
20
+ :asm_groups:
21
+ :create:
22
+ - asm.groups.create
23
+ :delete:
24
+ - asm.groups.delete
25
+ :read:
26
+ - asm.groups.read
27
+ :update:
28
+ - asm.groups.update
29
+ :billing:
30
+ :create:
31
+ - billing.create
32
+ :delete:
33
+ - billing.delete
34
+ :read:
35
+ - billing.read
36
+ :update:
37
+ - billing.update
38
+ :categories:
39
+ :create:
40
+ - categories.create
41
+ :delete:
42
+ - categories.delete
43
+ :read:
44
+ - categories.read
45
+ - categories.stats.read
46
+ - categories.stats.sums.read
47
+ :update:
48
+ - categories.update
49
+ :credentials:
50
+ :create:
51
+ - credentials.create
52
+ :delete:
53
+ - credentials.delete
54
+ :read:
55
+ - credentials.read
56
+ :update:
57
+ - credentials.update
58
+ :stats:
59
+ :create: []
60
+ :delete: []
61
+ :read:
62
+ - email_activity.read
63
+ - stats.read
64
+ - stats.global.read
65
+ - browsers.stats.read
66
+ - devices.stats.read
67
+ - geo.stats.read
68
+ - mailbox_providers.stats.read
69
+ - clients.desktop.stats.read
70
+ - clients.phone.stats.read
71
+ - clients.stats.read
72
+ - clients.tablet.stats.read
73
+ - clients.webmail.stats.read
74
+ :update: []
75
+ :ips:
76
+ :create:
77
+ - ips.pools.create
78
+ - ips.pools.ips.create
79
+ - ips.warmup.create
80
+ :delete:
81
+ - ips.pools.delete
82
+ - ips.pools.ips.delete
83
+ - ips.warmup.delete
84
+ :read:
85
+ - ips.assigned.read
86
+ - ips.read
87
+ - ips.pools.read
88
+ - ips.pools.ips.read
89
+ - ips.warmup.read
90
+ :update:
91
+ - ips.pools.update
92
+ - ips.pools.ips.update
93
+ - ips.warmup.update
94
+ :mail_settings:
95
+ :create: []
96
+ :delete: []
97
+ :read:
98
+ - mail_settings.address_whitelist.read
99
+ - mail_settings.bcc.read
100
+ - mail_settings.bounce_purge.read
101
+ - mail_settings.footer.read
102
+ - mail_settings.forward_bounce.read
103
+ - mail_settings.forward_spam.read
104
+ - mail_settings.plain_content.read
105
+ - mail_settings.read
106
+ - mail_settings.spam_check.read
107
+ - mail_settings.template.read
108
+ :update:
109
+ - mail_settings.address_whitelist.update
110
+ - mail_settings.bcc.update
111
+ - mail_settings.bounce_purge.update
112
+ - mail_settings.footer.update
113
+ - mail_settings.forward_bounce.update
114
+ - mail_settings.forward_spam.update
115
+ - mail_settings.plain_content.update
116
+ - mail_settings.spam_check.update
117
+ - mail_settings.template.update
118
+ :mail:
119
+ :create:
120
+ - mail.send
121
+ - mail.batch.create
122
+ :delete:
123
+ - mail.batch.delete
124
+ :read:
125
+ - mail.batch.read
126
+ :update:
127
+ - mail.batch.update
128
+ :marketing_campaigns:
129
+ :create:
130
+ - marketing_campaigns.create
131
+ :delete:
132
+ - marketing_campaigns.delete
133
+ :read:
134
+ - marketing_campaigns.read
135
+ :update:
136
+ - marketing_campaigns.update
137
+ :partner_settings:
138
+ :create: []
139
+ :delete: []
140
+ :read:
141
+ - partner_settings.new_relic.read
142
+ - partner_settings.read
143
+ - partner_settings.sendwithus.read
144
+ :update:
145
+ - partner_settings.new_relic.update
146
+ - partner_settings.sendwithus.update
147
+ :scheduled_sends:
148
+ :create:
149
+ - user.scheduled_sends.create
150
+ :delete:
151
+ - user.scheduled_sends.delete
152
+ :read:
153
+ - user.scheduled_sends.read
154
+ :update:
155
+ - user.scheduled_sends.update
156
+ :subusers:
157
+ :create:
158
+ - subusers.create
159
+ - subusers.credits.create
160
+ - subusers.credits.remaining.create
161
+ - subusers.monitor.create
162
+ :delete:
163
+ - subusers.delete
164
+ - subusers.credits.delete
165
+ - subusers.credits.remaining.delete
166
+ - subusers.monitor.delete
167
+ :read:
168
+ - subusers.read
169
+ - subusers.credits.read
170
+ - subusers.stats.read
171
+ - subusers.credits.remaining.read
172
+ - subusers.monitor.read
173
+ - subusers.reputations.read
174
+ - subusers.stats.monthly.read
175
+ - subusers.stats.sums.read
176
+ - subusers.summary.read
177
+ :update:
178
+ - subusers.update
179
+ - subusers.credits.update
180
+ - subusers.credits.remaining.update
181
+ - subusers.monitor.update
182
+ :suppression:
183
+ :create:
184
+ - suppression.create
185
+ - suppression.bounces.create
186
+ - suppression.blocks.create
187
+ - suppression.invalid_emails.create
188
+ - suppression.spam_reports.create
189
+ - suppression.unsubscribes.create
190
+ :delete:
191
+ - suppression.delete
192
+ - suppression.bounces.delete
193
+ - suppression.blocks.delete
194
+ - suppression.invalid_emails.delete
195
+ - suppression.spam_reports.delete
196
+ - suppression.unsubscribes.delete
197
+ :read:
198
+ - suppression.read
199
+ - suppression.bounces.read
200
+ - suppression.blocks.read
201
+ - suppression.invalid_emails.read
202
+ - suppression.spam_reports.read
203
+ - suppression.unsubscribes.read
204
+ :update:
205
+ - suppression.update
206
+ - suppression.bounces.update
207
+ - suppression.blocks.update
208
+ - suppression.invalid_emails.update
209
+ - suppression.spam_reports.update
210
+ - suppression.unsubscribes.update
211
+ :teammates:
212
+ :create:
213
+ - teammates.create
214
+ :delete:
215
+ - teammates.delete
216
+ :read:
217
+ - teammates.read
218
+ :update:
219
+ - teammates.update
220
+ :templates:
221
+ :create:
222
+ - templates.create
223
+ - templates.versions.activate.create
224
+ - templates.versions.create
225
+ :delete:
226
+ - templates.delete
227
+ - templates.versions.activate.delete
228
+ - templates.versions.delete
229
+ :read:
230
+ - templates.read
231
+ - templates.versions.activate.read
232
+ - templates.versions.read
233
+ :update:
234
+ - templates.update
235
+ - templates.versions.activate.update
236
+ - templates.versions.update
237
+ :tracking_settings:
238
+ :create: []
239
+ :delete: []
240
+ :read:
241
+ - tracking_settings.click.read
242
+ - tracking_settings.google_analytics.read
243
+ - tracking_settings.open.read
244
+ - tracking_settings.read
245
+ - tracking_settings.subscription.read
246
+ :update:
247
+ - tracking_settings.click.update
248
+ - tracking_settings.google_analytics.update
249
+ - tracking_settings.open.update
250
+ - tracking_settings.subscription.update
251
+ :user_settings:
252
+ :create:
253
+ - user.email.create
254
+ - user.multifactor_authentication.create
255
+ :delete:
256
+ - user.email.delete
257
+ - user.multifactor_authentication.delete
258
+ :read:
259
+ - user.account.read
260
+ - user.credits.read
261
+ - user.email.read
262
+ - user.multifactor_authentication.read
263
+ - user.password.read
264
+ - user.profile.read
265
+ - user.timezone.read
266
+ - user.settings.enforced_tls.read
267
+ - user.username.read
268
+ :update:
269
+ - user.email.update
270
+ - user.multifactor_authentication.update
271
+ - user.password.update
272
+ - user.profile.update
273
+ - user.settings.enforced_tls.update
274
+ - user.timezone.update
275
+ - user.username.update
276
+ :webhooks:
277
+ :create:
278
+ - user.webhooks.event.test.create
279
+ - user.webhooks.parse.settings.create
280
+ :delete:
281
+ - user.webhooks.parse.settings.delete
282
+ :read:
283
+ - user.webhooks.event.settings.read
284
+ - user.webhooks.event.test.read
285
+ - user.webhooks.parse.settings.read
286
+ - user.webhooks.parse.stats.read
287
+ :update:
288
+ - user.webhooks.event.settings.update
289
+ - user.webhooks.event.test.update
290
+ - user.webhooks.parse.settings.update
291
+ :whitelabel:
292
+ :create:
293
+ - whitelabel.create
294
+ :delete:
295
+ - whitelabel.delete
296
+ :read:
297
+ - whitelabel.read
298
+ :update:
299
+ - whitelabel.update
300
+ :access_settings:
301
+ :create:
302
+ - access_settings.whitelist.create
303
+ :delete:
304
+ - access_settings.whitelist.delete
305
+ :read:
306
+ - access_settings.activity.read
307
+ - access_settings.whitelist.read
308
+ :update:
309
+ - access_settings.whitelist.update