mailslurp_client 8.0.8 → 8.0.13

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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +7 -0
  3. data/README.md +123 -0
  4. data/SECURITY.md +4 -0
  5. data/SUPPORT.md +4 -0
  6. data/lib/mailslurp_client/api/alias_controller_api.rb +405 -0
  7. data/lib/mailslurp_client/api/attachment_controller_api.rb +160 -0
  8. data/lib/mailslurp_client/api/bulk_actions_controller_api.rb +203 -0
  9. data/lib/mailslurp_client/api/common_actions_controller_api.rb +257 -0
  10. data/lib/mailslurp_client/api/contact_controller_api.rb +323 -0
  11. data/lib/mailslurp_client/api/domain_controller_api.rb +264 -0
  12. data/lib/mailslurp_client/api/email_controller_api.rb +852 -0
  13. data/lib/mailslurp_client/api/form_controller_api.rb +104 -0
  14. data/lib/mailslurp_client/api/group_controller_api.rb +592 -0
  15. data/lib/mailslurp_client/api/inbox_controller_api.rb +897 -0
  16. data/lib/mailslurp_client/api/mail_server_controller_api.rb +146 -0
  17. data/lib/mailslurp_client/api/sent_emails_controller_api.rb +152 -0
  18. data/lib/mailslurp_client/api/template_controller_api.rb +323 -0
  19. data/lib/mailslurp_client/api/wait_for_controller_api.rb +359 -0
  20. data/lib/mailslurp_client/api/webhook_controller_api.rb +405 -0
  21. data/lib/mailslurp_client/api_client.rb +388 -0
  22. data/lib/mailslurp_client/api_error.rb +57 -0
  23. data/lib/mailslurp_client/configuration.rb +248 -0
  24. data/lib/mailslurp_client/models/attachment_meta_data.rb +238 -0
  25. data/lib/mailslurp_client/models/basic_auth_options.rb +226 -0
  26. data/lib/mailslurp_client/models/bulk_send_email_options.rb +219 -0
  27. data/lib/mailslurp_client/models/contact_dto.rb +311 -0
  28. data/lib/mailslurp_client/models/contact_projection.rb +270 -0
  29. data/lib/mailslurp_client/models/create_anonymous_alias_options.rb +208 -0
  30. data/lib/mailslurp_client/models/create_contact_options.rb +277 -0
  31. data/lib/mailslurp_client/models/create_domain_options.rb +208 -0
  32. data/lib/mailslurp_client/models/create_group_options.rb +220 -0
  33. data/lib/mailslurp_client/models/create_owned_alias_options.rb +238 -0
  34. data/lib/mailslurp_client/models/create_template_options.rb +225 -0
  35. data/lib/mailslurp_client/models/create_webhook_options.rb +227 -0
  36. data/lib/mailslurp_client/models/describe_domain_options.rb +211 -0
  37. data/lib/mailslurp_client/models/describe_mail_server_domain_result.rb +237 -0
  38. data/lib/mailslurp_client/models/domain_dto.rb +296 -0
  39. data/lib/mailslurp_client/models/domain_preview.rb +240 -0
  40. data/lib/mailslurp_client/models/email.rb +386 -0
  41. data/lib/mailslurp_client/models/email_analysis.rb +248 -0
  42. data/lib/mailslurp_client/models/email_preview.rb +296 -0
  43. data/lib/mailslurp_client/models/email_projection.rb +325 -0
  44. data/lib/mailslurp_client/models/email_verification_result.rb +263 -0
  45. data/lib/mailslurp_client/models/forward_email_options.rb +244 -0
  46. data/lib/mailslurp_client/models/group_contacts_dto.rb +227 -0
  47. data/lib/mailslurp_client/models/group_dto.rb +248 -0
  48. data/lib/mailslurp_client/models/group_projection.rb +248 -0
  49. data/lib/mailslurp_client/models/html_validation_result.rb +244 -0
  50. data/lib/mailslurp_client/models/inbox.rb +290 -0
  51. data/lib/mailslurp_client/models/inbox_projection.rb +263 -0
  52. data/lib/mailslurp_client/models/match_option.rb +274 -0
  53. data/lib/mailslurp_client/models/match_options.rb +210 -0
  54. data/lib/mailslurp_client/models/model_alias.rb +284 -0
  55. data/lib/mailslurp_client/models/name_server_record.rb +254 -0
  56. data/lib/mailslurp_client/models/page_alias.rb +298 -0
  57. data/lib/mailslurp_client/models/page_contact_projection.rb +298 -0
  58. data/lib/mailslurp_client/models/page_email_preview.rb +298 -0
  59. data/lib/mailslurp_client/models/page_email_projection.rb +298 -0
  60. data/lib/mailslurp_client/models/page_group_projection.rb +298 -0
  61. data/lib/mailslurp_client/models/page_inbox_projection.rb +298 -0
  62. data/lib/mailslurp_client/models/page_sent_email_projection.rb +298 -0
  63. data/lib/mailslurp_client/models/page_template_projection.rb +298 -0
  64. data/lib/mailslurp_client/models/page_webhook_projection.rb +298 -0
  65. data/lib/mailslurp_client/models/pageable.rb +251 -0
  66. data/lib/mailslurp_client/models/raw_email_json.rb +211 -0
  67. data/lib/mailslurp_client/models/send_email_options.rb +392 -0
  68. data/lib/mailslurp_client/models/sent_email_dto.rb +351 -0
  69. data/lib/mailslurp_client/models/sent_email_projection.rb +344 -0
  70. data/lib/mailslurp_client/models/set_inbox_favourited_options.rb +208 -0
  71. data/lib/mailslurp_client/models/simple_send_email_options.rb +237 -0
  72. data/lib/mailslurp_client/models/sort.rb +224 -0
  73. data/lib/mailslurp_client/models/template_dto.rb +269 -0
  74. data/lib/mailslurp_client/models/template_projection.rb +269 -0
  75. data/lib/mailslurp_client/models/template_variable.rb +259 -0
  76. data/lib/mailslurp_client/models/unread_count.rb +211 -0
  77. data/lib/mailslurp_client/models/update_group_contacts.rb +213 -0
  78. data/lib/mailslurp_client/models/update_inbox_options.rb +250 -0
  79. data/lib/mailslurp_client/models/upload_attachment_options.rb +228 -0
  80. data/lib/mailslurp_client/models/validation_dto.rb +217 -0
  81. data/lib/mailslurp_client/models/validation_message.rb +220 -0
  82. data/lib/mailslurp_client/models/verify_email_address_options.rb +239 -0
  83. data/lib/mailslurp_client/models/wait_for_conditions.rb +316 -0
  84. data/lib/mailslurp_client/models/webhook_dto.rb +326 -0
  85. data/lib/mailslurp_client/models/webhook_projection.rb +277 -0
  86. data/lib/mailslurp_client/models/webhook_test_request.rb +284 -0
  87. data/lib/mailslurp_client/models/webhook_test_response.rb +215 -0
  88. data/lib/mailslurp_client/models/webhook_test_result.rb +235 -0
  89. data/lib/mailslurp_client/version.rb +15 -0
  90. metadata +90 -2
@@ -0,0 +1,392 @@
1
+ =begin
2
+ #MailSlurp API
3
+
4
+ #MailSlurp is an API for sending and receiving emails from dynamically allocated email addresses. It's designed for developers and QA teams to test applications, process inbound emails, send templated notifications, attachments, and more. ## Resources - [Homepage](https://www.mailslurp.com) - Get an [API KEY](https://app.mailslurp.com/sign-up/) - Generated [SDK Clients](https://www.mailslurp.com/docs/) - [Examples](https://github.com/mailslurp/examples) repository
5
+
6
+ The version of the OpenAPI document: 6.5.2
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module MailSlurpClient
16
+ # Options for sending an email message from an inbox. You must provide one of: `to`, `toGroup`, or `toContacts` to send an email. All other parameters are optional.
17
+ class SendEmailOptions
18
+ # Optional list of attachment IDs to send with this email. You must first upload each attachment separately in order to obtain attachment IDs. This way you can reuse attachments with different emails once uploaded.
19
+ attr_accessor :attachments
20
+
21
+ # Optional list of bcc destination email addresses
22
+ attr_accessor :bcc
23
+
24
+ # Optional contents of email. If body contains HTML then set `isHTML` to true to ensure that email clients render it correctly. You can use moustache template syntax in the email body in conjunction with `toGroup` contact variables or `templateVariables` data. If you need more templating control consider creating a template and using the `template` property instead of the body.
25
+ attr_accessor :body
26
+
27
+ # Optional list of cc destination email addresses
28
+ attr_accessor :cc
29
+
30
+ # Optional charset
31
+ attr_accessor :charset
32
+
33
+ # Optional from address. If not set the source inbox address will be used for this field. Beware of potential spam penalties when setting this field to an address not used by the inbox. For custom email addresses use a custom domain.
34
+ attr_accessor :from
35
+
36
+ # Optional HTML flag. If true the `content-type` of the email will be `text/html`. Set to true when sending HTML to ensure proper rending on email clients
37
+ attr_accessor :is_html
38
+
39
+ # Optional replyTo header
40
+ attr_accessor :reply_to
41
+
42
+ # Optional strategy to use when sending the email
43
+ attr_accessor :send_strategy
44
+
45
+ # Optional email subject line
46
+ attr_accessor :subject
47
+
48
+ # Optional template ID to use for body. Will override body if provided. When using a template make sure you pass the corresponding map of `templateVariables`. You can find which variables are needed by fetching the template itself or viewing it in the dashboard.
49
+ attr_accessor :template
50
+
51
+ # Optional map of template variables. Will replace moustache syntax variables in subject and body or template with the associated values if found.
52
+ attr_accessor :template_variables
53
+
54
+ # List of destination email addresses. Even single recipients must be in array form. Maximum recipients per email depends on your plan. If you need to send many emails try using contacts or contact groups or use a non standard sendStrategy to ensure that spam filters are not triggered (many recipients in one email can affect your spam rating).
55
+ attr_accessor :to
56
+
57
+ # Optional list of contact IDs to send email to. Manage your contacts via the API or dashboard. When contacts are used the email is sent to each contact separately so they will not see other recipients.
58
+ attr_accessor :to_contacts
59
+
60
+ # Optional contact group ID to send email to. You can create contacts and contact groups in the API or dashboard and use them for email campaigns. When contact groups are used the email is sent to each contact separately so they will not see other recipients
61
+ attr_accessor :to_group
62
+
63
+ class EnumAttributeValidator
64
+ attr_reader :datatype
65
+ attr_reader :allowable_values
66
+
67
+ def initialize(datatype, allowable_values)
68
+ @allowable_values = allowable_values.map do |value|
69
+ case datatype.to_s
70
+ when /Integer/i
71
+ value.to_i
72
+ when /Float/i
73
+ value.to_f
74
+ else
75
+ value
76
+ end
77
+ end
78
+ end
79
+
80
+ def valid?(value)
81
+ !value || allowable_values.include?(value)
82
+ end
83
+ end
84
+
85
+ # Attribute mapping from ruby-style variable name to JSON key.
86
+ def self.attribute_map
87
+ {
88
+ :'attachments' => :'attachments',
89
+ :'bcc' => :'bcc',
90
+ :'body' => :'body',
91
+ :'cc' => :'cc',
92
+ :'charset' => :'charset',
93
+ :'from' => :'from',
94
+ :'is_html' => :'isHTML',
95
+ :'reply_to' => :'replyTo',
96
+ :'send_strategy' => :'sendStrategy',
97
+ :'subject' => :'subject',
98
+ :'template' => :'template',
99
+ :'template_variables' => :'templateVariables',
100
+ :'to' => :'to',
101
+ :'to_contacts' => :'toContacts',
102
+ :'to_group' => :'toGroup'
103
+ }
104
+ end
105
+
106
+ # Attribute type mapping.
107
+ def self.openapi_types
108
+ {
109
+ :'attachments' => :'Array<String>',
110
+ :'bcc' => :'Array<String>',
111
+ :'body' => :'String',
112
+ :'cc' => :'Array<String>',
113
+ :'charset' => :'String',
114
+ :'from' => :'String',
115
+ :'is_html' => :'Boolean',
116
+ :'reply_to' => :'String',
117
+ :'send_strategy' => :'String',
118
+ :'subject' => :'String',
119
+ :'template' => :'String',
120
+ :'template_variables' => :'Object',
121
+ :'to' => :'Array<String>',
122
+ :'to_contacts' => :'Array<String>',
123
+ :'to_group' => :'String'
124
+ }
125
+ end
126
+
127
+ # List of attributes with nullable: true
128
+ def self.openapi_nullable
129
+ Set.new([
130
+ ])
131
+ end
132
+
133
+ # Initializes the object
134
+ # @param [Hash] attributes Model attributes in the form of hash
135
+ def initialize(attributes = {})
136
+ if (!attributes.is_a?(Hash))
137
+ fail ArgumentError, "The input argument (attributes) must be a hash in `MailSlurpClient::SendEmailOptions` initialize method"
138
+ end
139
+
140
+ # check to see if the attribute exists and convert string to symbol for hash key
141
+ attributes = attributes.each_with_object({}) { |(k, v), h|
142
+ if (!self.class.attribute_map.key?(k.to_sym))
143
+ fail ArgumentError, "`#{k}` is not a valid attribute in `MailSlurpClient::SendEmailOptions`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
144
+ end
145
+ h[k.to_sym] = v
146
+ }
147
+
148
+ if attributes.key?(:'attachments')
149
+ if (value = attributes[:'attachments']).is_a?(Array)
150
+ self.attachments = value
151
+ end
152
+ end
153
+
154
+ if attributes.key?(:'bcc')
155
+ if (value = attributes[:'bcc']).is_a?(Array)
156
+ self.bcc = value
157
+ end
158
+ end
159
+
160
+ if attributes.key?(:'body')
161
+ self.body = attributes[:'body']
162
+ end
163
+
164
+ if attributes.key?(:'cc')
165
+ if (value = attributes[:'cc']).is_a?(Array)
166
+ self.cc = value
167
+ end
168
+ end
169
+
170
+ if attributes.key?(:'charset')
171
+ self.charset = attributes[:'charset']
172
+ end
173
+
174
+ if attributes.key?(:'from')
175
+ self.from = attributes[:'from']
176
+ end
177
+
178
+ if attributes.key?(:'is_html')
179
+ self.is_html = attributes[:'is_html']
180
+ end
181
+
182
+ if attributes.key?(:'reply_to')
183
+ self.reply_to = attributes[:'reply_to']
184
+ end
185
+
186
+ if attributes.key?(:'send_strategy')
187
+ self.send_strategy = attributes[:'send_strategy']
188
+ end
189
+
190
+ if attributes.key?(:'subject')
191
+ self.subject = attributes[:'subject']
192
+ end
193
+
194
+ if attributes.key?(:'template')
195
+ self.template = attributes[:'template']
196
+ end
197
+
198
+ if attributes.key?(:'template_variables')
199
+ self.template_variables = attributes[:'template_variables']
200
+ end
201
+
202
+ if attributes.key?(:'to')
203
+ if (value = attributes[:'to']).is_a?(Array)
204
+ self.to = value
205
+ end
206
+ end
207
+
208
+ if attributes.key?(:'to_contacts')
209
+ if (value = attributes[:'to_contacts']).is_a?(Array)
210
+ self.to_contacts = value
211
+ end
212
+ end
213
+
214
+ if attributes.key?(:'to_group')
215
+ self.to_group = attributes[:'to_group']
216
+ end
217
+ end
218
+
219
+ # Show invalid properties with the reasons. Usually used together with valid?
220
+ # @return Array for valid properties with the reasons
221
+ def list_invalid_properties
222
+ invalid_properties = Array.new
223
+ invalid_properties
224
+ end
225
+
226
+ # Check to see if the all the properties in the model are valid
227
+ # @return true if the model is valid
228
+ def valid?
229
+ send_strategy_validator = EnumAttributeValidator.new('String', ["SINGLE_MESSAGE"])
230
+ return false unless send_strategy_validator.valid?(@send_strategy)
231
+ true
232
+ end
233
+
234
+ # Custom attribute writer method checking allowed values (enum).
235
+ # @param [Object] send_strategy Object to be assigned
236
+ def send_strategy=(send_strategy)
237
+ validator = EnumAttributeValidator.new('String', ["SINGLE_MESSAGE"])
238
+ unless validator.valid?(send_strategy)
239
+ fail ArgumentError, "invalid value for \"send_strategy\", must be one of #{validator.allowable_values}."
240
+ end
241
+ @send_strategy = send_strategy
242
+ end
243
+
244
+ # Checks equality by comparing each attribute.
245
+ # @param [Object] Object to be compared
246
+ def ==(o)
247
+ return true if self.equal?(o)
248
+ self.class == o.class &&
249
+ attachments == o.attachments &&
250
+ bcc == o.bcc &&
251
+ body == o.body &&
252
+ cc == o.cc &&
253
+ charset == o.charset &&
254
+ from == o.from &&
255
+ is_html == o.is_html &&
256
+ reply_to == o.reply_to &&
257
+ send_strategy == o.send_strategy &&
258
+ subject == o.subject &&
259
+ template == o.template &&
260
+ template_variables == o.template_variables &&
261
+ to == o.to &&
262
+ to_contacts == o.to_contacts &&
263
+ to_group == o.to_group
264
+ end
265
+
266
+ # @see the `==` method
267
+ # @param [Object] Object to be compared
268
+ def eql?(o)
269
+ self == o
270
+ end
271
+
272
+ # Calculates hash code according to all attributes.
273
+ # @return [Integer] Hash code
274
+ def hash
275
+ [attachments, bcc, body, cc, charset, from, is_html, reply_to, send_strategy, subject, template, template_variables, to, to_contacts, to_group].hash
276
+ end
277
+
278
+ # Builds the object from hash
279
+ # @param [Hash] attributes Model attributes in the form of hash
280
+ # @return [Object] Returns the model itself
281
+ def self.build_from_hash(attributes)
282
+ new.build_from_hash(attributes)
283
+ end
284
+
285
+ # Builds the object from hash
286
+ # @param [Hash] attributes Model attributes in the form of hash
287
+ # @return [Object] Returns the model itself
288
+ def build_from_hash(attributes)
289
+ return nil unless attributes.is_a?(Hash)
290
+ self.class.openapi_types.each_pair do |key, type|
291
+ if type =~ /\AArray<(.*)>/i
292
+ # check to ensure the input is an array given that the attribute
293
+ # is documented as an array but the input is not
294
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
295
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
296
+ end
297
+ elsif !attributes[self.class.attribute_map[key]].nil?
298
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
299
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
300
+ end
301
+
302
+ self
303
+ end
304
+
305
+ # Deserializes the data based on type
306
+ # @param string type Data type
307
+ # @param string value Value to be deserialized
308
+ # @return [Object] Deserialized data
309
+ def _deserialize(type, value)
310
+ case type.to_sym
311
+ when :DateTime
312
+ DateTime.parse(value)
313
+ when :Date
314
+ Date.parse(value)
315
+ when :String
316
+ value.to_s
317
+ when :Integer
318
+ value.to_i
319
+ when :Float
320
+ value.to_f
321
+ when :Boolean
322
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
323
+ true
324
+ else
325
+ false
326
+ end
327
+ when :Object
328
+ # generic object (usually a Hash), return directly
329
+ value
330
+ when /\AArray<(?<inner_type>.+)>\z/
331
+ inner_type = Regexp.last_match[:inner_type]
332
+ value.map { |v| _deserialize(inner_type, v) }
333
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
334
+ k_type = Regexp.last_match[:k_type]
335
+ v_type = Regexp.last_match[:v_type]
336
+ {}.tap do |hash|
337
+ value.each do |k, v|
338
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
339
+ end
340
+ end
341
+ else # model
342
+ MailSlurpClient.const_get(type).build_from_hash(value)
343
+ end
344
+ end
345
+
346
+ # Returns the string representation of the object
347
+ # @return [String] String presentation of the object
348
+ def to_s
349
+ to_hash.to_s
350
+ end
351
+
352
+ # to_body is an alias to to_hash (backward compatibility)
353
+ # @return [Hash] Returns the object in the form of hash
354
+ def to_body
355
+ to_hash
356
+ end
357
+
358
+ # Returns the object in the form of hash
359
+ # @return [Hash] Returns the object in the form of hash
360
+ def to_hash
361
+ hash = {}
362
+ self.class.attribute_map.each_pair do |attr, param|
363
+ value = self.send(attr)
364
+ if value.nil?
365
+ is_nullable = self.class.openapi_nullable.include?(attr)
366
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
367
+ end
368
+
369
+ hash[param] = _to_hash(value)
370
+ end
371
+ hash
372
+ end
373
+
374
+ # Outputs non-array value in the form of hash
375
+ # For object, use to_hash. Otherwise, just return the value
376
+ # @param [Object] value Any valid value
377
+ # @return [Hash] Returns the value in the form of hash
378
+ def _to_hash(value)
379
+ if value.is_a?(Array)
380
+ value.compact.map { |v| _to_hash(v) }
381
+ elsif value.is_a?(Hash)
382
+ {}.tap do |hash|
383
+ value.each { |k, v| hash[k] = _to_hash(v) }
384
+ end
385
+ elsif value.respond_to? :to_hash
386
+ value.to_hash
387
+ else
388
+ value
389
+ end
390
+ end
391
+ end
392
+ end
@@ -0,0 +1,351 @@
1
+ =begin
2
+ #MailSlurp API
3
+
4
+ #MailSlurp is an API for sending and receiving emails from dynamically allocated email addresses. It's designed for developers and QA teams to test applications, process inbound emails, send templated notifications, attachments, and more. ## Resources - [Homepage](https://www.mailslurp.com) - Get an [API KEY](https://app.mailslurp.com/sign-up/) - Generated [SDK Clients](https://www.mailslurp.com/docs/) - [Examples](https://github.com/mailslurp/examples) repository
5
+
6
+ The version of the OpenAPI document: 6.5.2
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module MailSlurpClient
16
+ class SentEmailDto
17
+ attr_accessor :attachments
18
+
19
+ attr_accessor :bcc
20
+
21
+ attr_accessor :body
22
+
23
+ attr_accessor :body_md5_hash
24
+
25
+ attr_accessor :cc
26
+
27
+ attr_accessor :charset
28
+
29
+ attr_accessor :from
30
+
31
+ attr_accessor :id
32
+
33
+ attr_accessor :inbox_id
34
+
35
+ attr_accessor :is_html
36
+
37
+ attr_accessor :sent_at
38
+
39
+ attr_accessor :subject
40
+
41
+ attr_accessor :to
42
+
43
+ attr_accessor :user_id
44
+
45
+ # Attribute mapping from ruby-style variable name to JSON key.
46
+ def self.attribute_map
47
+ {
48
+ :'attachments' => :'attachments',
49
+ :'bcc' => :'bcc',
50
+ :'body' => :'body',
51
+ :'body_md5_hash' => :'bodyMD5Hash',
52
+ :'cc' => :'cc',
53
+ :'charset' => :'charset',
54
+ :'from' => :'from',
55
+ :'id' => :'id',
56
+ :'inbox_id' => :'inboxId',
57
+ :'is_html' => :'isHTML',
58
+ :'sent_at' => :'sentAt',
59
+ :'subject' => :'subject',
60
+ :'to' => :'to',
61
+ :'user_id' => :'userId'
62
+ }
63
+ end
64
+
65
+ # Attribute type mapping.
66
+ def self.openapi_types
67
+ {
68
+ :'attachments' => :'Array<String>',
69
+ :'bcc' => :'Array<String>',
70
+ :'body' => :'String',
71
+ :'body_md5_hash' => :'String',
72
+ :'cc' => :'Array<String>',
73
+ :'charset' => :'String',
74
+ :'from' => :'String',
75
+ :'id' => :'String',
76
+ :'inbox_id' => :'String',
77
+ :'is_html' => :'Boolean',
78
+ :'sent_at' => :'DateTime',
79
+ :'subject' => :'String',
80
+ :'to' => :'Array<String>',
81
+ :'user_id' => :'String'
82
+ }
83
+ end
84
+
85
+ # List of attributes with nullable: true
86
+ def self.openapi_nullable
87
+ Set.new([
88
+ ])
89
+ end
90
+
91
+ # Initializes the object
92
+ # @param [Hash] attributes Model attributes in the form of hash
93
+ def initialize(attributes = {})
94
+ if (!attributes.is_a?(Hash))
95
+ fail ArgumentError, "The input argument (attributes) must be a hash in `MailSlurpClient::SentEmailDto` initialize method"
96
+ end
97
+
98
+ # check to see if the attribute exists and convert string to symbol for hash key
99
+ attributes = attributes.each_with_object({}) { |(k, v), h|
100
+ if (!self.class.attribute_map.key?(k.to_sym))
101
+ fail ArgumentError, "`#{k}` is not a valid attribute in `MailSlurpClient::SentEmailDto`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
102
+ end
103
+ h[k.to_sym] = v
104
+ }
105
+
106
+ if attributes.key?(:'attachments')
107
+ if (value = attributes[:'attachments']).is_a?(Array)
108
+ self.attachments = value
109
+ end
110
+ end
111
+
112
+ if attributes.key?(:'bcc')
113
+ if (value = attributes[:'bcc']).is_a?(Array)
114
+ self.bcc = value
115
+ end
116
+ end
117
+
118
+ if attributes.key?(:'body')
119
+ self.body = attributes[:'body']
120
+ end
121
+
122
+ if attributes.key?(:'body_md5_hash')
123
+ self.body_md5_hash = attributes[:'body_md5_hash']
124
+ end
125
+
126
+ if attributes.key?(:'cc')
127
+ if (value = attributes[:'cc']).is_a?(Array)
128
+ self.cc = value
129
+ end
130
+ end
131
+
132
+ if attributes.key?(:'charset')
133
+ self.charset = attributes[:'charset']
134
+ end
135
+
136
+ if attributes.key?(:'from')
137
+ self.from = attributes[:'from']
138
+ end
139
+
140
+ if attributes.key?(:'id')
141
+ self.id = attributes[:'id']
142
+ end
143
+
144
+ if attributes.key?(:'inbox_id')
145
+ self.inbox_id = attributes[:'inbox_id']
146
+ end
147
+
148
+ if attributes.key?(:'is_html')
149
+ self.is_html = attributes[:'is_html']
150
+ end
151
+
152
+ if attributes.key?(:'sent_at')
153
+ self.sent_at = attributes[:'sent_at']
154
+ end
155
+
156
+ if attributes.key?(:'subject')
157
+ self.subject = attributes[:'subject']
158
+ end
159
+
160
+ if attributes.key?(:'to')
161
+ if (value = attributes[:'to']).is_a?(Array)
162
+ self.to = value
163
+ end
164
+ end
165
+
166
+ if attributes.key?(:'user_id')
167
+ self.user_id = attributes[:'user_id']
168
+ end
169
+ end
170
+
171
+ # Show invalid properties with the reasons. Usually used together with valid?
172
+ # @return Array for valid properties with the reasons
173
+ def list_invalid_properties
174
+ invalid_properties = Array.new
175
+ if @id.nil?
176
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
177
+ end
178
+
179
+ if @inbox_id.nil?
180
+ invalid_properties.push('invalid value for "inbox_id", inbox_id cannot be nil.')
181
+ end
182
+
183
+ if @sent_at.nil?
184
+ invalid_properties.push('invalid value for "sent_at", sent_at cannot be nil.')
185
+ end
186
+
187
+ if @user_id.nil?
188
+ invalid_properties.push('invalid value for "user_id", user_id cannot be nil.')
189
+ end
190
+
191
+ invalid_properties
192
+ end
193
+
194
+ # Check to see if the all the properties in the model are valid
195
+ # @return true if the model is valid
196
+ def valid?
197
+ return false if @id.nil?
198
+ return false if @inbox_id.nil?
199
+ return false if @sent_at.nil?
200
+ return false if @user_id.nil?
201
+ true
202
+ end
203
+
204
+ # Checks equality by comparing each attribute.
205
+ # @param [Object] Object to be compared
206
+ def ==(o)
207
+ return true if self.equal?(o)
208
+ self.class == o.class &&
209
+ attachments == o.attachments &&
210
+ bcc == o.bcc &&
211
+ body == o.body &&
212
+ body_md5_hash == o.body_md5_hash &&
213
+ cc == o.cc &&
214
+ charset == o.charset &&
215
+ from == o.from &&
216
+ id == o.id &&
217
+ inbox_id == o.inbox_id &&
218
+ is_html == o.is_html &&
219
+ sent_at == o.sent_at &&
220
+ subject == o.subject &&
221
+ to == o.to &&
222
+ user_id == o.user_id
223
+ end
224
+
225
+ # @see the `==` method
226
+ # @param [Object] Object to be compared
227
+ def eql?(o)
228
+ self == o
229
+ end
230
+
231
+ # Calculates hash code according to all attributes.
232
+ # @return [Integer] Hash code
233
+ def hash
234
+ [attachments, bcc, body, body_md5_hash, cc, charset, from, id, inbox_id, is_html, sent_at, subject, to, user_id].hash
235
+ end
236
+
237
+ # Builds the object from hash
238
+ # @param [Hash] attributes Model attributes in the form of hash
239
+ # @return [Object] Returns the model itself
240
+ def self.build_from_hash(attributes)
241
+ new.build_from_hash(attributes)
242
+ end
243
+
244
+ # Builds the object from hash
245
+ # @param [Hash] attributes Model attributes in the form of hash
246
+ # @return [Object] Returns the model itself
247
+ def build_from_hash(attributes)
248
+ return nil unless attributes.is_a?(Hash)
249
+ self.class.openapi_types.each_pair do |key, type|
250
+ if type =~ /\AArray<(.*)>/i
251
+ # check to ensure the input is an array given that the attribute
252
+ # is documented as an array but the input is not
253
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
254
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
255
+ end
256
+ elsif !attributes[self.class.attribute_map[key]].nil?
257
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
258
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
259
+ end
260
+
261
+ self
262
+ end
263
+
264
+ # Deserializes the data based on type
265
+ # @param string type Data type
266
+ # @param string value Value to be deserialized
267
+ # @return [Object] Deserialized data
268
+ def _deserialize(type, value)
269
+ case type.to_sym
270
+ when :DateTime
271
+ DateTime.parse(value)
272
+ when :Date
273
+ Date.parse(value)
274
+ when :String
275
+ value.to_s
276
+ when :Integer
277
+ value.to_i
278
+ when :Float
279
+ value.to_f
280
+ when :Boolean
281
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
282
+ true
283
+ else
284
+ false
285
+ end
286
+ when :Object
287
+ # generic object (usually a Hash), return directly
288
+ value
289
+ when /\AArray<(?<inner_type>.+)>\z/
290
+ inner_type = Regexp.last_match[:inner_type]
291
+ value.map { |v| _deserialize(inner_type, v) }
292
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
293
+ k_type = Regexp.last_match[:k_type]
294
+ v_type = Regexp.last_match[:v_type]
295
+ {}.tap do |hash|
296
+ value.each do |k, v|
297
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
298
+ end
299
+ end
300
+ else # model
301
+ MailSlurpClient.const_get(type).build_from_hash(value)
302
+ end
303
+ end
304
+
305
+ # Returns the string representation of the object
306
+ # @return [String] String presentation of the object
307
+ def to_s
308
+ to_hash.to_s
309
+ end
310
+
311
+ # to_body is an alias to to_hash (backward compatibility)
312
+ # @return [Hash] Returns the object in the form of hash
313
+ def to_body
314
+ to_hash
315
+ end
316
+
317
+ # Returns the object in the form of hash
318
+ # @return [Hash] Returns the object in the form of hash
319
+ def to_hash
320
+ hash = {}
321
+ self.class.attribute_map.each_pair do |attr, param|
322
+ value = self.send(attr)
323
+ if value.nil?
324
+ is_nullable = self.class.openapi_nullable.include?(attr)
325
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
326
+ end
327
+
328
+ hash[param] = _to_hash(value)
329
+ end
330
+ hash
331
+ end
332
+
333
+ # Outputs non-array value in the form of hash
334
+ # For object, use to_hash. Otherwise, just return the value
335
+ # @param [Object] value Any valid value
336
+ # @return [Hash] Returns the value in the form of hash
337
+ def _to_hash(value)
338
+ if value.is_a?(Array)
339
+ value.compact.map { |v| _to_hash(v) }
340
+ elsif value.is_a?(Hash)
341
+ {}.tap do |hash|
342
+ value.each { |k, v| hash[k] = _to_hash(v) }
343
+ end
344
+ elsif value.respond_to? :to_hash
345
+ value.to_hash
346
+ else
347
+ value
348
+ end
349
+ end
350
+ end
351
+ end